Назад | Перейти на главную страницу

Как отслеживать в Cacti потерю пакетов Linux Server (Net SNMP)

Я тестирую свою сетевую инфраструктуру, в которой использую iPerf и Протокол UDP.

я бегу Кактусы Сетевой мониторинг и построение графиков с открытым исходным кодом. SNMP сервер включен в серверах Linux.

Прежде всего, пока Кактусы может отслеживать все графики шаблона, которые уже есть (например, память, процессор, средняя нагрузка, статистика интерфейса) Но мне не удалось найти график для Packet loss graph для интерфейса. Должно быть как в Cisco Router 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 NETSTAT для пакетов UDP? Было бы намного лучше, если бы это были запросы 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"

Значение "$@" для устройства с именем хоста для cacti

Результатом сценария bash является:

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

Начиная с метода ввода данных, я дал следующий путь /usr/share/cacti/site/scripts/udp_netstat <hostname> затем я добавил поля ввода, а также вывод в соответствии с выводом файла bash.

Для источника данных я добавил элементы источника данных также в соответствии с выводом файла bash и сделал тип источника данных как СЧЕТЧИК. Затем я перехожу к шаблону графика, где добавляю строку для каждого вывода, который у меня есть.

Кажется, что он находится в рабочем процессе добавления нового скрипта, однако на графике пока ничего не показано.

Я предполагаю, что есть ошибка с входной строкой.

Одним из вариантов может быть использование 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
....

Это связано с тем, что вы должны разрешить запросы по этой статистике (OID) в файле конфигурации агента snmp.

Например, в /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, чтобы изменения вступили в силу.