Featured image of post Homer10初体验

Homer10初体验

背景

homer是一个开源的SIP分析工具, 它可以帮助我们分析SIP协议的数据包,从而了解SIP协议的工作原理。 其官方代码地址为: homer, 目前最新版本为homer10

安装

官方安装文档为: homer10安装文档, 安装命令如下:

1
2
3
git clone https://github.com/sipcapture/homer-docker.git
cd all-in-one
docker-compose up -d

查看docker-compose.yaml,可以看到需要的组件有:

组件名称 组件介绍 必要性
alertmanager 告警组件 非必要
clickhouse 面向列的数据库组件 必要
grafana web管理页面 必要
docker-hepgen hep数据生成组件 非必要
heplify-server hep数据收集组件 必要
mailhog 邮件组件 非必要
node-exporter 节点监控组件 必要
qryn qryn组件 必要
vector 数据采集组件 必要

这些镜像直接从dockerhub拉取,然后运行docker-compose up -d 即可。

关于grafana组件, 我做了两点修改:

  1. 避免容器内下载qxip-flow-pannel插件,提前本地下载。
 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
27
services:
  grafana:
     build:
       context: ./grafana
       dockerfile: Dockerfile
     container_name: grafana
     volumes:
       - grafana_data:/var/lib/grafana
       - ./grafana/provisioning/:/etc/grafana/provisioning/
       - ./grafana/plugins/k8spacket-nodegraphplugin-datasource:/var/lib/grafana/plugins/k8spacket-nodegraphplugin-datasource
     environment:
       - GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}
       - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
       - GF_USERS_ALLOW_SIGN_UP=false
       - GF_USERS_DEFAULT_THEME=light
       - GF_EXPLORE_ENABLED=true
       - GF_ALERTING_ENABLED=false
       - GF_UNIFIED_ALERTING_ENABLED=true
       - GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS=qxip-flow-panel
     restart: unless-stopped
     ports:
       - 3000:3000
     depends_on:
       - clickhouse-server
     logging:
       options:
         max-size: "10m"

grafana文件夹下的文件:

1
2
ls
defaults.ini  Dockerfile  plugins  provisioning  qxip-flow-panel-10.2.0.zip

qxip-flow-panel的下载地址: qxip-flow-pannel-10.2.0

Dockerfile内容为:

1
2
3
4
5
6
7
8
FROM grafana/grafana-oss:10.4.3

# 将提前下载好的插件 zip 包拷贝进镜像并解压
COPY qxip-flow-panel-10.2.0.zip /tmp/qxip-flow-panel.zip
COPY defaults.ini /usr/share/grafana/conf/ 

RUN mkdir -p /var/lib/grafana/plugins \
    && unzip /tmp/qxip-flow-panel.zip -d /var/lib/grafana/plugins/ 
  1. 因为grafana10+版本不再支持Angular, 为避免web页面出现this panel requires Angular (deprecated), 添加default.ini配置.
1
2
[feature_toggles]
autoMigrateOldPanels = true

default.ini文件的位置在grafana容器内/usr/share/grafana/conf/defaults.ini, 可以从容器内copy出来该文件,修改之后, 在Dockerfile里COPY defaults.ini /usr/share/grafana/conf/

之后, docker-compose build grafana重新编译grafana镜像包, docker-compose up -d grafana

服务正常的状态: docker-compose

可以看到hepgen-badhepgen两个容器会多次重启,这个是正常的, 不断重启生成hep数据。

体验

打开http://localhost:3000, 登录账号admin, 密码admin, 即可打开grafana管理页面。 可以看到的dashboard页面如下: dashboard

选择callflow查看调用流程: callflow

选择hep flow中的一个sip信令, 即可查看该信令的详细信息: message

在查看SIP Calls & Registersdashboard页面, 可以看到调用流程: calls

实战

因为默认的docker-compose.yaml中使用hepgenhepgen-bad不断生成hep数据, 不想随机生成sip, 停下这两个服务,然后使用opensips 3.5.5对接heplify-server

停止hepgenhepgen-bad服务

1
docker-compose down hepgen hepgen-bad

opensips 对接 heplify-server

可以参考opensips trace 模块文档, 配置opensipstrace模块, 将trace数据发送到heplify-server

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
socket=hep_udp:172.16.4.111:6000
...
loadmodule "dialog.so"
loadmodule "tracer.so"
loadmodule "proto_hep.so"
modparam("proto_hep", "hep_id","[hid] 172.16.4.111:9060;transport=udp;version=3")
modparam("tracer", "trace_id","[tid]uri=hep:hid")

route {
  ...
  if (is_method("REGISTER")) {
    trace("tid", "t","sip");
  }
  if (is_method("INVITE") && !has_totag()) {
    trace("tid", "d", "sip");
  }
}

使用软电话注册到opensips上,然后拨打电话,查看Call Flow: call

call

这些信息正是opensips产生的数据。

本博客已稳定运行
发表了57篇文章 · 总计94.35k字
本站总访问量 次 · 您是本站第 位访问者
粤ICP备2025368587号-1| 使用 Hugo 构建
主题 StackJimmy 设计