我需要监控zabbix中的物理接口链接状态,并且想知道是否有内部zabbix检查,或者我需要编写自己的检查。如果是,如何确定网卡中是否插入了电缆,以及接口中是否有电压。
发布于 2017-02-07 22:51:47
因此,是的,它是一个UserParameter (即使在Zabbix3.0中也是如此),而且它相当容易设置,至少在现代的Linux机器上是这样。通过参数化UserParameter (如果您遵循...),可以定义单个参数来支持对多个NIC的监控;具体方法如下:
在目标框上,找到存储UserParamter定义的代理目录,就像为定义创建一个新文件或修改现有文件一样;我这样做了:
cat > /etc/zabbix/zabbix_agentd.d/userparameter_niclink.conf EOF UserParameter=net.if.link*,cat /sys//
service zabbix-agent restart
service zabbix-agent restart
net.if.link[em1]
,
Interfaces
就这样;转到最新数据;等待30秒左右,您的NIC状态应该开始填充。在链路中断时针对要发出警报的项定义触发器也可能很有用。
这里有一些other ways to detect a NIC link's state;上面的cat /sys/class/net/${nic}/carrier
对我来说工作得很好(Ubuntu14.04服务器,物理网卡)。
发布于 2013-07-19 07:14:35
不,没有这样的检查。您可以使用UserParameter来实现它。至于如何实现,则取决于运行代理的操作系统。在linux上,您可以使用mii-tool或ethtool定期检查。或者,如果您使用NetworkManager,则可以执行一些脚本并连接到D-Bus。或者你可以监控系统日志,驱动程序通常会将链接检测记录到内核日志中。
在windows上我不知道。也许netsh或ipconfig和一些findstr可以让你轮询状态。或者是powershell。问一下serverfault,我打赌你会有确切的答案。
发布于 2017-03-14 21:36:15
@sxc731是对的,net.if
密钥中没有这样的现有项。
如果要使此解决方案具有通用性,可以使用发现规则来发现网络接口。这将查找所有接口,以及虚拟、网桥等。但您可以使用正则表达式仅匹配物理接口。在我的工作中,我在许多服务器上部署了多个操作系统。以下是我的方法:
使用key net.if.discovery
.
@Physical network interface discovery
.
net.if.link[{#PHYSNET}]
和trigger为模板创建发现规则。
使用cat /sys/class/net/$1/carrier
作为UserParameter有一个问题。如果网络接口关闭(例如,如果使用ip link set eth0 down
),则cat
命令的结果是无效参数。
我个人在UserParameter中使用这一行代码:
UserParameter=net.if.link[*], if [ $(cat /sys/class/net/$1/operstate) = "up" ]; then cat /sys/class/net/$1/carrier; else echo "0"; fi;
资源:
https://stackoverflow.com/questions/17716431
复制相似问题