OpenSIPS常用运维MI命令(opensipsctl fifo lb_list)
今天我们来梳理一下常用的OpenSIPS MI命令。
1、查看OpenSIPS当前支持哪些MI命令 /usr/local/opensips/sbin/opensipsctl fifo which 该方法输出的结果跟opensips.cfg脚步中加载的模块有关(结果样例见下文‘附录-1’) 如果opensips.cfg中没有加载load_balancer.so, 那么就不会有lb_reload、lb_list相关的MI命令 2、查看OpenSIPS 版本 /usr/local/opensips/sbin/opensips -V /usr/local/opensips/sbin/opensipsctl fifo version 3、load_balancer 负载均衡模块相关命令- lb_reload : 根据load_balance表和当前dialog信息,重新加载负载均衡的配置(节点是否可用,当前处理的并发量等)
- lb_list :获取当前负载均衡列表状态信息
- lb_status :设置负载均衡节点的状态, 调用方式: lb_status ${load_balance_id} ${status}
- load_balance_id : 节点在数据库load_balancer表中的ID值,如上面的 id=17
- status :{ 0 : 禁用, 1 : 启用 }
- lb_resize :重置负载均衡节点各中资源支持的并发上限值,调用方式:lb_resize ${load_balance_id} ${resource_type} ${max}
- load_balance_id : 同上
- resource_type : 资源类型,如下面lb_list样例中的 pstn
- max : 并发上限
lb_list样例:lb_list Destination:: sip:10.2.38.203:5060 id=17 group=50 enabled=yes auto-reenable=on Resources:: Resource:: pstn max=1000 load=10 lb_status样例:lb_status 17 0 (将id=17的节点,拉出集群, 执行结果如下) Destination:: sip:10.2.110.102:5060 id=12 group=10 enabled=no auto-reenable=off Resources:: Resource:: pstn max=1000 load=0 lb_status样例:lb_status 17 pstn 100 (将id=17的节点 pstn 的并发上限改成 100,原来是1000) Destination:: sip:10.2.110.102:5060 id=12 group=10 enabled=no auto-reenable=off Resources:: Resource:: pstn max=100 load=04、dialplan 拨号方案模块相关命令
- dp_reload : 重新加载数据库dialplan表中的拨号方案到内存
- dp_translate : 拨号方案解析,校验文本否匹配某拨号方案,调用方式:dp_translate ${dpid} ${text}
- 如果不匹配:可能返回 404 No translation、 或者 404 No information available for dpid
- 如果匹配:则会返回匹配处理后的结果和拨号方案的属性内容
+----+------+----+------------+---------------+--------------+----------------+----------+---------+----------+-------------+ | id | dpid | pr | match_op | match_exp | match_flags | subst_exp | repl_exp | timerec | disabled | attrs | +----+------+----+------------+---------------+--------------+----------------+----------+---------+----------+-------------+ | 17 | 0 | 30 | 1 | ^210001 | 0 | ^(210001)(.+) | \2 | NULL | 0 | 30:PRE_IVR | 按照上面dialplan表中拨号方案配置,执行 dp_translate 0 21000113801234567 后,得到的结果是: Output:: 13801234567 【注意:这里将210001去掉了,因为repl_exp的值表示只取第二个匹配部分】 ATTRIBUTES:: 30:PRE_IVR5、dialog 会话模块相关命令
- dlg_list : 获取会话列表,调用方式: dlg_list [${callid}] [${from_tag}] 或者 dlg_list [${index}] [${counter}] 所有参数都是可选值
- callid : dialog的callid
- from_tag : dialog的from tag
- index : 偏移量,从第几个开始获取dialog列表
- counter : 需要获取多少个dialog
- dlg_end_dlg : 终止会话,会挂断电话【慎用】,调用方式: dlg_end_dlg ${dialog_uid} [${extra_hdrs}]
- dialog_uid : 能唯一标识出dialog的值,比如 ID、callid 等
- extra_hdrs : (可选) 需要加到BYE消息中的额外消息头信息
- dlg_db_sync : 将DB中的Dialog内容恢复至内存【OpenSIPS主备方式时,很有用,当发生主备切换,新机器将从DB中恢复Dialog】
- dlg_cluster_sync : 如果dialog开启了dialog_replication_cluster, 则可以从其他集群节点同步会话信息过来
- dlg_restore_db : 将内存中的Dialog数据写入DB,底层是先删除dialog表中所有内容,再将内存中的数据写入DB 【使用场景:OpenSIPS与DB发生异常断连,等DB连接恢复后,执行该命令,已处理掉DB中的脏数据】
获取会话列表: dlg_list opensipsctl fifo dlg_list abcdrssfrs122444@192.168.1.1 AAdfeEFF33 opensipsctl fifo dlg_list 40 10 【可以得到当前会话总数和会话列表明细】 会话信息: dialog:: ID=6133613994830 state:: 4 user_flags:: 0 timestart:: 1596542689 datestart:: 2020-08-04 20:04:49 timeout:: 1596553488 dateout:: 2020-08-04 23:04:48 callid:: 88b5dd7b-50ed-1239-7f93-fa163ef93518 from_uri:: sip:9003@10.2.32.116 to_uri:: sip:9004@10.2.32.112:5060 caller_tag:: N3t06BZKX7UDD caller_contact:: sip:mod_sofia@10.2.32.116:5080 callee_cseq:: 0 caller_route_set:: caller_bind_addr:: udp:10.2.32.112:5060 caller_sdp:: CALLEES:: callee:: callee_tag:: 7502e542 callee_contact:: sip:9004@10.32.26.19:62349 caller_cseq:: 23717551 callee_route_set:: callee_bind_addr:: udp:10.2.32.112:5060 callee_sdp::6、address 地址模块相关命令
- address_reload : 重载permission模块的address表到内存
- address_dump
- get_statistics ${filter_1} ${filter_2} ${filter_N} : filter 过滤条件的取值如下,可以有多个过滤条件
- all : 获取所有统计信息
- shmem: : 获取共享内存使用情况
-
- pkmem: : 获取私有内存使用情况
- dialog: : 获取会话统计信息
- usrloc: : 获取SIP UA分机注册统计信息
opensips 配置: children=1 启动脚步:sudo /usr/local/opensips/sbin/opensips -P /var/run/opensips.pid -m 4096 -M 384 -u root -g root -f /usr/local/opensips242/etc/opensips/opensips.cfg 查看共享内存和私有内存情况: sudo /usr/local/opensips/sbin/opensipsctl fifo get_statistics usrloc: dialog: shmem: pkmem: 输出的结果如下: usrloc:registered_users:: 39980 【共注册39980个终端】 usrloc:location-users:: 39980 usrloc:location-contacts:: 39980 usrloc:location-expires:: 29995 dialog:active_dialogs:: 867 【当前有867个会话】 dialog:early_dialogs:: 5 dialog:processed_dialogs:: 484243 dialog:expired_dialogs:: 0 dialog:failed_dialogs:: 7637 dialog:create_sent:: 0 dialog:update_sent:: 0 dialog:delete_sent:: 0 dialog:create_recv:: 0 dialog:update_recv:: 0 dialog:delete_recv:: 0 shmem:total_size:: 4294967296 【共享内存配置:4096M】 shmem:used_size:: 7906624 shmem:real_used_size:: 9535880 shmem:max_used_size:: 9600968 shmem:free_size:: 4285431416 shmem:fragments:: 66443 pkmem:0-total_size:: 402653184 【私有内存配置:384M】 pkmem:0-used_size:: 93416 pkmem:0-real_used_size:: 144072 pkmem:0-max_used_size:: 144216 pkmem:0-free_size:: 402509112 pkmem:0-fragments:: 698 后面省略 pkmem:1 至 pkmem:14的内容8、运维场景: 如果我们的OpenSIPS是主备模式,在发生主备切换时,我们可能需要执行下面命令,将数据进行同步 /usr/local/opensips/sbin/opensipsctl fifo dp_reload /usr/local/opensips/sbin/opensipsctl fifo address_reload /usr/local/opensips/sbin/opensipsctl fifo lb_reload /usr/local/opensips/sbin/opensipsctl fifo dlg_db_sync /usr/local/opensips/sbin/opensipsctl fifo ul_sync location
附录1:/usr/local/opensips/sbin/opensipsctl fifo which 的输出样例:
get_statistics list_statistics reset_statistics uptime version pwd arg 【查看OpenSIPS的启动参数】 which ps 【查看OpenSIPS的进程信息】 kill log_level cache_store 【将数据存入本地NoSQL缓存中】,调用方式 cache_store local ${key} ${value} cache_fetch 【获取本地NoSQL缓存中的信息】,调用方式 cache_fetch local ${key} cache_remove event_subscribe events_list subscribers_list list_tcp_conns help list_blacklists t_uac_dlg t_uac_cancel t_hash t_reply ul_rm ul_rm_contact ul_dump ul_flush ul_add ul_show_contact ul_sync ul_cluster_sync rand_set_prob rand_reset_prob rand_get_prob get_config_hash check_config_hash shv_get shv_set dlg_list dlg_list_ctx dlg_end_dlg dlg_db_sync dlg_restore_db dlg_cluster_sync profile_get_size profile_list_dlgs profile_get_values list_all_profiles profile_end_dlgs dlg_set_sharing_tag_active dlg_list_sharing_tags domain_reload domain_dump lb_reload lb_resize lb_list lb_status dp_reload dp_translate dp_show_partition address_reload address_dump subnet_dump allow_uri sip_trace cache_remove_chunk