前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zabbix 监控端口连通性并自动追踪 TCP 路由

Zabbix 监控端口连通性并自动追踪 TCP 路由

作者头像
Amadeus
发布2023-12-08 15:20:36
3690
发布2023-12-08 15:20:36
举报
文章被收录于专栏:linux技术linux技术

0. 前言#

本文实现被检测主机到特定 ip 的特定端口的连通性, 通过 nc 命令测试端口可用性, 当 nc 超时时自动执行 traceroute 追踪路由定位网络故障点, 本文的案例是监控我们生产的短信业务服务器到运营商提供的短信接口之间的连通性.

环境信息:

  • CentOS 7.6
  • Zabbix 3.4

确保需要检测端口连通性的服务器安装了 nctraceroute

1. 服务器配置#

每个需要检测的服务器都要做如下操作

修改 traceroute 权限

代码语言:javascript
复制
chmod u+s /usr/bin/traceroute

创建检测脚本, 脚本传入三个参数: nc 命令的超时时间, 要检测的 ip 以及端口, traceroute 日志保存到 /var/log/smslink_monitor 目录

代码语言:javascript
复制
vim /etc/zabbix/zabbix_agentd.d/smslink.sh

#!/bin/bash

start_time=$(date +"%Y%m%d-%H%M%S")

timeout=$1
ip=$2
port=$3

LOG_DIRECTORY=/var/log/smslink_monitor
[ -d "${LOG_DIRECTORY}" ] || mkdir -p "${LOG_DIRECTORY}"

# 开始 nc 测试连通性
nc_result=$(/bin/nc -z -w ${timeout} ${ip} ${port}; echo $?)
echo ${nc_result}

# 如果 nc 测试失败则执行 traceroute
if [ ${nc_result} -ne 0 ]; then
    log_file="${LOG_DIRECTORY}/${start_time}-${ip}-${port}.log"
    /bin/nohup /usr/bin/traceroute -n -T -p ${port} ${ip} > ${log_file} 2>&1 &
fi

exit 0

此步可以略过, 如果用 root 用户执行过脚本进行测试, 需要执行一下, 因为 root 用户执行过脚本后, 这个目录的属主将是 root, 而 zabbix 执行脚本使用的是 zabbix 用户, 会导致没有权限写入

代码语言:javascript
复制
chown zabbix:zabbix /var/log/smslink_monitor

新增 zabbix agent 配置文件, 通过调用我们刚才创建的脚本实现

代码语言:javascript
复制
vim /etc/zabbix/zabbix_agentd.d/smslink.conf

# $1: timeout
# $2: ip
# $3: port
UserParameter=get_smslink_status[*],/bin/sh /etc/zabbix/zabbix_agentd.d/smslink.sh $1 $2 $3

重启 zabbix agent

代码语言:javascript
复制
systemctl restart zabbix-agent

zabbix server 端测试监控项, * 为占位符, 改成自己的实际 ip, 返回值 0 为正常, 其他值为异常

代码语言:javascript
复制
[root@klmy-kfyy-jxwh-0003 ~]# zabbix_get -s 192.168.4.72 -p 10050 -k get_smslink_status[3,10.**.**.22,7001]
0
[root@klmy-kfyy-jxwh-0003 ~]# zabbix_get -s 192.168.4.73 -p 10050 -k get_smslink_status[3,10.**.**.22,7001]
0
[root@klmy-kfyy-jxwh-0003 ~]# zabbix_get -s 192.168.4.74 -p 10050 -k get_smslink_status[3,10.**.**.22,7001]
0

改成一个错误的端口, 可以看到返回值变成了 1

代码语言:javascript
复制
[root@klmy-kfyy-jxwh-0003 ~]# zabbix_get -s 192.168.4.72 -p 10050 -k get_smslink_status[3,10.**.**.22,7002]
1

4.72 上看下 traceroute 日志输出

代码语言:javascript
复制
[root@klmy-kfyy-dxpt-0003 ~]# ls -ltr  /var/log/smslink_monitor/
-rw-rw-r-- 1 zabbix zabbix 595 Dec  7 11:21 20231207-112058-10.**.**.22-7002.log
[root@klmy-kfyy-dxpt-0003 ~]# cat /var/log/smslink_monitor/20231207-112058-10.**.**.22-7002.log
traceroute to 10.**.**.22 (10.**.**.22), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  100.32.34.2  5.202 ms  5.198 ms  5.187 ms
 4  * * *
 5  11.54.13.201  6.103 ms  6.076 ms  6.074 ms
 6  11.54.13.1  6.873 ms  2.104 ms  1.598 ms
 7  * * *
 8  10.33.253.129  2.086 ms  3.160 ms  3.110 ms
 9  10.11.1.153  71.703 ms  70.821 ms  69.009 ms
10  10.33.0.82  77.203 ms  69.230 ms  69.315 ms
11  * * *
12  * * *
13  * * *

可以看到中断的点, 这里中断是因为我们集团广域网没开 7002 端口的策略, 所以到广域网直接断掉了

2. zabbix 配置#

2.1 创建模板#

选择链接的主机或者主机群组

image-20231019161050562
image-20231019161050562

2.2 创建应用集#

image-20231019165227390
image-20231019165227390

2.3 创建监控项#

image-20231207151703881
image-20231207151703881

八条链路都创建一下

image-20231207151818203
image-20231207151818203

在最新数据处看下键值获取是否正常

image-20231207151953485
image-20231207151953485

2.4 创建触发器#

这里的表达式代表如果连续的两个值的最小值不为 0 则触发告警, 即连续两次值都不为 0 触发告警, 这是考虑到整体网络比较复杂, 网络波动可能会导致误报

image-20231207152335550
image-20231207152335550

八条链路分别添加一下触发器

image-20231207152847941
image-20231207152847941

2.5 配置告警动作#

image-20231207152936737
image-20231207152936737

2.6 测试验证#

我这里是找网络侧的同事中断了一下链路进行测试的, 各位可以自行选择适合自己的方法

image-20231207153129294
image-20231207153129294

2.7 添加聚合图形#

最后可以添加一个聚合图形, 方便后续查看

在模板处添加图形

image-20231207153341550
image-20231207153341550

监测中 -> 聚合图形 处添加聚合图形, 三台主机, 选择一行显示出来

image-20231207153748336
image-20231207153748336

进入刚才创建的聚合图形, 选择右上角的编辑聚合图形, 然后点击 更改 添加图形

image-20231207154620691
image-20231207154620691

把三个节点都添加一下

image-20231207154840761
image-20231207154840761

最后将此聚合图形通过右上角的按钮添加到常用, 就可以在首页直接点击进来了

至此

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 前言#
  • 1. 服务器配置#
  • 2. zabbix 配置#
    • 2.1 创建模板#
      • 2.2 创建应用集#
        • 2.3 创建监控项#
          • 2.4 创建触发器#
            • 2.5 配置告警动作#
              • 2.6 测试验证#
                • 2.7 添加聚合图形#
                相关产品与服务
                腾讯云服务器利旧
                云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档