Linux 自定义UDP协议检查的监视器

Linux 自定义UDP协议检查的监视器,linux,monitoring,monit,Linux,Monitoring,Monit,好的,我对Linux和Monit都是新手,所以请耐心听我说 我已配置自定义协议检查以监视远程设备上的端口。远程装置是基于TIA 102.巴哈标准构建的DFSI设备,该标准利用UDP进行通信 在我的monitrc conf文件中,我添加了这个条目 check HOST DLC-PORT ADDRESS 192.168.100.85 if failed port 50050 type udp SEND "\0x00\0x01\0x00\0xED\0xB6\0x

好的,我对Linux和Monit都是新手,所以请耐心听我说

我已配置自定义协议检查以监视远程设备上的端口。远程装置是基于TIA 102.巴哈标准构建的DFSI设备,该标准利用UDP进行通信

在我的monitrc conf文件中,我添加了这个条目

check HOST DLC-PORT ADDRESS 192.168.100.85
    if failed
        port 50050 type udp
        SEND "\0x00\0x01\0x00\0xED\0xB6\0x73\0xF5\0x3D\0xD7\0x05\0x05"
        EXPECT "\0x02\0x01\0x00\0x01\0x00\0x00\0x03\0x01\0xC3\0x64"
    then alert
/var/log/monit.log报告此消息

[PST Jan 5 12:13:41]错误:“DLC-PORT”在中的协议测试[generic]失败 通过UDP的ET[192.168.100.85:50050]通用:接收意外数据[\0\0\0] --没有对手

我已经运行了Wireshark跟踪,send命令似乎正在发送数据包中正确的负载,来自我设备的响应负载也与预期的字符串匹配

日志文件响应消息数据“\0\0\0”不是响应数据包的有效负载

我似乎无法理解Monit认为正在接收的响应消息,或者无法正确格式化我的预期字符串。我已尝试添加字符串“\0\0\0”,并将该字符串添加到预期的结尾,同时添加所有UDP填充位。不走运。有什么想法吗

这是Wireshark的导出,很抱歉,它在这个论坛上看起来很混乱。第一帧(40)是发送,您可以看到我的发送字符串插入到消息中。第二帧(41)是响应,您可以看到我期望的字符串也嵌入其中

谢谢 否。时间源目标协议长度信息 40 3.780573 192.168.100.11 192.168.100.85 DFSIControl 60 FSC Connect-45460→ 50050透镜=11

第40帧:线路上60字节(480位),接口0上捕获60字节(480位)

以太网II,Src:HewlettP_3a:de:f0(d0:bf:9c:3a:de:f0),Dst:InsideTe_26:db:a5(00:e0:f4:26:db:a5)

互联网协议版本4,Src:192.168.100.11,Dst:192.168.100.85

用户数据报协议,Src端口:45460(45460),Dst端口:50050(50050)

P25控制传输的DFSI协议 消息ID:0x00 FSC Connect 消息版本:0x01 消息相关标记:0x00 语音传输基本端口(RTP必须为偶数):60854 语音传输SSRC标识符:0x73f53dd7 固定站心跳周期(秒5-255):5 主机心跳周期(秒5-255):5

0000 00 e0 f4 26 db a5 d0 bf 9c 3a de f0 08 00 45 00
0010 00 27 4b 7f 40 00 40 11 a5 95 c0 a8 64 0b c0 a8
0020645b194c3820013b85900100edb673
0030f5 3d d7 0500


否。时间源目标协议长度信息 41 3.791312 192.168.100.85 192.168.100.11 DFSIControl 60 FSC确认-50050→ 45460透镜=10

第41帧:线路上60字节(480位),接口0上捕获60字节(480位) 以太网II,Src:Insideete_26:db:a5(00:e0:f4:26:db:a5),Dst:Hewlett_3a:de:f0(d0:bf:9c:3a:de:f0)

互联网协议版本4,Src:192.168.100.85,Dst:192.168.100.11

用户数据报协议,Src端口:50050(50050),Dst端口:45460(45460)

P25控制传输的DFSI协议 消息ID:0x02 FSC确认 消息版本:0x01 已确认消息ID:0x00(FSC连接确认/NAC) 已确认的消息版本:0x01 已确认的消息关联标记:0x00 响应代码:0x00(一般确认) 响应数据长度:0x03 回应版本:1 语音传输基本端口(RTP必须为偶数):50020

0000 d0 bf 9c 3a de f0 00 e0 f4 26分贝a5 08 00 45 88
0010 00 26 c8 75 40 00 40 11 28 18 c0 a8 64 55 c0 a8
0020640B c3 82 b1 94 00 12 78 9902 01 00 00
003003 01 c3 6400

更新:我找到了如何启用非常详细的日志记录,并从日志文件中的检查中捕获了这些信息。

PST Jan 5 15:20:27]调试:“DLC-PORT”通过UDP成功连接到INET[192.168.100.85:50050]

PST Jan 5 15:20:27]调试:通用:已成功发送:'\0x00\0x00▒s▒=▒'

PST Jan 5 15:20:27]错误:“DLC-PORT”通过UDP在INET[192.168.100.85:50050]上的协议测试[generic]失败--generic:接收意外数据[\0\0]--不匹配

太平洋标准时间1月5日15:20:27]调试:-----------------------------------------------

PST Jan 5 15:20:27]调试:monit()[0x41b83b]

PST Jan 5 15:20:27]调试:monit(LogError+0xb6)[0x41c1c6]

PST Jan 5 15:20:27]调试:监控(事件发布+0x214)[0x418284]

PST Jan 5 15:20:27]调试:monit()[0x42a805]

PST Jan 5 15:20:27]调试:monit(检查远程主机+0x12b)[0x42cacb]

PST Jan 5 15:20:27]调试:监控(验证+0x2b6)[0x42ae76]

PST Jan 5 15:20:27]调试:monit(main+0x482)[0x40ba72]

PST Jan 5 15:20:27]调试:/lib/x86_64-linux-gnu/libc.so.6(uu libc_start_main+0xf5)[0x7f29415d4b45]

PST Jan 5 15:20:27]调试:monit()[0x40bd41]