Большинство администраторов узнают о проблемах сервера из чата: «лагает!», «сервер упал!». В этот момент уже поздно что-то смотреть - лаг прошёл, а что его вызвало, неизвестно. Графики решают эту проблему: они постоянно записывают состояние сервера, и вы можете в любой момент посмотреть, что происходило вчера в 21:47, когда игроки жаловались. Разберёмся, как собрать такую панель и на что на ней смотреть.
Зачем нужны графики, если есть spark
Spark отлично показывает, что именно тормозит сервер в момент, когда вы сняли профиль. Но профиль нужно запустить вручную и в нужное время. Графики работают постоянно и отвечают на другие вопросы: когда начались проблемы, связаны ли лаги с ростом онлайна, растёт ли потребление памяти день за днём, падал ли сервер ночью.
Графики и spark хорошо дополняют друг друга: по графикам вы видите, когда и при каких условиях сервер начинает лагать, а spark в это время показывает, что именно его нагружает.
Из чего состоит система
Обычно используют связку из трёх частей. Плагин на сервере собирает показатели: TPS, время тика, использование памяти, количество загруженных чанков и сущностей, онлайн. База для временных рядов, например Prometheus или InfluxDB, хранит эти показатели во времени. Grafana рисует из них графики и панели.
Для Minecraft есть готовые плагины-экспортёры, которые отдают показатели в формате Prometheus, и готовые панели для Grafana, которые можно импортировать за пару минут. Поэтому собирать всё с нуля не придётся.
Что выводить на панель
Самое важное - TPS и время тика. TPS показывает, успевает ли сервер, а время тика - насколько близко он к пределу. Если время тика регулярно приближается к 50 миллисекундам, лаги вот-вот начнутся, даже если TPS пока держится на 20.
Рядом - онлайн. Сопоставление с TPS сразу показывает, связаны ли лаги с количеством игроков.
Дальше - память и сборщик мусора. Если график памяти растёт день за днём и не опускается после сборки мусора, это признак утечки в каком-то плагине. Если сборщик мусора срабатывает слишком часто, стоит посмотреть на флаги запуска.
Количество загруженных чанков и сущностей помогает поймать фермы и разгулявшихся мобов. Резкий рост сущностей в каком-то мире - повод туда заглянуть.
И показатели самой машины: загрузка процессора, свободное место на диске, сетевой трафик. Диск, который заполняется, - одна из самых частых причин внезапных падений.
Оповещения
Графики полезны, но смотреть на них постоянно никто не будет. Поэтому настройте оповещения: если TPS ниже 17 дольше пяти минут, если свободного места на диске меньше 10%, если сервер перестал отдавать показатели - пусть Grafana пришлёт сообщение в Telegram или Discord. Тогда вы узнаете о проблеме раньше игроков. Начните с готовой панели и трёх оповещений, а дополнительные графики добавляйте, когда появится конкретный вопрос.
Важно не переборщить: если оповещения приходят по каждой мелочи, их начинают игнорировать. Лучше несколько действительно важных правил.
Безопасность панели
Grafana и база показателей не должны быть открыты всему интернету. Закройте их паролем, а лучше сделайте доступными только через внутреннюю сеть или VPN. Экспортёр показателей на сервере тоже стоит открыть только для вашей базы, а не для всех: по показателям видно многое о вашей инфраструктуре.
Если нет своего VDS
На игровом хостинге поставить Prometheus и Grafana обычно нельзя. Но можно использовать облачные варианты: у Grafana есть бесплатный облачный тариф, куда сервер может отправлять показатели. Есть и плагины, которые сами строят простые графики на веб-странице. Это не так гибко, но для начала достаточно.
Пример
Игроки жаловались на лаги примерно раз в неделю, но каждый раз, когда администратор заходил проверить, всё было нормально. После установки Grafana стало видно, что лаги совпадают с ростом памяти: она росла несколько дней подряд, пока сборщик мусора не начинал работать без остановки. Spark в момент лага показал плагин голограмм с утечкой. После обновления плагина график памяти стал ровным, а еженедельные лаги прекратились.
Как читать графики во время разбора проблемы
Когда игроки пожаловались на лаги, откройте панель на время жалобы и посмотрите на несколько графиков сразу. Если вместе с падением TPS вырос онлайн, скорее всего, серверу просто не хватает мощности при пиковой нагрузке. Если вырос график сущностей в одном мире - где-то разрослась ферма. Если резко скакнула память и сборщик мусора, проблема в памяти. Если ничего из этого не менялось, а TPS упал, стоит снять профиль spark в похожее время и искать конкретный плагин.
Полезно оставлять на графиках отметки событий: обновление плагина, рестарт, ивент. Grafana позволяет добавлять такие аннотации. Тогда через месяц видно, что лаги начались сразу после обновления конкретного плагина, и не нужно гадать.
Графики как аргумент
Панель полезна не только для поиска проблем. Она помогает принимать решения: показать команде или подрядчику, что после оптимизации время тика упало вдвое, обосновать переход на более мощный тариф или, наоборот, убедиться, что текущего железа хватает с запасом.
Наш взгляд
Графики превращают «вчера что-то лагало» в точный ответ: когда, при каком онлайне и с каким потреблением памяти. Готовые экспортёры и панели позволяют собрать систему за вечер, а оповещения в Telegram или Discord дают узнавать о проблемах раньше игроков.
Смотрите ли вы графики своего сервера или узнаёте о проблемах из чата?



