Я тестирую свою сетевую инфраструктуру, в которой использую 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, чтобы изменения вступили в силу.