Модуль 4: Observability & Security

Шаг 4: Визуализация в Grafana и интеграция по Zabbix API

1. Зачем использовать Grafana поверх Zabbix?

Хотя Zabbix прекрасно справляется со сбором метрик и вычислением триггеров, его стандартные графики менее гибкие и визуально устарели. **Grafana** позволяет объединить метрики из Zabbix, Prometheus, PostgreSQL и Loki на едином интерактивном дашборде.

2. Развертывание Grafana в Docker Compose с автоустановкой плагина

Чтобы интегрировать Zabbix и Grafana, нам потребуется плагин alexanderzobnin-zabbix-app. Мы можем установить его автоматически прямо при старте контейнера с помощью переменной окружения GF_INSTALL_PLUGINS.

Шаг 2.1. Добавление Grafana в docker-compose.yml

version: '3.8'

services:
  grafana:
    image: grafana/grafana-enterprise:latest
    container_name: grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=SuperSecretPassword123
      - GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app
    volumes:
      - grafana_storage:/var/lib/grafana
    restart: always

volumes:
  grafana_storage:

Запустите контейнер: docker compose up -d grafana

3. Настройка сервисного пользователя в Zabbix для API

В целях безопасности не следует использовать учетную запись `Admin` для связки с Grafana. Создадим отдельного пользователя с правами **Read-Only**:

Инструкция по настройке в веб-интерфейсе Zabbix:
1. Перейдите в Users → User groups и создайте группу Grafana API Group с правами Read-only на все группы хостов.
2. Перейдите в Users → Users и создайте пользователя grafana_api.
3. Задайте надежный пароль и включите пользователя в группу Grafana API Group.

4. Интеграция Zabbix Data Source в Grafana

  1. Откройте Grafana по адресу http://<IP_СЕРВЕРА>:3000.
  2. Перейдите в Administration → Plugins, найдите **Zabbix** и нажмите **Enable**.
  3. Перейдите в Connections → Data Sources → Add data source и выберите **Zabbix**.
  4. Укажите URL для API Zabbix:
    http://172.17.0.1:8080/api_jsonrpc.php (если Grafana обращается к Zabbix через хост-мост Docker) или внутреннее имя контейнера http://zabbix-web:8080/api_jsonrpc.php.
  5. В блоке **Zabbix API Details** введите логин (grafana_api) и пароль.
  6. Нажмите **Save & test**. Вы должны увидеть зелёное уведомление *«Zabbix API version: 6.4.x»*.

5. Создание интерактивных панелей (Panels & Dashboards)

Теперь вы можете создавать графики, показатели загрузки ЦП, памяти и сетевых интерфейсов:

Пример настройки панели трафика MikroTik:
Group: Routers
Host: MikroTik-Main
Item: Interface ether1: Bits received и Bits sent
Visualization type: Time series или Stat