Мы знаем, что Cacti использует SNMP для запроса и сбора данных. Насколько я знаю, диспетчер SNMP использует идентификатор объекта (OID) для запроса определенного объекта и получения ответа от агента SNMP относительно этого OID.
Меня смущает то, как Cacti использует, например, perl
или python
скрипт для сбора данных? Тогда он использует SNMP? Если да, то как тогда работает протокол?
С участием Cacti
вы не ограничены только запросами SNMP.
Вы можете запустить любой собственный сценарий в качестве метода ввода данных. Возможно Perl
, PHP
, Python
, Bash
или что угодно. Просто выберите тип ввода Script / Command:
Ваш скрипт должен вывести хотя бы одно значение. Это значение будет прикреплено к полю вывода в Cacti
и использовался позже для создания окончательного графика.
Если вам нужно только одно поле вывода, просто распечатайте значение как есть (например, 12
) без чего-либо другого (например, ms
, %
):
#!/bin/sh
ping -c1 host | grep rtt | cut -d"=" -f2 | cut -d"/" -f2
Если вам нужно получить несколько значений, формат вывода должен быть:
field1:value1 field2:value2 field3:value3
Затем каждое поле будет прикреплено к полю вывода.
#!/bin/sh
result=$(ping -c1 host | grep rtt | cut -d"=" -f2)
min=$(echo $result | cut -d"/" -f1)
avg=$(echo $result | cut -d"/" -f2)
max=$(echo $result | cut -d"/" -f3)
echo "min:$min avg:$avg max:$max"
Вы можете найти дальнейшие объяснения и примеры здесь: