Zabbix — это большой склад с данными (метриками, проблемами, настройками). У этого склада есть главный вход с охраной (веб-интерфейс), через который вы можете зайти и посмотреть, что внутри.
API (Application Programming Interface) — это служебная дверь на этот склад, предназначенная не для людей, а для роботов (других программ и скриптов). Вы подходите к этой двери, говорите специальную команду (запрос), и вам выдают нужную информацию или пропускают внутрь, чтобы что-то изменить.
Zabbix API — это именно такая "служебная дверь" для системы Zabbix. Она позволяет другим программам взаимодействовать с Zabbix автоматически, без участия человека.
Техническое определение
Zabbix API — это программный интерфейс на основе JSON-RPC, который позволяет внешним приложениям получать доступ к данным Zabbix и управлять его объектами (хостами, элементами данных, триггерами, картами и т.д.) напрямую, в обход веб-интерфейса.
Ключевые особенности
1. JSON-RPC: Это протокол для удаленного вызова процедур, где данные передаются в формате JSON. Это означает, что ваш запрос и ответ от Zabbix будут в виде легко читаемых структур JSON.
2. HTTP/HTTPS: Все взаимодействие происходит через веб-протоколы, что делает его универсальным и доступным из любого языка программирования, который умеет работать с HTTP.
3. Аутентификация: Для использования API необходимо сначала получить токен доступа (API Token), передав логин и пароль пользователя Zabbix. Этот токен затем используется во всех последующих запросах.
Для чего используется Zabbix API? (Примеры использования)
Вот самые распространенные сценарии:
1. Массовое управление объектами:
o Задача: Добавить 100 новых серверов в мониторинг.
o Решение через Веб-интерфейс: 100 раз нажать "Создать хост", заполнить поля.
o Решение через API: Написать один скрипт, который отправит один запрос с данными обо всех 100 хостах.
2. Интеграция с другими системами:
o Пример: Создать тикет в Jira, ServiceNow или OTRS автоматически, когда в Zabbix срабатывает критический триггер.
o Пример: Отображать ключевые метрики из Zabbix на корпоративном дашборде в Grafana или на телевизионной панели.
3. Автоматизация рутинных операций:
o Включить или выключить мониторинг для группы серверов во время плановых работ.
o Массово изменить шаблоны для множества хостов.
o Автоматически добавлять порты на коммутаторах для мониторинга при их появлении.
4. Получение данных для кастомных отчетов:
o Написать скрипт, который раз в день через API запрашивает статистику по проблемам за последние 24 часа и отправляет красивый отчет в Telegram или по электронной почте.
5. Создание собственных утилит:
o Разработать простое мобильное приложение, которое показывает только самые важные проблемы.
Как выглядит работа с Zabbix API? (Простой пример)
Допустим, мы хотим получить список всех хостов с проблемами.
1. Получаем токен доступа:
json
// Запрос
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"username": "api_user",
"password": "secure_password"
},
"id": 1
}
json
// Ответ
{
"jsonrpc": "2.0",
"result": "0424bd59b807674191e7d77572075f33", // <- Это наш API Token
"id": 1
}
2. Делаем основной запрос (получить хосты с проблемами):
json
// Запрос
{
"jsonrpc": "2.0",
"method": "problem.get",
"params": {
"output": "extend",
"selectTags": "extend",
"selectHosts": "extend"
},
"auth": "0424bd59b807674191e7d77572075f33", // Подставляем токен
"id": 2
}
json
// Ответ (упрощенно)
{
"jsonrpc": "2.0",
"result": [
{
"eventid": "12345",
"name": "Zabbix agent on My Server is unreachable for 5 minutes",
"severity": "4",
"hosts": [
{
"hostid": "10084",
"host": "My Server"
}
]
}
],
"id": 2
}
Как с ним работать?
· Командная строка: С помощью утилит curl или httpie.
· Языки программирования: На Python (с использованием библиотек zabbix-api или requests), Perl, Go, Java, PowerShell и многих других.
· Инструменты для тестирования: Очень удобно использовать Postman или Insomnia для отправки первых запросов и изучения структуры API.
Где найти документацию?
Официальная документация по Zabbix API — ваш лучший друг. Она находится на самом сервере Zabbix по адресу:
https://your-zabbix-server-domain/zabbix/api_jsonrpc.php
А также на официальном сайте: Zabbix Documentation / API
Итог: Zabbix API — это мощный, гибкий и практически незаменимый инструмент для любого, кто хочет выйти за рамки стандартного веб-интерфейса и автоматизировать работу с системой мониторинга Zabbix, интегрировать её с другими инструментами или создать собственные надстройки.