您的位置:首页 > 运维架构

OpenSIPS常用运维MI命令(opensipsctl fifo lb_list)

2020-08-12 21:06 2011 查看

今天我们来梳理一下常用的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:     : 获取共享内存使用情况
    • [li] pkmem:     : 获取私有内存使用情况
    • dialog:       : 获取会话统计信息
    • usrloc:       : 获取SIP UA分机注册统计信息
    [/li]
    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

     

  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: