Традиционный мониторинг игровых серверов с помощью node_exporter отслеживает утилизацию процессора, выделение оперативной памяти и нагрузку на дисковые накопители. Однако сервер с идеальными показателями белого ящика (whitebox metrics) может быть абсолютно недоступен для игроков: сетевой сокет игры завис в дедлоке, локальный фаервол отбросил входящие пакеты после обновления правил, или на маршруте возникла критическая потеря пакетов. Для точного контроля реальной доступности инфраструктуры применяется внешний синтетический мониторинг через Prometheus Blackbox Exporter.
В этом практическом руководстве мы разберём установку Blackbox Exporter, настройку модулей зондирования TCP-сокетов и веб-панелей, а также конфигурацию перенаправления целевых адресов (relabeling) в Prometheus.
Белый ящик против чёрного: почему метрик хоста недостаточно для игровых серверов#
Игровой процесс — это высоконагруженное приложение реального времени, критически зависящее от своевременной обработки сетевых дейтаграмм и пакетов.
Разница между подходами очевидна:
- Whitebox (внутренний мониторинг): опрашивает агент внутри операционной системы (
node_exporter, Java JVM экспортер). Показывает, сколько ресурсов потребляет процессjavaилиvalheim_server. - Blackbox (внешний мониторинг): отправляет реальные сетевые запросы снаружи хоста, измеряя время отклика сокета (TCP handshake), валидность SSL-сертификатов веб-панелей управления и доступность сетевого периметра.
Установите Blackbox Exporter в операционной системе Ubuntu/Debian:
sudo apt-get update && sudo apt-get install -y prometheus-blackbox-exporter
sudo systemctl enable --now prometheus-blackbox-exporter
По умолчанию служба запускается на порту 9115 и ожидает указания целевых зондов через параметры URL.
Настройка модулей TCP и HTTPS в файле blackbox.yml#
Конфигурационный файл /etc/prometheus/blackbox.yml задаёт правила поведения для различных протоколов. Откройте файл и настройте модули для проверки игровых портов (Minecraft, Factorio RCON, Terraria) и веб-интерфейсов управления:
modules:
tcp_connect:
prober: tcp
timeout: 5s
http_2xx:
prober: http
timeout: 5s
http:
valid_status_codes: [200, 301, 302]
method: GET
fail_if_ssl: false
fail_if_not_ssl: false
icmp_ping:
prober: icmp
timeout: 3s
Перезапустите экспортер для применения модулей:
sudo systemctl restart prometheus-blackbox-exporter
Модуль tcp_connect выполняет полноценное трехстороннее рукопожатие TCP SYN -> SYN/ACK -> ACK. Если игровой демон упал или заблокирован фаерволом, зонд немедленно фиксирует отказ соединения.
Интеграция Blackbox Exporter в конфигурацию Prometheus#
Чтобы Prometheus опрашивал удалённые игровые узлы через Blackbox Exporter, используется специальный механизм подмены адреса relabel_configs. Добавьте задание сбора метрик в /etc/prometheus/prometheus.yml:
scrape_configs:
- job_name: 'game_servers_blackbox_tcp'
metrics_path: /probe
params:
module: [tcp_connect]
static_configs:
- targets:
- '198.51.100.10:25565' # Minecraft Java
- '198.51.100.10:25575' # Minecraft RCON
- '198.51.100.20:7777' # Terraria
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9115
Перезагрузите конфигурацию Prometheus:
curl -X POST http://localhost:9090/-/reload
Prometheus обращается к локальному экспортеру 127.0.0.1:9115, передавая целевой IP-адрес игрового сервера в URL-параметре target. В результирующей базе временных рядов метрика probe_success сохраняется с понятным лейблом instance="198.51.100.10:25565".
Настройка правил оповещения и проверка доступности#
Проверьте работу зонда вручную из терминала:
curl -s "http://127.0.0.1:9115/probe?target=198.51.100.10:25565&module=tcp_connect" | grep -E "probe_success|probe_duration_seconds"
Значение probe_success 1 подтверждает, что игровой порт отвечает на входящие сетевые запросы. Создайте правило оповещения в /etc/prometheus/alert_rules.yml:
groups:
- name: game_server_alerts
rules:
- alert: GameServerPortUnreachable
expr: probe_success{job="game_servers_blackbox_tcp"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Game server socket {{ $labels.instance }} unreachable"
description: "Blackbox Exporter has failed to establish a TCP connection for over 2 minutes."
Благодаря внешним зондам дежурный администратор получает уведомление об аварии ещё до того, как игроки начнут массово жаловаться в сообществе на разрыв связи.
Если вы хотите развернуть отказоустойчивые игровые кластеры с предустановленным мониторингом Prometheus, автоматическими проверками сокетов и мгновенной реакцией на сбои, надёжный хостинг игровых серверов обеспечивает готовую инфраструктуру с круглосуточным контролем сетевых портов.




