介绍 Kamailio 的 kamcmd
Kamailio 的 kamcmd 作用跟 FreeSWITCH 的 fs_cli 类似,
前者调用 kamailio 核心的 rpc 或者kamailio 模块的 rpc
后者调用 FS API
kamcmd 常用命令:
- core.ppdefines_full # 查所有宏定义
- core.ps # 查有哪些进程,值得注意的是, 从 v6.0 开始,还支持线程
- stats.fetch all # 查所有统计
- cfg.seti core debug 3 # 修改日志级别,但如果是生产系统,则需慎重
- ul.dump # usr location dump
- rtpengine.show all # 查 rtpengine 节点状态
其实还有很多命令,kamcmd help ,看下哪些对自己有用
kamcmd 要怎么配置?
首先得 loadmodule "ctl.so"
其次, ctl 可以这样配置:
modparam("ctl", "binrpc", "unix:/run/kamailio/kamailio_ctl") # default
modparam("ctl", "binrpc", "udp:localhost:2046")
modparam("ctl", "binrpc", "tcp:localhost:2046")
modparam("ctl", "binrpc", "unixd:/tmp/unix_dgram") # unix datagram
modparam("ctl", "binrpc", "unixs:/tmp/unix_stream") # unix stream
modparam("ctl", "binrpc", "unix:/tmp/unix_default") # unix stream
modparam("ctl", "binrpc", "tcp:3012") # tcp any , port 3012
modparam("ctl", "binrpc", "udp:*:3012") # udp any , port 3012
kamcmd 可以这样启动:
kamcmd ,或者 kamcmd -s unix:/run/kamailio/kamailio_ctl
kamcmd -s tcp:localhost:3012
kamcmd -s udp:localhost:3012
curl 跟 kamcmd
kamailio.cfg 可以增加 xhttp.so 以及 xhttp 路由的路由处理
如此一来,就可以用 curl 命令
下面就是一个例子:
curl -X POST -H 'Content-Type: application/json' -d '{"jsonrpc": "2.0", "method": "stats.fetch", "params": ["all"], "id": 1}' http://127.0.0.1:5060
是不是非常方便!
rpc 协议有哪些细节呢?
有几个资料可以参考:
https://github.com/kamailio/kamailio/blob/master/doc/tutorials/rpc/kamailio_rpc.txt
https://github.com/florentchauveau/go-kamailio-binrpc
最后建议你勤动手,就知道我讲了什么