Ответ
Автоматизация 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.