Мониторинг DayZ серверов: полный гайд по настройке оповещений и сбору статистики | AdminWiki

Мониторинг DayZ серверов: полный гайд по настройке оповещений и сбору статистики

30 июля 2026 9 мин. чтения

Администрирование DayZ сервера - это постоянный контроль за производительностью и стабильностью. Встроенные инструменты игры дают лишь базовую информацию: текущий онлайн и пинг. Когда сервер начинает «лагать», падает FPS или неожиданно отключается, администратору приходится вручную анализировать логи и гадать о причинах. Решение - автоматизированный мониторинг с помощью связки Zabbix и Grafana.

Это руководство предоставляет готовые скрипты для сбора ключевых метрик: FPS сервера, количество игроков, число активных зомби, загрузка CPU и RAM. Вы получите пошаговые инструкции по интеграции с Zabbix, импорту готовых шаблонов и настройке дашбордов в Grafana. Финальный этап - настройка оповещений в Telegram и email, чтобы вы узнавали о падении FPS или отключении сервера раньше, чем начнут жаловаться игроки.

Если вы уже работали с мониторингом других игровых проектов, принципы будут знакомы. Мы разбирали аналогичные подходы в руководстве по мониторингу Minecraft серверов и статье по внешнему мониторингу игровых серверов. Для DayZ есть своя специфика, которую мы учли в скриптах и конфигурациях.

Зачем нужен мониторинг DayZ сервера: ключевые метрики и проблемы

DayZ - игра с высокими требованиями к серверной части. Огромная карта, тысячи объектов, симуляция зомби и погоды создают неравномерную нагрузку. Типичные проблемы, с которыми сталкиваются администраторы:

  • Падение серверного FPS. Игровой движок DayZ чувствителен к количеству объектов и зомби. Когда FPS опускается ниже 15-20, игроки ощущают задержки, а стрельба становится некомфортной.
  • Высокая нагрузка из-за зомби. Массовые скопления зараженных в городах создают пиковые нагрузки на CPU. Сервер может работать стабильно при 100 зомби и «лечь» при 500.
  • Неожиданные отключения. Утечки памяти, краши из-за модов или переполнение логов приводят к внезапному падению сервера без видимых предпосылок.
  • Деградация производительности со временем. После нескольких часов аптайма сервер может начать потреблять больше RAM без видимого роста онлайна.

Ключевые метрики, которые необходимо отслеживать:

  • Онлайн игроков - текущее количество и динамика за период.
  • FPS сервера - частота кадров игрового цикла. Норма - 40-60 FPS, критический порог - ниже 20.
  • Количество зомби - активные зараженные на карте.
  • Использование CPU и RAM - системные метрики процесса DayZ.
  • Сетевой трафик - входящий и исходящий поток.

Стандартный RCON-клиент показывает только список игроков и позволяет выполнять команды. Логи сервера пишутся в файл, но их ручной анализ отнимает часы. Для автоматизации нужны скрипты, которые извлекают данные и передают их в систему мониторинга.

Сбор метрик с DayZ сервера: практические скрипты

Сервер DayZ предоставляет два основных способа получения данных: RCON-протокол и парсинг лог-файлов. RCON дает оперативные показатели (игроки, FPS), логи содержат детальную информацию о зомби, событиях и ошибках. Мы подготовили скрипты для обоих методов.

Скрипт для получения количества игроков и FPS через RCON

RCON - это протокол удаленного управления, встроенный в DayZ сервер. Он позволяет отправлять команды и получать ответы в реальном времени. Для работы потребуется Python-библиотека python-rcon.

Установите библиотеку:

pip install python-rcon

Скрипт dayz_stats.py подключается к RCON, выполняет команду stats и парсит ответ для извлечения FPS, количества игроков и других параметров:

#!/usr/bin/env python3
import rcon
import sys

HOST = '127.0.0.1'
PORT = 2302
PASSWORD = 'ваш_rcon_пароль'

def get_stats():
    try:
        conn = rcon.RCON(HOST, PORT, PASSWORD)
        response = conn.command('stats')
        conn.disconnect()
        return response
    except Exception as e:
        print(f'RCON error: {e}', file=sys.stderr)
        return None

def parse_stats(raw):
    if not raw:
        return None
    
    data = {}
    for line in raw.split('\n'):
        line = line.strip()
        if 'Players:' in line:
            data['players'] = int(line.split(':')[1].strip())
        elif 'FPS:' in line:
            data['fps'] = float(line.split(':')[1].strip())
        elif 'Zombies:' in line:
            data['zombies'] = int(line.split(':')[1].strip())
    
    return data

if __name__ == '__main__':
    raw_stats = get_stats()
    stats = parse_stats(raw_stats)
    
    if stats:
        print(f"players {stats.get('players', 0)}")
        print(f"fps {stats.get('fps', 0)}")
        print(f"zombies {stats.get('zombies', 0)}")
    else:
        print('players 0')
        print('fps 0')
        print('zombies 0')
        sys.exit(1)

Скрипт выводит метрики в формате «ключ значение», который удобно забирать Zabbix-агенту. Если RCON недоступен, скрипт возвращает нули и завершается с ошибкой - это сигнал для триггера о проблемах с сервером.

Добавьте скрипт в cron для периодического сбора данных каждую минуту:

* * * * * /usr/local/bin/dayz_stats.py > /tmp/dayz_metrics.txt

Мониторинг количества зомби и других параметров через логи

RCON не всегда показывает детальную информацию о зомби. Лог-файл сервера server_log.txt содержит записи о количестве активных зараженных, создании и удалении объектов. Этот метод полезен, если RCON отключен или вы хотите собирать исторические данные.

Формат логов DayZ включает временные метки и события. Пример записи о зомби:

12:34:56 | Infected: 342 active, 15 spawned, 8 despawned

Скрипт parse_dayz_log.sh на Bash извлекает последнюю запись о количестве зомби:

#!/bin/bash
LOG_FILE="/path/to/server_log.txt"
OUTPUT_FILE="/tmp/dayz_zombies.txt"

if [ -f "$LOG_FILE" ]; then
    ZOMBIES=$(grep "Infected:" "$LOG_FILE" | tail -1 | grep -oP '\d+(?= active)')
    echo "zombies ${ZOMBIES:-0}" > "$OUTPUT_FILE"
else
    echo "zombies 0" > "$OUTPUT_FILE"
fi

Этот скрипт также добавляется в cron. Он ищет последнюю строку с «Infected:» и извлекает число активных зомби. Если лог-файл отсутствует или записей нет, возвращается ноль.

Комбинируя оба подхода, вы получите полную картину: RCON для оперативных метрик FPS и онлайна, логи для детальной статистики по зомби и событиям.

Интеграция с Zabbix: пошаговая настройка

Zabbix - центральный узел нашей системы мониторинга. Он собирает метрики, хранит историю и генерирует оповещения при проблемах. Если вы ранее настраивали мониторинг Linux-серверов, процесс будет знаком. Для новичков у нас есть полное руководство по развертыванию стека мониторинга.

Установка и конфигурация Zabbix агента на сервере с DayZ

Zabbix-агент устанавливается на той же машине, где работает DayZ сервер. Он выполняет наши скрипты и передает результаты на Zabbix-сервер.

Установка на Debian/Ubuntu:

apt update
apt install zabbix-agent -y

Отредактируйте конфигурационный файл /etc/zabbix/zabbix_agentd.conf:

Server=IP_ВАШЕГО_ZABBIX_СЕРВЕРА
ServerActive=IP_ВАШЕГО_ZABBIX_СЕРВЕРА
Hostname=dayz-server-01

UserParameter=dayz.players,cat /tmp/dayz_metrics.txt | grep players | awk '{print $2}'
UserParameter=dayz.fps,cat /tmp/dayz_metrics.txt | grep fps | awk '{print $2}'
UserParameter=dayz.zombies,cat /tmp/dayz_metrics.txt | grep zombies | awk '{print $2}'
UserParameter=dayz.cpu,ps -p $(pgrep DayZServer) -o %cpu --no-headers 2>/dev/null || echo 0
UserParameter=dayz.ram,ps -p $(pgrep DayZServer) -o %mem --no-headers 2>/dev/null || echo 0

Параметры UserParameter определяют, как агент будет получать значения метрик. Первые три читают файл, созданный нашим Python-скриптом. Последние два получают загрузку CPU и RAM процесса DayZ через ps.

Перезапустите агент:

systemctl restart zabbix-agent
systemctl enable zabbix-agent

Проверьте, что агент работает и метрики доступны. С Zabbix-сервера выполните:

zabbix_get -s IP_DAYZ_СЕРВЕРА -k dayz.players

Если команда возвращает число - агент настроен корректно.

Импорт шаблона DayZ сервера в Zabbix

Вместо ручного создания элементов данных и триггеров используйте готовый шаблон. Скачайте XML-файл шаблона DayZ Server и импортируйте его через веб-интерфейс Zabbix: Configuration → Templates → Import.

Шаблон содержит:

  • Элементы данных для всех метрик (игроки, FPS, зомби, CPU, RAM).
  • Триггеры для критических состояний (FPS ниже 20, сервер не отвечает, высокая загрузка CPU).
  • Графики для визуализации в интерфейсе Zabbix.

После импорта привяжите шаблон к узлу сети (хосту) вашего DayZ сервера: Configuration → Hosts → выберите хост → вкладка Templates → Link new template → выберите «DayZ Server Template» → Update.

Через несколько минут в разделе Monitoring → Latest data появятся значения метрик. Если данные не поступают, проверьте логи Zabbix-агента и права на выполнение скриптов.

Визуализация статистики в Grafana: создание дашборда

Zabbix собирает данные, но его встроенные графики уступают Grafana по гибкости и внешнему виду. Grafana позволяет создать наглядный дашборд с историей за любой период, объединить метрики на одном экране и настроить удобные оповещения.

Подключение Grafana к Zabbix API

Установите плагин Zabbix для Grafana:

grafana-cli plugins install alexanderzobnin-zabbix-app
systemctl restart grafana-server

В веб-интерфейсе Grafana перейдите в Configuration → Plugins → Zabbix → Enable. Затем Configuration → Data Sources → Add data source → Zabbix.

Настройте соединение:

  • URL: http://IP_ZABBIX_СЕРВЕРА/zabbix/api_jsonrpc.php
  • Username: Admin
  • Password: пароль_пользователя_zabbix

Нажмите «Save & Test». Grafana должна показать сообщение об успешном подключении.

Импорт готового дашборда DayZ мониторинга

Мы подготовили JSON-модель дашборда, которая включает все ключевые панели:

  • Текущий онлайн - число игроков в реальном времени.
  • История онлайна - график за выбранный период.
  • FPS сервера - текущее значение и график.
  • Количество зомби - активные зараженные.
  • Нагрузка CPU и RAM - системные метрики процесса.

Импорт дашборда: в Grafana нажмите «+» → Import → Upload JSON file → выберите файл дашборда → укажите источник данных Zabbix → Import.

После импорта дашборд сразу отобразит данные. Вы можете настроить автообновление (например, каждые 10 секунд) и вывести дашборд на отдельный монитор в режиме киоска.

Для администраторов RP-проектов будет полезен опыт из руководства по мониторингу SAMP и GTA RP - там разобрана аналогичная интеграция с учетом специфики ролевых серверов.

Настройка оповещений: Telegram, email и триггеры Zabbix

Дашборд хорош для анализа, но администратор не может смотреть на него круглосуточно. Оповещения решают эту проблему: вы получаете уведомление в мессенджер или на почту, как только метрика выходит за допустимые пределы.

Создание Telegram бота и интеграция с Zabbix

Для отправки уведомлений в Telegram потребуется бот. Создайте его через BotFather в Telegram:

  1. Напишите /newbot в чат с BotFather.
  2. Укажите имя бота (например, «DayZ Monitor Bot»).
  3. Укажите username бота (например, dayz_monitor_bot).
  4. BotFather выдаст токен - сохраните его.

В Zabbix перейдите в Administration → Media types → Create media type. Выберите тип «Script» и укажите параметры:

Script name: telegram.sh
Script parameters:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

Создайте скрипт telegram.sh в директории /usr/lib/zabbix/alertscripts/:

#!/bin/bash
TOKEN="ваш_токен_бота"
CHAT_ID="$1"
SUBJECT="$2"
MESSAGE="$3"

curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
    -d chat_id="${CHAT_ID}" \
    -d text="${SUBJECT}
${MESSAGE}" \
    -d parse_mode="HTML"

Сделайте скрипт исполняемым:

chmod +x /usr/lib/zabbix/alertscripts/telegram.sh

Добавьте пользователю Zabbix способ доставки: Administration → Users → выберите пользователя → Media → Add. Выберите созданный медиа-тип «Telegram», в поле «Send to» укажите ваш chat_id (получить его можно через бот @userinfobot).

Критические триггеры для DayZ сервера

Триггеры определяют, когда отправлять оповещения. Рекомендуемый набор для DayZ сервера:

ТриггерВыражениеПорог
Низкий FPS{DayZ Server:dayz.fps.last()}<20FPS ниже 20 в течение 3 минут
Сервер не отвечает{DayZ Server:dayz.players.last()}=0Ноль игроков в течение 5 минут (возможно, сервер упал, но процесс еще висит)
Высокая загрузка CPU{DayZ Server:dayz.cpu.last()}>90CPU процесса DayZ выше 90%
Утечка памяти{DayZ Server:dayz.ram.last()}>80RAM процесса DayZ выше 80% от системной
Агент недоступен{DayZ Server:agent.ping.nodata(5m)}=1Нет данных от агента 5 минут

Настройте действия (Actions) в Zabbix: Configuration → Actions → Create action. Укажите условия срабатывания (триггеры) и операции (отправка сообщения через Telegram и email). Для email-оповещений настройте SMTP в Administration → Media types → Email.

После настройки отправьте тестовое оповещение. В Zabbix откройте Monitoring → Problems, выберите триггер и нажмите «Check now». Если все настроено верно, в Telegram придет сообщение с описанием проблемы.

Оптимизация DayZ сервера на основе данных мониторинга

Сбор метрик - не самоцель. Данные мониторинга помогают находить и устранять причины нестабильной работы. Grafana позволяет сопоставлять разные метрики на одном временном промежутке и выявлять закономерности.

Анализ узких мест с помощью Grafana

Типичный сценарий анализа: игроки жалуются на лаги в определенное время суток. Откройте дашборд Grafana за проблемный период и сопоставьте графики:

  1. Если падение FPS совпадает с ростом количества зомби - проблема в настройках спавна зараженных. Уменьшите лимиты в конфигурации.
  2. Если FPS падает при росте онлайна выше определенного порога - сервер упирается в CPU. Рассмотрите апгрейд тарифа на хостинге, например, на облачные серверы Timeweb Cloud с гарантированными ресурсами CPU.
  3. Если RAM неуклонно растет в течение нескольких часов - вероятна утечка памяти в одном из модов. Отключайте моды по одному и отслеживайте график RAM для выявления виновника.

Рекомендации по конфигурации сервера

Файл serverDZ.cfg содержит ключевые параметры, влияющие на производительность. Рекомендации на основе практики администрирования:

  • MaxPlayers - не устанавливайте значение выше, чем способен выдержать сервер. Для процессора с 4 ядрами и частотой 3.5 GHz оптимальный лимит - 60-80 игроков.
  • MaxZombies - ограничьте общее количество зомби на карте. Значение 500-800 подходит для большинства конфигураций. При FPS ниже 30 уменьшите до 300-400.
  • lootRespawnInterval - увеличьте интервал респавна лута до 3600 секунд. Частый респавн создает дополнительную нагрузку на сервер.
  • networkRange - уменьшите радиус сетевого взаимодействия до 800-1000 метров. Это снизит объем передаваемых данных без заметного влияния на геймплей.
  • reservedMemory - зарезервируйте 512-1024 MB оперативной памяти для системных нужд, чтобы DayZ не вытеснял критически важные процессы.

Применяйте изменения по одному и отслеживайте реакцию на дашборде. Оптимизация - итеративный процесс. Собранные метрики покажут, какое изменение дало положительный эффект, а какое - ухудшило ситуацию.

Для автоматизации бэкапов конфигураций и логов перед экспериментами используйте скрипты из нашего руководства по автоматизации резервного копирования. Это позволит быстро откатить изменения, если оптимизация пошла не по плану.

Поделиться:
Сохранить гайд? В закладки браузера