Виртуальные базы данных (в облаке, на ВМ или в контейнерах) — основа современных приложений. Однако их динамическая природа создаёт вызовы: от конкуренции за ресурсы до скрытых сбоев, которые не видны на уровне ОС. Без качественного мониторинга такие проблемы приводят к простоям и потерям. Zabbix — это open-source инструмент, который позволяет отслеживать состояние баз данных на всех уровнях: от инфраструктуры до бизнес-метрик. Это руководство поможет вам настроить мониторинг виртуальных баз данных с помощью Zabbix, обеспечив прозрачность и контроль.
Развертывание Zabbix
Архитектура:

Этапы установки:
Этап 1 - Установка сервера - устанавливает сервер и веб-интерфейс с поддержкой PostgreSQL:
# Установка Zabbix на Ubuntu
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt update
apt install zabbix-server-pgsql zabbix-frontend-php php-pgsql zabbix-apache-conf
Этап 2 - Настройка базы - создаёт базу для хранения данных Zabbix:
CREATE DATABASE zabbix_db;
CREATE USER zabbix_user WITH PASSWORD 'StrongPassword';
GRANT ALL PRIVILEGES ON DATABASE zabbix_db TO zabbix_user;
Этап 3 - Импортируем схему - заполняет базу начальными данными:
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix_db
Этап 4 - Настройте сервер - связывает сервер с базой:
# /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix_db
DBUser=zabbix_user
DBPassword=StrongPassword
Этап 5 - Запустите сервисы - запускает Zabbix и веб-сервер:
systemctl restart zabbix-server apache2
systemctl enable zabbix-server
Настройка мониторинга PostgreSQL
Установка агента - агент собирает метрики с сервера БД:
apt install zabbix-agent
Настройка доступа - пользователь для мониторинга PostgreSQL:
CREATE USER zabbix_mon WITH PASSWORD 'MonitorPass';
GRANT pg_monitor TO zabbix_mon;
Настройка агента - определяет пользовательские параметры для сбора метрик:
# /etc/zabbix/zabbix_agentd.conf
UserParameter=pg.connections[*], psql -U zabbix_mon -c "SELECT COUNT(*) FROM pg_stat_activity WHERE state = 'active'" -t
UserParameter=pg.locks[*], psql -U zabbix_mon -c "SELECT COUNT(*) FROM pg_locks" -t
Настройка шаблона в Zabbix:
- Импортируйте "PostgreSQL by Zabbix agent".
- Привяжите к хосту.
- Укажите макросы: `{$PG.USER}=zabbix_mon`, `{$PG.PASSWORD}=MonitorPass`.
Настройка мониторинга MySQL
Создание пользователя - пользователь для мониторинга MySQL:
CREATE USER 'zabbix_mon'@'localhost' IDENTIFIED BY 'MonitorPass';
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'zabbix_mon'@'localhost';
GRANT SELECT ON performance_schema.* TO 'zabbix_mon'@'localhost';
Настройка доступа - упрощает подключение агент:
# ~/.my.cnf
[client]
user=zabbix_mon
password=MonitorPass
Настройка агента - собирает базовые метрики MySQL:
# /etc/zabbix/zabbix_agentd.conf
UserParameter=mysql.connections,mysqladmin status | awk '{print $$4}'
UserParameter=mysql.queries_per_sec,mysqladmin status | awk '{print $$6}'
Используйте шаблон "MySQL by Zabbix agent" с макросами:
- `{$MYSQL.USER}=zabbix_mon`, `{$MYSQL.PASSWORD}=MonitorPass`.
Ключевые метрики для SRE
Пример триггера:
Срабатывающего, если число соединений превышает 90% от максимума.
{Template DB PostgreSQL:pg.connections.last()} /
{Template DB PostgreSQL:pg.max_connections.last()} * 100 > 90
Zabbix обеспечивает глубокий мониторинг виртуальных баз данных, помогая SRE предсказывать и предотвращать проблемы. Это руководство даёт вам базовую настройку для PostgreSQL и MySQL, которую можно расширить под ваши нужды.