Массовое добавление/удаление хостов в Zabbix при помощи API

в 9:18, , рубрики: linux, python, zabbix, zabbix api, Серверная оптимизация, Серверное администрирование, метки: , ,

На одном из проектов часто разворачивались/удалялись новые ноды в облаке, соответственно, появилась задача добавления/удаления новых хостов в Zabbix для мониторинга доступности и снятия статистики. Для саморазвития было решено использовать библиотеку zabbix API на питоне. Это был первый опыт написания скриптов, поэтому буду благодарен за отзывы и замечания по коду.

Мы используем zabbix 1.8.5 — как показала практика, порой в разных версиях 1.8.* данные могут возвращаться разными типами данных, так что возможны несостыковки при работе скриптов с другими версиями zabbix, впрочем, они легко устранимы.

Для добавления нового хоста, нам потребуется знать следующие параметры:

  • Будущее имя хоста в Zabbix
  • DNS
  • IP
  • порт, который слушает zabbix агент
  • будем ли мы мониторить хост по IP (1 или 0.) Соответственно, если 0 — то будем мониторить по DNS
  • id групп, в которые мы добавим хост
  • id шаблонов (templates), которые мы хотим подключить к хосту
  • опционально — макросы для хоста

Кратко по приведенным выше пунктам: если с первыми пятью все довольно просто и понятно, то оставшиеся для человека, имеющего небольшой опыт с заббиксом, могут вызывать вопросы. Более подробную информацию, разумеется, правильнее и лучше смотреть на сайте с документацией zabbix.

Группы хостов — вещь довольно удобная. Например, при настройке сценариев уведомлений, для разных групп можно создать разные условия и типы уведомлений, к примеру, для одних групп — отсылать E-Mail и SMS уведомления, для других — только E-Mail и так далее.

Шаблоны — это, грубо говоря, набор параметров, по которым снимаются данные а также триггеры, реагирующие на события. Для веб-серверов, например, мы будем снимать данные с apache или nginx, в то время как для БД нам будут нужны абсолютно другие параметры. Соотвественно, к разным хостам мы будем подключать разные шаблоны.

Наконец, макросы — это переменные, которые мы передаем хосту. К примеру, у нас есть item (в русском варианте — «Элементы данных»), который снимает статистику утилизации HDD. Так как дисков у нас может быть несколько, макросы позволяют нам передать, что $DISK1=/dev/sda, $DISK2=/dev/sdb и т.д., таким образом, снимая статистику с разных дисков одним item-ом при помощи макросов.

Что нужно изменить в конфигурации скриптов?
Нужные параметры хранятся в файле zabbix_credentials.py

  • server — URL сервера. По умолчанию — http://127.0.0.1/zabbix
  • username, password — логин и пароль пользователя, от имени которого будет идти запрос к API. Также, этот пользователь должен иметь права на доступ к API. По умолчанию — admin/zabbix.
  • По желанию — log level. Значение по умолчанию — 0.

Добавление хоста осуществляется таким образом: zabbix_host_add.py <hostname> <dns> <ip address> <port> <useip 1 or 0. if 0 - DNS will be used> <groupid1,...,groupidN> <templateid,...,templateidN> <macro1...macroN>

Удаление — zabbix_host_del.py <ip>

Собственно, сами скрипты с кратким readme — github.com/gnetsman/zabbix_api

Автор: GEN_ius

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js