如何在 Cacti 中监控 Linux 服务器的数据包丢失(Net SNMP)

如何在 Cacti 中监控 Linux 服务器的数据包丢失(Net SNMP)

我正在测试我使用的网络基础设施增强型UDP 协议。

我在跑仙人掌一个开源的、基于网络的网络监控和绘图软件。简单网络管理协议服务器在 Linux 服务器中启用。

首先,到目前为止,仙人掌能够监视所有已存在的模板图表(例如,内存、CPU、平均负载、接口统计) 但我找不到Packet loss graph接口的图表。它应该像 Cisco 路由器一样,In/Out Errors/Discarded Packets但可能符号不同。有人知道吗?

其次,我还想绘制/绘制netstat显示内容。例如netstat -su显示:

    Udp:
            1354844 packets received
            0 packets to unknown port received.
            5854 packet receive errors
            1360713 packets sent
            RcvbufErrors: 5854

我想绘制发送、接收数据包以及数据包接收错误。这可能吗SNMP NETSTAT?换句话说,我想绘制UDP 数据包丢失

是否有任何 python、Perl 或 bash 脚本可用于收集SNMP NETSTATUDP 数据包的数据?如果是 SNMP 查询,那就更好了。

我试过snmpnetstat -v2c -c public -Cs -Cp udp 172.0.1.11它只显示

udp:

然后,我尝试了一下snmpnetstat -v2c -c public -Cs 172.0.1.11,但它没有显示任何值。

tcp:
udp:
  ....

          - output errors
         icmp6 histogram:
              input     output type

第二次编辑

我已经写了bash 脚本当我运行时,它返回我想要的输出,例如 ./udp_netstat.sh 172.0.1.11

    #!/bin/bash

rs="$(snmpnetstat -v2c -c public -Cs -Cp udp "$@")"
    # You have to quote "$rs" so newlines don't break
    ReceivedDatagrams="$(echo "$rs" | cut -d$'\n' -f2 | tr -s ' '| cut -d' ' -f2)"
    InvalidPort="$(echo "$rs" | cut -d$'\n' -f3 | tr -s ' '| cut -d' ' -f2)"
    DroppedDatagrams="$(echo "$rs" | cut -d$'\n' -f4 | tr -s ' '| cut -d' ' -f2)"
    DatagramRequests="$(echo "$rs" | cut -d$'\n' -f5 | tr -s ' '| cut -d' ' -f2)"

    echo "Received Datagrams:$ReceivedDatagrams Invalid port:$InvalidPort Dropped datagrams:$DroppedDatagrams Datagram requests:$DatagramRequests"

该值"$@"用于 cacti 的主机名设备

Bash 脚本的输出是:

Received Datagrams:258 Invalid port:63 Dropped datagrams:0 Datagram requests:471520

从数据输入方法开始,我给出了以下路径,/usr/share/cacti/site/scripts/udp_netstat <hostname>然后根据 bash 文件输出添加了输入字段以及输出。

对于数据源,我还根据 bash 文件输出添加了数据源项,并将数据源类型设为柜台。然后,我继续到图形模板,在那里我添加了我拥有的每条输出的行。

它似乎处于添加新脚本的工作流程中,但是到目前为止图表中还没有显示任何内容。

我认为输入字符串有错误。

答案1

一种选择是使用包snmpnetstat中附带的命令snmp

它允许使用-Cs-Cp参数查询每个协议的统计数据:

snmpnetstat [常用选项] [-Ca] [-Cn] [-Cs] [-Cp 协议] 代理

-CS显示每个协议的统计数据。

—CP 协议显示协议统计信息

https://www.systutorials.com/docs/linux/man/1-snmpnetstat/

例如:

$ snmpnetstat -v2c -c public -Cs -Cp udp 192.168.0.49
udp:
          1052 total datagrams received
          1167 datagrams to invalid port
             0 datagrams dropped due to errors
          1152 output datagram requests

从那里您可以解析输出和/或根据 Cacti 要求对其进行格式化。


编辑 :

如果它不返回任何值,如下所示:

tcp:
udp:
ip:
             - datagrams input
             - octets received
             - hdr errors input
             - no routes input
....

这是因为您必须允许在 snmp 代理配置文件中查询这些统计信息(OID)。

例如/etc/snmp/snmpd.conf添加:

  • 仅适用于 UDP:

     view   systemonly  included   .1.3.6.1.2.1.7
    
  • 对全部 :

     view   systemonly  included   .1.3.6.1.2.1
    

參考文獻:https://oidref.com/1.3.6.1.2.1

然后重新启动 snmp 代理以应用更改。

相关内容