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=0
4、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_IVR
5、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
7、获取OpenSIPS当前统计信息:如共享内存、私有内存、会话、注册信息等的统计情况
-
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

浙公网安备 33010602011771号