好久没更新了,为了证明我还在,写一篇没什么大营养的水文。
先看一下 zabbix 的动态拓扑图效果:

在运维中网络状态的监控是日常工作之一,手动的检测太麻烦了,现在很多大佬开发了很多好用的工具,这些工具不仅颜值高,还很实用。
本期先写一下较常用的 Zabbix 打造动态网络拓扑图。
其实很简单,但是我遇到的麻烦问题,是公司用的防火墙,在 Zabbix 上搜索不到相应的模板,采用 MIB 库的方工加载,但是加载 MIB 库文件,困扰了我几天,因为网上的相关资讯不是太多,而且,大部分的方法都是错的。加载 MIB 库文件实现监控的方法,过两天再写,这里先写一下 Zabbix 能直接添加的设备。
下面开始正文,在 CentOS7 之后,CentOS 不再是稳定版,所以现在用的是 Rocky 系统来做的。然后关于把 Zabbix 直接装进系统,还是用 Docker 的方式安装,推荐生产环境还是直接装进系统。
第一步安装 Zabbix,下面都是以 Rocky 系统为例的,这里建议直接参考官方文档,安装步骤很简单,在官方的下载页面,选择安装的系统,和版本,会自动生成安装步骤,直接路着步骤走就 OK 了。



第二步,关闭本机的防火墙
systemctl stop firewalld
systemctl disable firewalld
第三步,进入 WEB 页面,由于我这里已经安装好了,这个图我就不截了,打开 http://IP: 端口, 会进入 zabbix 的初始化页面,输入数据库密码,官方文档的数据库连接密码是 password。
第四步,添加被监控主机,被监控主机需要开启 snmp, 并设置好团体字信息。由于不同设备开启 SNMP 方法不一样,本文以华为 S5700 交换机为例,进入终端输入以下命令,开启 snmp 服务。
snmp-agent
snmp-agent sys-info version v2c
snmp-agent community complexity-check disable
snmp-agent community read cipher read
snmp-agent trap enable
snmp-agent protocol source-status all-interface
这里 snmp-agent community read cipher read 这一句设置 snmp 的连接密码为 read,实际使用,安全起见,建议设置稍复杂些。
开启后,在 Zabbix 加添加主机,如下图:

添加主机时选择模板,直接搜索华为,选择相应的就可以了。然后在宏里输入对应的 snmp 密码

添加完主机后,snmp 状态如果显示绿色就添加好了。依次添加需要监控的主机。
添加完成后,创建拓扑图


然后,在里面添加相应的设备元素及图标,并连接

修改链接中的标签,可以实现动态显示


Zabbix6.4 的写法和之前有些不同,这里的格式如图中所示
IN:{?last(/Switch1/net.if.in[ifHCInOctets.39])}
OUT:{?last(/Switch1/net.if.out[ifHCOutOctets.39])}
解释一下上面的脚本,{}内部为脚本,前面为标注,任意写,里面的格式固定,?last 为查询最新数值,(/Switch1/net.if.out[ifHCOutOctets.39]) 这里面就是 / 设备名称 / 出接口 [ 接口号 ],对应的值。在主机监控项里如下图:


全部设备链路写好后,就可以实现本文开头所示效果了。
但是实际使用中发现,Zabbix 由于用 snmp 协议,数据的更新周期较长,最小设置成 1s,不能以毫秒级的展示系统流量信息。所以,整个动态拓扑图,不够完美,不能实时反应系统流量状况。