web-dev-qa-db-ja.com

Linux Server(Net SNMP)のパケット損失をCactiで監視する方法

iPerfおよびUDPプロトコルを使用しているネットワークインフラストラクチャをテストしています。

私はCactiを実行しています。オープンソースのWebベースのネットワーク監視とグラフ化です。 [〜#〜] snmp [〜#〜]サーバーはLinuxサーバーで有効になっています。

まず第一に、これまでのところ、Cactiは、すでに存在するすべてのテンプレートのグラフを監視できます(例:メモリ、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で可能ですか。言い換えれば、DPパケット損失をプロットしたいと思います。

UDPパケットのSNMP NETSTATのデータを収集するために使用できるpython、Perl、またはbashスクリプトはありますか? 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

2回目の編集

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"

"$@"は、サボテンのホスト名デバイス用です

bashスクリプトの出力は次のとおりです:

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

データ入力方法から始めて、次のパス/usr/share/cacti/site/scripts/udp_netstat <hostname>を指定し、bashファイルの出力に従って、入力フィールドと出力を追加しました。

データソースについても、bashファイルの出力に応じてデータソース項目を追加し、データソースタイプを[〜#〜] counter [〜#〜]としました。次に、グラフテンプレートに進み、各出力の行を追加しました。

新しいスクリプトを追加するワークフローのようですが、これまでのところグラフには何も表示されていません。

入力文字列に間違いがあると思います。

1
Tim Luka

1つのオプションは、snmpnetstatパッケージに付属のsnmpコマンドを使用することです。

-Csおよび-Cpパラメーターを使用して、プロトコルごとに統計を照会できます。

snmpnetstat [一般的なオプション] [-Ca] [-Cn] [-Cs] [-Cpプロトコル]エージェント

-Csプロトコルごとの統計を表示します。

-Cpprotocolプロトコルに関する統計を表示する

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エージェントを再起動して変更を適用します。

1
krisFR