Networking 如何在zabbix中监控网卡链路状态

Networking 如何在zabbix中监控网卡链路状态,networking,monitoring,zabbix,Networking,Monitoring,Zabbix,我需要监控zabbix中的物理接口链接状态,并想知道是否有内部zabbix检查,或者我需要编写自己的。如果是,如何确定网卡中是否插入了电缆,以及接口中是否存在电压。否,没有此类检查。您可以使用。至于如何操作,则取决于运行代理的操作系统。在linux上,您可以使用mii工具或ethtool定期检查。如果使用NetworkManager,也可以编写脚本并连接到D-Bus。或者您可以监视系统日志,驱动程序通常会将链接检测记录到内核日志 在窗户上我不知道。可能netsh或ipconfig与一些finds

我需要监控zabbix中的物理接口链接状态,并想知道是否有内部zabbix检查,或者我需要编写自己的。如果是,如何确定网卡中是否插入了电缆,以及接口中是否存在电压。

否,没有此类检查。您可以使用。至于如何操作,则取决于运行代理的操作系统。在linux上,您可以使用mii工具或ethtool定期检查。如果使用NetworkManager,也可以编写脚本并连接到D-Bus。或者您可以监视系统日志,驱动程序通常会将链接检测记录到内核日志

在窗户上我不知道。可能netsh或ipconfig与一些findstr可以让您轮询状态。或者powershell。询问serverfault,我打赌你会得到准确的答案。

所以是的(即使在Zabbix 3.0中),而且安装起来相当容易,至少在现代Linux机器上是这样。通过参数化UserParameter(如果您遵循…),可以定义单个参数以支持对多个NIC的监控;以下是方法:

  • 在目标框中,找到存储UserParameter定义的代理目录,如
    /etc/zabbix/zabbix\u agentd.d/
  • 为定义创建新文件或修改现有文件;我这样做:

    cat > /etc/zabbix/zabbix_agentd.d/userparameter_niclink.conf << EOF
    UserParameter=net.if.link[*],cat /sys/class/net/$1/carrier
    EOF
    

    cat>/etc/zabbix/zabbix\u agentd.d/userparameter\u niclink.conf@sxc731是正确的,在
    net中没有这样的现有项。如果

    如果要使此解决方案具有通用性,可以使用发现规则来发现网络接口。这将找到所有接口,也包括虚拟接口、网桥等。但是您可以使用正则表达式只匹配物理接口。在我的工作中,我在许多服务器上部署了多个操作系统。我的做法如下:

  • 创建或使用现有的Zabbix模板
  • 在管理->常规菜单中,转到正则表达式并执行以下操作:
  • 添加新的正则表达式
    物理网络接口发现
  • 使用正则表达式
    ^em[0-9]{1,}p[0-9]{1,}p[0-9]{1,}eth[0-9]{1,}en[0-9]{1,}$
  • 使用key
    net.if.discovery
    为模板创建发现规则
  • 使用宏
    {PHYSNET}
    和正则表达式
    @物理网络接口发现
    创建筛选器
  • 添加带有键
    net.if.link[{PHYSNET}]
    的项目原型,并在需要时触发
  • 在Zabbix客户端服务器上创建UserParameter(最后的示例)
  • 使用
    cat/sys/class/net/$1/carrier
    作为用户参数存在一个问题。如果网络接口关闭(例如,当
    ip-link设置eth0关闭时
    ),则
    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;
    
    资源:


    作为一项改进,我建议在
    /etc/zabbix/zabbix_agentd.d/userparameter_niclink.conf
    中使用以下行:
    userparameter=net.if.link[*],if[-r/sys/class/net/$1/carrier];然后是cat/sys/class/net/$1/承运人;否则为0;fi
    这可防止项目进入“不支持”状态。