Zabbix для мониторинга игровых серверов — установка и настройка
Uptime-монитор скажет, что сервер упал, когда он уже упал — а вот почему диск за неделю забился под ноль, и после чего резко выросло потребление RAM накануне краша, он не расскажет вообще ничего, потому что не собирает историю метрик, только факт «жив/не жив». Zabbix закрывает именно этот пробел: он не заменяет uptime-мониторинг, а достраивает над ним слой истории, графиков и осмысленных алертов по конкретным ресурсам хоста, на котором крутится ваш игровой сервер. Разберём, как поставить Zabbix-агент на VPS с игровым сервером и настроить его так, чтобы он реально предупреждал о проблеме, а не заваливал вас шумом.
Содержание
Чем Zabbix отличается от uptime-монитора
Простой uptime-инструмент вроде Uptime Kuma или UptimeRobot проверяет один факт: отвечает сервер на порт/пинг или нет. Это важная, но грубая проверка — она не различает «сервер работает нормально» и «сервер работает, но диск заполнен на 98% и через час упадёт с ошибкой записи». Подробнее про сам принцип такой проверки и готовые инструменты для неё — в статье про uptime-мониторинг игрового сервера, и если вам нужен только факт «жив/не жив» — возможно, этого достаточно и Zabbix будет избыточен.
Zabbix — система мониторинга инфраструктуры на уровне хоста: она собирает метрики (загрузка CPU, RAM, свободное место на диске, сетевой трафик, число процессов) через агент на сервере, хранит их историю и поднимает тревогу по гибким условиям — не просто «порт не отвечает», а «CPU выше 90% дольше 5 минут подряд» или «диска меньше 10%». Диагностику лагов и просадок TPS внутри самой игры Zabbix не заменяет — это разобрано отдельно в статье про мониторинг TPS и лагов — но по хостовым ресурсам, от которых эти лаги часто и зависят, картина у Zabbix куда полнее, чем у любого uptime-чекера.
Ключевое отличие в архитектуре: Zabbix — это сервер (хранит данные, считает триггеры, шлёт алерты) плюс агент на каждом мониторимом хосте (собирает метрики локально). Для одного игрового сервера поднимать полноценный Zabbix Server ради него одного избыточно — смысл появляется, когда у вас уже несколько машин и вы хотите видеть их все в одном месте.
Архитектура: сервер, агент, прокси
Прежде чем ставить, стоит понять три компонента, из которых состоит Zabbix:
- Zabbix Server — центральный процесс, хранит конфигурацию, историю метрик (в базе данных — обычно MySQL/MariaDB или PostgreSQL) и считает триггеры. Держите его на отдельной машине, а не на том же хосте, что игровой сервер: если упадёт вся машина целиком, сервер мониторинга должен пережить это и успеть отправить алерт.
- Zabbix Agent (или новее — Zabbix Agent 2 на Go, с поддержкой плагинов «из коробки») — лёгкий процесс на мониторимом хосте, собирает локальные метрики и по запросу сервера (или сам, в active-режиме) отдаёт их.
- Zabbix Proxy — опциональный промежуточный узел, собирает данные с группы агентов и разгружает основной сервер. Для одного-двух игровых серверов proxy не нужен, это история про десятки-сотни хостов.
Для типичного сценария «у меня есть VPS с игровым сервером, хочу видеть его метрики» вам нужны: Zabbix Server (можно на отдельной недорогой VPS или даже локально, если это домашний проект) и Zabbix Agent 2 на самом игровом сервере.
Нужен игровой сервер?
MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.
Создать серверУстановка Zabbix Server
Официальный способ — через репозиторий Zabbix для вашего дистрибутива. Пример для Ubuntu (проверьте актуальную версию и точную команду на официальной странице загрузок Zabbix, номера версий на момент вашей установки могут отличаться):
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo apt update
sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
Дальше нужна база данных для сервера:
sudo apt install mysql-server
sudo mysql -uroot -p <<'EOF'
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'СЛОЖНЫЙ_ПАРОЛЬ';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
EOF
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
Пароль от базы прописываете в /etc/zabbix/zabbix_server.conf (параметр DBPassword), после чего запускаете и включаете автозапуск сервисов:
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.1-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.1-fpm
Веб-интерфейс после этого доступен по адресу вашего сервера (http://ваш-ip/zabbix), там же при первом входе — мастер настройки, который проверяет соединение с базой и создаёт таблицы. Логин по умолчанию Admin / пароль zabbix — обязательно смените пароль сразу после первого входа, оставлять дефолтные креды на публично доступном веб-интерфейсе — прямое приглашение для сканеров.
Установка агента на игровой сервер
На самой машине с игровым сервером ставится только агент, без полного Zabbix Server. Для Ubuntu/Debian:
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
sudo apt update
sudo apt install zabbix-agent2
Дальше редактируется /etc/zabbix/zabbix_agent2.conf — ключевые параметры:
Server=IP_ВАШЕГО_ZABBIX_SERVER
ServerActive=IP_ВАШЕГО_ZABBIX_SERVER
Hostname=game-server-01
Server — с каких адресов агент принимает пассивные опросы (сервер сам стучится к агенту), ServerActive — куда агент сам отправляет данные в активном режиме (соединение инициирует агент наружу, а не сервер мониторинга внутрь — удобнее при файрволе или NAT). Используйте active-режим, если между Zabbix Server и игровым сервером есть файрвол — тогда не придётся открывать входящий порт на игровом хосте специально под мониторинг, только исходящий TCP на 10051. Про общую логику открытия только нужных портов и закрытия остального — в статье про настройку портов и файрвола.
После правки конфига:
sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2
Хост с этим именем (Hostname из конфига) дальше нужно добавить в веб-интерфейсе Zabbix Server: Data collection → Hosts → Create host, указать то же имя, группу хостов (например, «Game Servers») и IP-адрес агента.
Шаблоны: CPU, RAM, диск, сеть
Руками настраивать каждую метрику с нуля не нужно — у Zabbix есть готовые официальные шаблоны, которые уже содержат нужные items (сборщики метрик) и триггеры (условия тревоги) для типовых Linux-хостов. При создании хоста в разделе Templates подключаете, например:
- Linux by Zabbix agent (или
Linux by Zabbix agent active, если используете active-режим) — базовый шаблон с CPU load, использованием RAM, состоянием файловых систем, сетевым трафиком по интерфейсам, числом процессов и uptime системы.
Этого одного шаблона обычно достаточно на старте — он покрывает диагностику «хосту не хватает ресурсов»: load average за 1/5/15 минут, занятое/свободное место по каждой файловой системе, использование и доступность RAM, трафик по сетевым интерфейсам.
Если игровой сервер запущен как systemd-юнит (что разумно само по себе — см. статью про systemd, screen и tmux для игровых процессов), можно добавить отдельный item типа systemd.unit.info или proc.num, чтобы видеть, что именно процесс игрового сервера жив — это уже уровень конкретного процесса, а не просто открытого порта.
Таблица для ориентира — какие типовые пороги triggers из шаблона имеет смысл проверить и при необходимости подстроить под свой сервер (это не жёсткие рекомендованные значения, а отправная точка — конкретные пороги зависят от того, сколько ресурсов вы реально выделили серверу и сколько игроков на нём одновременно):
| Метрика | Что смотрим | Типичный триггер по умолчанию в шаблоне |
|---|---|---|
| CPU load | Load average относительно числа ядер | Высокая загрузка длительное время |
| RAM | Доступная память в % | Мало доступной памяти |
| Диск | Свободное место на файловой системе | Меньше ~10-20% свободного места |
| Сеть | Ошибки/потери на интерфейсе | Высокий процент ошибок пакетов |
| Процесс | Наличие процесса/юнита | Отсутствует, если настроен отдельно |
Триггеры и алерты: как получать уведомления, а не тонуть в шуме
Мало собрать метрики — нужно, чтобы по ним приходило осмысленное уведомление, а не поток алертов на каждый секундный всплеск CPU от обычного игрового тика. У Zabbix для этого связка из трёх вещей: Triggers (условие, при котором проблема считается активной — например, avg(/game-server-01/system.cpu.load,5m) > 4, то есть средняя загрузка за 5 минут выше порога, а не разовый пик), Actions (что делать, когда триггер сработал) и Media (канал доставки — email, Telegram и другие через встроенные или community-интеграции).
Настройка Telegram как канала уведомлений — через Alerts → Media types → Telegram, где нужен токен бота от @BotFather и chat_id, куда слать. Дальше в Users → нужный пользователь → Media добавляете этот тип оповещения и настраиваете под уровень серьёзности проблем (Severity) — например, только Warning и выше, чтобы не сыпало по Information-события.
Практический совет по борьбе с ложным шумом: используйте функцию avg() или min() за интервал (5-15 минут) вместо мгновенного значения в условии триггера — это сглаживает кратковременные всплески нагрузки, которые для игрового сервера абсолютно нормальны (момент массового респавна мобов или загрузки чанков при заходе группы игроков) и сами по себе не проблема.
Настройка алертов через Action:
- Alerts → Actions → Trigger actions → Create action.
- Условие — например, Trigger severity ≥ Average (не реагировать на минорные события).
- Операция — Send message, выбрать пользователя/группу и media type (Telegram).
- По желанию — эскалация: если проблема не подтверждена (Acknowledged) за N минут, отправить повторно или другому получателю.
Дашборд и то, что реально стоит на него вынести
Веб-интерфейс Zabbix позволяет собрать дашборд из виджетов — графики метрик, список текущих проблем (Problems), карта хостов. Для одного игрового сервера практично держать это простым: один виджет с текущими активными проблемами (Problems), графики CPU/RAM/диска за последние 24 часа, и, если настроили, отдельный график сетевого трафика — по нему, кстати, иногда виден DDoS ещё до того, как игроки успели пожаловаться на лаги.
Не пытайтесь с самого начала строить сложный дашборд с десятком графиков — на практике реально смотрят один-два раза в день максимум на сводку проблем, а не разглядывают графики постоянно. Основная ценность Zabbix не в дашборде, а в истории: когда через месяц понадобится разобраться, «а что было с сервером в момент, когда он упал в прошлый вторник», у вас будет график CPU/RAM/диска за тот момент, а не пустота.
Нужен игровой сервер?
MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.
Создать серверЧастые вопросы
Zabbix заменяет uptime-мониторинг вроде Uptime Kuma или UptimeRobot?
Не совсем — Zabbix отлично видит состояние ресурсов хоста изнутри, но если упадёт вся сеть или хостинг целиком, агент не сможет достучаться до сервера мониторинга и сообщить об этом. Внешний независимый uptime-чекер с другого узла — по-прежнему нужен как страховка на этот случай, Zabbix его дополняет, а не заменяет.
Нужен ли Zabbix для одного маленького сервера на пару друзей?
Скорее избыточен — разворачивать Zabbix Server, базу данных и разбираться с шаблонами ради одной небольшой VPS того не стоит, для этого случая проще обойтись uptime-монитором и простым скриптом. Zabbix оправдывает себя, когда у вас несколько машин или когда вы регулярно упираетесь в вопрос «а хватало ли ресурсов на прошлой неделе».
Можно ли поставить Zabbix Server прямо на игровой сервер, чтобы не платить за вторую VPS?
Технически можно, но тогда при падении самой машины упадёт и мониторинг, который должен был об этом сообщить — смысл теряется. Если бюджет ограничен, минимальная недорогая VPS отдельно под Zabbix Server всё равно предпочтительнее, чем совмещение с мониторимым хостом.
Zabbix Agent сильно нагружает сам игровой сервер?
Нет, агент — лёгкий процесс, который периодически (по умолчанию раз в несколько десятков секунд-минуту, интервал настраивается по каждому item) читает системные счётчики через /proc и подобные источники — нагрузка на CPU и память от него пренебрежимо мала по сравнению с самим игровым процессом.
Чем Zabbix Agent 2 отличается от классического Zabbix Agent?
Agent 2 написан на Go, поддерживает плагины (в том числе для мониторинга конкретных сервисов, если у вас на том же хосте крутится ещё и база данных) и в целом активнее развивается, поэтому для новых установок разумно ставить именно его — совместим с теми же шаблонами.