Мы знаем, что Cacti использует SNMP для запроса и сбора данных. Насколько мне известно, менеджер SNMP использует Object ID (OID) для запроса определенного объекта и получения ответа от агента SNMP относительно этого OID.
Меня смущает то, как Cacti использует eg perl
или python
скрипт для сбора данных? Использует ли он тогда SNMP? Если да, то как работает протокол?
решение1
С Cacti
ним вы не ограничены только SNMP-запросами.
Вы можете выбрать запуск любого собственного скрипта в качестве метода ввода данных. Это может быть Perl
, PHP
, Python
, Bash
или что угодно. Просто выберите тип ввода скрипта/команды:
Ваш скрипт должен выводить по крайней мере одно значение. Это значение будет прикреплено к выходному полю внутри 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"
Дополнительные пояснения и примеры можно найти здесь:
- http://www.cacti.net/downloads/docs/html/making_scripts_work_with_cacti.html
- http://forums.cacti.net/viewtopic.php?t=11288(больше не поддерживается автором, но все еще не устарел).