背景
上一章我们介绍了opensips
对接prometheus
的方法,这章作为对比,
我们介绍下kamailio
对接prometheus
的方法。
kamailio
的prometheus
监控使用的是xHTTP_PROM
模块, 依赖XHTTP
模块,
编译时要把这两个模块加上。
kamailio本次测试使用的版本是:
version: kamailio 5.8.5 (x86_64/linux)
kamailio 配置参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#!define WITH_JSONRPC
listen=udp:172.16.4.111:5060
listen=tcp:172.16.4.111:5461
loadmodule "dialog.so"
modparam("dialog", "enable_stats", 1)
loadmodule "xhttp_prom.so"
# 设置构建http Reponse 的缓冲区最大的大小,默认为0,自动设置成pkg mem的1/3
modparam("xhttp_prom", "xhttp_prom_buf_size", 1024)
# 设置metrics数据过期时间,如果数据未使用,会自动删除,默认是60 min,单位分钟。
modparam("xhttp_prom", "xhttp_prom_timeout", 600) #10 hours
# 设置metrics数据统计,默认是"",有:"all", "group_name", "statistic_name"
modparam("xhttp_prom", "xhttp_prom_stats", "all")
# 设置metrics数据前缀,默认"kamailio_"
#modparam("xhttp_prom", "xhttp_prom_beginning", "");
...
event_route[xhttp:request] {
if (prom_check_uri())
prom_dispatch();
else
xhttp_reply("200", "OK", "text/html",
"<html><body>Wrong URL $hu</body></html>");
}
|
需要注意的是: 这个模块会把metrics数据缓存在共享内存中,所以在数据量过大时,要适当增加pkg mem。
prometheus 收集数据
prometheus 配置
按照上一章的prometheus配置,修改prometheus.yaml文件为:
1
2
3
4
5
6
7
8
9
10
|
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
monitor: 'edc-lab-monitor'
scrape_configs:
- job_name: 'kamailio' # 修改名字
static_configs:
- targets: ['172.16.4.111:5461'] ##填写kamailio的ip和tcp端口
|
运行容器:
1
|
docker run -d -v ${PWD}/prometheus.yaml:/etc/prometheus/prometheus.yml --restart=always --net=host --name=prometheus prom/prometheus
|
prometheus 查看数据
通过访问:http://172.16.4.111:9090/
,查看到的metrics数据如下(如果不知道哪里看收集的数据,可以看上一章的截图):

有点奇怪的是,这些数据类型都是unknown
的, 本来以为这些是有问题的,但是在grafana
中可以正常显示,好像没什么影响。

grafana 展示数据
grafana docker 运行
docker 运行命令:
1
|
docker run -d -i -p 3000:3000 -e "GF_SERVER_ROOT_URL=http://grafana.server.name" -e "GF_SECURITY_ADMIN_PASSWORD=admin123" --restart=always --name=grafana grafana/grafana
|
grafana 添加数据源
通过访问:http://172.16.4.111:3000/
, 新建dashboard
, 添加metrics
,查看到的数据如下:

总结
opensips
和kamailio
监控数据都有注册数,通话数,内存,负载
等信息。
kamailio
功能较丰富一些,可以使用prom_counter,prom_gauge,prom_histogram
来自定义监控数据。