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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM