0

Автоматическое добавление и удаление узлов из cacti

Для тех, кто использует связку на подобии nginx + cacti для мониторинга своих ресурсов, встает вопрос о том, как добавлять, удалять узлы по мере их изменения.
Это заметка о том как добавлять и удалять хосты в cacti.

Консольные утилиты cacti в случае Centos лежат в директории /usr/share/cacti/cli/

Приведу несколько несложных примеров:

Добавление хоста из коммандной строки:

php /usr/share/cacti/cli/add_device.php --description=hostname1 --ip=192.168.1.1 --template=9 --notes='auto add by script'

где id template можно узнать из web итерфейса или выполнив:

php /usr/share/cacti/cli/add_device.php --list-host-templates

Результат:

0   None
1   Generic SNMP-enabled Host
3   ucd/net SNMP Host
4   Karlnet Wireless Bridge
5   Cisco Router
6   Netware 4/5 Server
7   Windows 2000/XP Host
8   Local Linux Machine
9   MyTemplate

Добавление графиков из командной строки:

php /usr/share/cacti/cli/add_graphs.php --graph-type=ds --graph-template-id=2 --host-id=2 --snmp-query-id=1 --snmp-query-type-id=14 --snmp-field=ifDescr --snmp-value=Ethernet0/0/1

Параметров много. Обо всем по порядку.
graph-type — график на основе graph template (cg) или datasource (ds)
graph-template-id — шаблон, применяемый к графику. Доступные шаблоны можно посмотреть командой php /usr/share/cacti/cli/add_graphs.php --list-graph-templates
snmp-query-id — параметр для ds. Id snmp запроса к хосту. Доступные можно посмотреть командой php /usr/share/cacti/cli/add_graphs.php --list-snmp-queries
snmp-query-type-id — тип snmp запроса для определенного snmp-query-id. Например для SNMP — Interface Statistics этот список выглядит так:
php /usr/share/cacti/cli/add_graphs.php --list-query-types --snmp-query-id=1

2   In/Out Errors/Discarded Packets
3   In/Out Non-Unicast Packets
4   In/Out Unicast Packets
9   In/Out Bytes (64-bit Counters)
13  In/Out Bits
14  In/Out Bits (64-bit Counters)
16  In/Out Bytes
20  In/Out Bits with 95th Percentile
21  In/Out Bits with Total Bandwidth
22  In/Out Bytes with Total Bandwidth

snmp-field — одно из предложенных полей SNMP fields конкретного хоста. Посмотреть можно так: php /usr/share/cacti/cli/add_graphs.php --list-snmp-fields --host-id=2
snmp-value — Список значений, по которым можно отрисовать график для заданного snmp-field. Список тоже можно предварительно посмотреть:
php /usr/share/cacti/cli/add_graphs.php --list-snmp-values --host-id=215 --snmp-field=ifDescr

Удаление хостов из командной строки
Для удаления хостов скрипта из коробки не оказалось.
Решение быдо найдено на форуме cactiссылка на файл

Скрипт надо положить ко всем остальным скриптам (/usr/share/cacti/cli/) и для удаления хоста вместе с графиками и источниками данных выполнить, например:
php /usr/share/cacti/cli/remove_device.php —device-id=3,6,4

Для лучшего понимания советую почитать документацию Cacti по шаблонам

Alexey Egorychev

FreeBSD and Linux sysadmin. Know many systems like mailsystems, DB, WWW stack. Automation with salt, ansible. Monitoring with nagios, zabbix.