From openSIPS

Documentation: Core MI Functions - 3.4

Documentation -> Manuals -> Manual devel -> Core MI Functions

Pages for other versions: devel 3.3 3.2 3.1 Older versions: 3.0 2.4 2.3 2.2 2.1 1.11 1.10 1.9 1.8 1.7 1.6 1.5 1.4


Core MI Functions v3.4
PrevNext

Table of Content (hide)

  1. 1. arg
  2. 2. kill
  3. 3. list_blacklists
  4. 4. list_tcp_conns
  5. 5. log_level [level] [pid]
  6. 6. ps
  7. 7. pwd
  8. 8. reload_routes
  9. 9. sr_get_status
  10. 10. sr_list_status
  11. 11. sr_list_reports
  12. 12. sr_list_identifiers
  13. 13. uptime
  14. 14. version
  15. 15. which
  16. 16. get_statistics
  17. 17. list_statistics
  18. 18. reset_statistics
  19. 19. cache_store
  20. 20. cache_fetch
  21. 21. cache_remove
  22. 22. event_subscribe
  23. 23. events_list
  24. 24. raise_event
  25. 25. subscribers_list
  26. 26. mem_pkg_dump
  27. 27. mem_shm_dump
  28. 28. shm_check
  29. 29. xlog_level [level]

MI (management interface) functions which are exported by OpenSIPS core.

1. arg 🔗

Returns the full list of arguments used when OpenSIPS was started. As in UNIX, the first argument is the name of executable binary.
Arguments: none
Output: an array with multiple strings representing the arguments.

Example of usage:

    # opensips-cli -x mi arg
    [
        "./opensips",
        "-f",
        "/etc/openser/test.cfg"
    ]

2. kill 🔗

The command will terminate OpenSIPS (and internal shutdown).
Arguments: none
Output: none

Examples of usage:

    # opensips-cli -x mi kill

3. list_blacklists 🔗

The command lists all the defined (static or learned) blacklists from OpenSIPS.
Arguments: none
Output: an array with each object describing the list (name, owner, flags); the "Rules" item is an array with each object member describing the rules (blacklists) for each list (IP/mask, protocol, port, matching regexp, flags).

Examples of usage:

    # opensips-cli -x mi list_blacklists

4. list_tcp_conns 🔗

The command lists all ongoing TCP/TLS connection from OpenSIPS.
Arguments: none
Output: an array with one object per connection with the following attributes : ID, type, state, source, destination, lifetime, alias port.

Examples of usage:

    # opensips-cli -x mi list_tcp_conns

5. log_level 🔗 [level] [pid]

Get or set the logging level of one or all OpenSIPS processes. If no argument is passed to the log_level command, it will print a table with the current logging levels of all processes. If a logging level is given, it will be set for each process. If pid is also given, the logging level will change only for that process.
Arguments:

Examples of usage:

    # opensips-cli -x mi log_level
    {
        "Processes": [
            {
                "PID": 10670,
                "Log level": 2,
                "Type": "attendant"
            },
            {
                "PID": 10672,
                "Log level": 3,
                "Type": "MI FIFO"
            },
            {
                "PID": 10673,
                "Log level": 1,
                "Type": "SIP receiver udp:193.468.3.433:5060"
            },
        ]
    }
    # opensipsctl fifo log_level 1
    {
        "New global log level": 1
    }
    # opensipsctl fifo log_level 4 10670
    {
        "Log level": 1
    }

6. ps 🔗

The command will list all all OpenSIPS processes, along with type and description.
Arguments: none
Output: multiple objects, each one containing a process ID (internal), PID (OS) and Type.

Examples of usage:

    # opensips-cli -x mi ps
{
    "Processes": [
        {
            "ID": 0,
            "PID": 27271,
            "Type": "attendant"
        },
        {
            "ID": 1,
            "PID": 27272,
            "Type": "MI FIFO"
        },
        {
            "ID": 2,
            "PID": 27273,
            "Type": "time_keeper"
        },
        {
            "ID": 3,
            "PID": 27274,
            "Type": "timer"
        },
        {
            "ID": 4,
            "PID": 27275,
            "Type": "SIP receiver udp:127.0.0.1:5060"
        },
        {
            "ID": 5,
            "PID": 27276,
            "Type": "Timer handler"
        }
    ]
}

7. pwd 🔗

Prints the working directory of OpenSIPS instance.
Arguments: none
Output: a single item containing the working directory full path.

Examples of usage:

    # opensips-cli -x mi pwd
    {
        "WD": "/"
    }

8. reload_routes 🔗

Triggers the reload of the routing block (the routes) from the script during the runtime. Arguments: none
Output: none

Please note that there are some limitations of when a reload is possible or not. Depending on the initial configuration of your modules, the reload may be rejected as the usage of the functions in the new script is not compatible with the original module setting and initialization.
If the reload fails, take a look at the logs to understand why - it may have been a syntax error or maybe a module related constraint. Anyhow, if the reload fails, there is no impact on your running OpenSIPS.

9. sr_get_status 🔗

The MI equivalent of the sr_check_status() script function - to get the status of an 'status/report' identifier/group.

Arguments: a mandatory group and optional identifier, see the parameters of the sr_check_status() script function. Output: the readiness, the status and details of the identifier/group (see the aggregation note for the return code of the sr_check_status() script function

Examples of usage:

# opensips-cli -x mi sr_get_status core
{
    "Readiness": true,
    "Status": 1,
    "Details": "running"
}


# opensips-cli -x mi sr_get_status drouting all
{
    "Readiness": true,
    "Status": 1,
    "Details": "aggregated"
}

10. sr_list_status 🔗

Command to list the status of the identifiers within one or all 'status/report' groups.

Arguments: an optional 'status/report' group, see the sr_check_status() script function for more details. Output: the readiness, the status and details for all the identifiers within the requested group, or within all defined/registered groups.

Examples of usage:

#opensips-cli -x mi sr_list_status 
[
    {
        "Name": "drouting",
        "Identifiers": [
            {
                "Name": "Default",
                "Readiness": true,
                "Status": 1,
                "Details": "data available"
            }
        ]
    },
    {
        "Name": "test",
        "Identifiers": [
            {
                "Name": "main",
                "Readiness": true,
                "Status": 1
            }
        ]
    },
    {
        "Name": "core",
        "Identifiers": [
            {
                "Name": "main",
                "Readiness": true,
                "Status": 1,
                "Details": "running"
            }
        ]
    }
]

11. sr_list_reports 🔗

Command to list the full set of reports (logs) collected by 'status/report' identifiers.

Arguments:

Output: the reports/logs for the requested identifiers, or for all identifiers within the groups.

Examples of usage:

#bin/opensips-cli -x mi sr_list_reports 
[
    {
        "Name": "drouting",
        "Identifiers": [
            {
                "Name": "Default",
                "Reports": [
                    {
                        "Timestamp": 1644396830,
                        "Date": "Wed Feb  9 10:53:50 2022",
                        "Log": "starting DB data loading"
                    },
                    {
                        "Timestamp": 1644396830,
                        "Date": "Wed Feb  9 10:53:50 2022",
                        "Log": "DB data loading successfully completed"
                    },
                    {
                        "Timestamp": 1644396830,
                        "Date": "Wed Feb  9 10:53:50 2022",
                        "Log": "2 gateways loaded (0 discarded), 2 carriers loaded (0 discarded), 1 rules loaded (0 discarded)"
                    }
                ]
            }
        ]
    },
    {
        "Name": "test",
        "Identifiers": [
            {
                "Name": "main",
                "Reports": []
            }
        ]
    },
    {
        "Name": "core",
        "Identifiers": [
            {
                "Name": "main",
                "Reports": [
                    {
                        "Timestamp": 1644396830,
                        "Date": "Wed Feb  9 10:53:50 2022",
                        "Log": "initializing"
                    },
                    {
                        "Timestamp": 1644396830,
                        "Date": "Wed Feb  9 10:53:50 2022",
                        "Log": "initialization completed, ready now"
                    }
                ]
            }
        ]
    }
]

12. sr_list_identifiers 🔗

Command to list all the existing identifiers in OpenSIPS or only from a certain group.

Arguments:

Output: an array of groups, each group being an array of identifiers .

Examples of usage:

#opensips-cli -x mi sr_list_identifiers
[
    {
        "Group": "clusterer",
        "Identifiers": [
            "sharing_tags"
        ]
    },
    {
        "Group": "dispatcher",
        "Identifiers": [
            "default;events",
            "default"
        ]
    },
    {
        "Group": "drouting",
        "Identifiers": [
            "Default;events",
            "Default"
        ]
    },
    {
        "Group": "dialplan",
        "Identifiers": [
            "default"
        ]
    },
    {
        "Group": "core",
        "Identifiers": [
            "main"
        ]
    }
]
#opensips-cli -x mi sr_list_identifiers drouting
{
    "Group": "drouting",
    "Identifiers": [
        "Default;events",
        "Default"
    ]
}

13. uptime 🔗

Prints various time information about OpenSIPS - when it started to run, for how long it runs.
Arguments: none
Output: three items: "Now" - current time; "Up since" - start time ; "Up time" - number of seconds since started.

Examples of usage:

    # opensips-cli -x mi uptime
{
    "Now": "Mon Jul 21 17:41:03 2008",
    "Up since": "Mon Jul 21 17:36:33 2008",
    "Up time": "270 [sec]"
}

14. version 🔗

Prints the version string of a runningOpenSIPS.
Arguments: none
Output: one item (named "Server") containing the version string.

Examples of usage:

    # opensips-cli -x mi version
{
    "Server": "OpenSIPS (3.4.0-dev (x86_64/linux))"
}

15. which 🔗

Prints all available MI commands from the queried OpenSIPSinstance.
Arguments: none
Output: an array of the names of available MI commands. NOTE that the list of available MI commands may differ depending of what modules your OpenSIPS is using.

Examples of usage:

    # opensips-cli -x mi which
[
    "get_statistics",
    "list_statistics",
    "reset_statistics",
    "uptime",
    "version",
    "pwd",
    "arg",
    "which",
    "ps",
    "kill",
    "log_level",
    "xlog_level",
    "shm_check",
    "cache_store",
    "cache_fetch",
    "cache_remove",
    "event_subscribe",
    "events_list",
...

16. get_statistics 🔗

Prints the statistics (all, group or one) realtime values.
Arguments:

Output: an object containing the names and values of statistic variables.

Examples of usage:

    # opensips-cli -x mi get_statistics rcv_requests
   {
       "core:rcv_requests": 35243
   }
    # opensipsc-cli -x mi get_statistics shmem:      
    {
        "shmem:total_size": 1073741824,
        "shmem:max_used_size": 3389232,
        "shmem:free_size": 1070352592,
        "shmem:used_size": 2808952,
        "shmem:real_used_size": 3389232,
        "shmem:fragments": 3769
    }
    # opensips-cli -x mi get_statistics shmem: core:
    ....

17. list_statistics 🔗

Prints a list of available statistics in the current configuration of OpenSIPS. Arguments:

Examples of usage:

    # opensips-cli -x mi list_statistics
{
    "shmem:total_size": "non-incremental",
    "shmem:max_used_size": "non-incremental",
    "shmem:free_size": "non-incremental",
    "shmem:used_size": "non-incremental",
    "shmem:real_used_size": "non-incremental",
    "shmem:fragments": "non-incremental",
    "rpmem:rpm_total_size": "non-incremental",
    "rpmem:rpm_used_size": "non-incremental",
...

18. reset_statistics 🔗

Reset (to zero) the value of a statistic variable. Note that not all variables allow reset (depending of the nature of the information they carry - example "shmem:used_size").
Arguments:

Output: none.

Examples of usage:

    # opensips-cli -x mi get_statistics received_replies
   {
       "tm:received_replies": 14543
   }
    # opensips-cli -x mi reset_statistics received_replies
    # opensips-cli -x mi get_statistics received_replies
   {
       "tm:received_replies": 0
   }

19. cache_store 🔗

This command stores in a cache system a string value.
Arguments:

Output: none.
Examples of usage:

    # opensips-cli -x mi cache_store local password_user1 password

20. cache_fetch 🔗

This command queries for a stored value.
Arguments:

Output: object containing the value if a record is found or 'Value not found' string otherwise.
Examples of usage:

    # opensips-cli -x mi cache_fetch local password_user1

21. cache_remove 🔗

This command removes a record from the cache system.
Arguments:

Output: None.
Examples of usage:

    # opensips-cli -x mi cache_remove local password_user1

22. event_subscribe 🔗

Subscribes an external application to a certain event.
Arguments:

Output: None.
Examples of usage:

    # opensips-cli -x mi event_subscribe E_PIKE_BLOCKED udp:127.0.0.1:8888 1200

23. events_list 🔗

Lists all the events published through the Event Interface.
Arguments: None.
Output: None.
Examples of usage:

    # opensips-cli -x mi events_list
{
    "Events": [
        {
            "name": "E_CORE_THRESHOLD",
            "id": 0
        },
        {
            "name": "E_CORE_SHM_THRESHOLD",
            "id": 1
        },
        {
            "name": "E_CORE_PKG_THRESHOLD",
            "id": 2
        },
...

24. raise_event 🔗

Raises an event through the Event Interface using an MI command.
Arguments:

Output: None.
Examples of usage:

    # opensips-cli -x mi raise_event E_PIKE_BLOCKED 127.0.0.1

25. subscribers_list 🔗

Lists information about the subscribers
Arguments:

Output: If no parameter is specified, then the command returns information about all events and their subscribers. If the event is specified, only the external applications subscribed for that event are returned. If the socket is also specified, only one subscriber information is returned.
Examples of usage:

    # opensips-cli -x mi subscribers_list
{
  "Events": [{
	  "name": "E_RTPPROXY_STATUS",
	  "id": 1,
	  "subscribers": [
		...
	  ]
	},
	{
	  "name": "E_PIKE_BLOCKED",
	  "id": 2,
	  "subscribers": [
		...
	  ]
	}
  ]
}

    # opensips-cli -x mi subscribers_list E_RTPPROXY_STATUS
{
  "Event": {
	"name": "E_RTPPROXY_STATUS",
	"id": 1,
	"subscribers": [{
		  "socket": "unix:/tmp/event.sock",
		  "expire": "never",
		},
		{
		  "socket": "udp:127.0.0.1:8888",
		  "expire": 1100
		}
	]
  } 
}

    # opensips-cli -x mi subscribers_list E_RTPPROXY_STATUS unix:/tmp/event.sock
{
  "Event": {
	"name": "E_RTPPROXY_STATUS",
	"id": 1,
	"Subscriber": {
	  "socket": "unix:/tmp/event.sock",
	  "expire": "never"
	}
  } 
}

26. mem_pkg_dump 🔗

Triggers a pkg memory dump for a given process. The memory dump will written to OpenSIPS's log (syslog or stderr) using the 'memdump' logging level. The global 'memdump' log level may be overwritten by a custom value provided as argument to this command.
Arguments:

Output: None.
Examples of usage:

    # opensips-cli -x mi mem_pkg_dump 11854 -1

The processes without IPC support (like timer and per-module processes) will not be able to generate a memory dump.

27. mem_shm_dump 🔗

Triggers a shm memory dump. The memory dump will written to OpenSIPS's log (syslog or stderr) using the 'memdump' logging level. The global 'memdump' log level may be overwritten by a custom value provided as argument to this command.
Arguments:

Output: None.
Examples of usage:

    # opensips-cli -x mi mem_shm_dump -1

28. shm_check 🔗

Only available with QM_MALLOC + DBG_MALLOC. Fully scans the shared memory pool in order to locate any inconsistencies. If any sign of memory corruption is detected, OpenSIPS will immediately abort.
Arguments: None
Output: current number of fragments.
Example of usage:

    # opensips-cli -x mi shm_check

29. xlog_level [level] 🔗

Get or set the global xlogging level in OpenSIPS processes. If no argument is passed to the xlog_level command, it will print the current xlog_level. If a logging level is given, it will be globally set for all OpenSIPS processes.
Arguments:

Example of usage:

    # opensips-cli -x mi xlog_level -2

Retrieved from https://www.opensips.org/Documentation/Interface-CoreMI-3-4
Page last modified on July 14, 2022, at 12:57 PM