Как автоматизировать настройку Zabbix?

«Как автоматизировать настройку Zabbix?» — вопрос из категории Мониторинг и логирование, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Автоматизация Zabbix — ключевая задача для поддержания консистентности в большой инфраструктуре. Я использую комбинацию его REST API и инструментов IaC.

Основной подход — использование Zabbix API через скрипты. Например, для автоматического добавления хоста при развертывании нового сервера:

import requests
import json

ZABBIX_URL = "http://zabbix.example.com/api_jsonrpc.php"
ZABBIX_USER = "api_user"
ZABBIX_PASS = "secure_password"

# 1. Аутентификация и получение токена
auth_payload = {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": ZABBIX_USER,
        "password": ZABBIX_PASS
    },
    "id": 1
}
response = requests.post(ZABBIX_URL, json=auth_payload).json()
auth_token = response['result']

# 2. Создание хоста
create_host_payload = {
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "new-db-server-01",
        "interfaces": [{
            "type": 1, # Агент
            "main": 1,
            "useip": 1,
            "ip": "10.0.1.15",
            "dns": "",
            "port": "10050"
        }],
        "groups": [{"groupid": "2"}], # Группа "Linux servers"
        "templates": [{"templateid": "10001"}] # Шаблон "Template OS Linux"
    },
    "auth": auth_token,
    "id": 2
}
host_response = requests.post(ZABBIX_URL, json=create_host_payload)
print(f"Host created: {host_response.json()}")

Интеграция с Ansible: Для оркестрации в рамках общего playbook'а развертывания я использую модуль community.zabbix.zabbix_host.

Управление конфигурацией как код: Все шаблоны, триггеры, карты сетей и действия (actions) я экспортирую в XML/JSON форматы и храню в Git. Изменения применяются через CI/CD пайплайн, который использует API для импорта конфигураций. Это дает полный аудит изменений и возможность быстрого восстановления или репликации настроек на другом инстансе Zabbix.