Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PingCore

Мониторинг доступности Minecraft-серверов с уведомлениями в Telegram. Работает на любом ядре и загрузчике (Vanilla, Spigot, Paper, Purpur, Forge, NeoForge, Fabric, Quilt, BungeeCord, Velocity), потому что подключается не как плагин или мод, а как Java-агент — одной строкой в команде запуска. Один экземпляр обслуживает неограниченное число серверов и пользователей.

Minecraft JVM                          PingCore                        Telegram
┌──────────────────────┐  POST /ingest ┌────────────────────────┐      ┌────────────┐
│ -javaagent:          │  каждые 30 с  │ aiohttp relay          │      │ 🟢 запущен │
│ pingcore-agent.jar   │ ────────────► │ SQLite (серверы)       │ ───► │ 🔴 упал    │
│ start/heartbeat/stop │  подписано    │ watchdog (нет пульса)  │      │ 🟡 стоп    │
└──────────────────────┘  HMAC-SHA256  │ aiogram bot            │      └────────────┘
                                       └────────────────────────┘

Падение ловится по принципу dead man's switch: пока идёт пульс — сервер жив. Пульс пропал (в том числе при kill -9, OOM или отключении хостинга, когда изнутри процесса отправить уже нечего) — об этом сообщает сам сервис.

Быстрый старт

1. Бот. У @BotFather: /newbot → имя → username → токен.

2. Сервис (Linux, сам выберет Docker или systemd):

curl -fsSL https://raw.githubusercontent.com/Xhiveee/pingcore/main/deploy/install.sh | bash

Без Docker принудительно — MODE=systemd, с Docker — MODE=docker. Вручную: docker compose up -d --build в bot/ либо venv + systemd — см. руководство.

3. Сервер Minecraft. Напишите боту /register MyServer, затем в каталоге с server.jar:

curl -fsSL https://raw.githubusercontent.com/Xhiveee/pingcore/main/deploy/install-agent.sh | bash -s -- \
  --token ТОКЕН --secret СЕКРЕТ --relay https://ваш-хост

и добавьте в команду запуска перед -jar:

java -Xmx4G -javaagent:pingcore-agent.jar -jar server.jar nogui

Готово: при старте придёт 🟢, при штатной остановке 🟡, при падении 🔴.

Документация

Руководство от А до Я — установка (Docker и без Docker), HTTPS, подключение серверов на разных ядрах и панелях, все настройки, обновление, диагностика, безопасность.

Команды бота

Команда Что делает
/register <имя> регистрирует сервер и выдаёт строку запуска
/list все ваши серверы: 🟢 работает · � не отвечает · 🟡 остановлен · ⚪ не подключался
/status <имя> состояние, аптайм, память JVM, время последнего пульса
/unregister <имя> удаляет сервер

Возможности

  • один .jar на 13 КБ без зависимостей — работает везде, где есть JVM 8+;
  • никогда не мешает серверу: не бросает исключений, таймаут 3 сек, не более одной строки ошибки в минуту, отдельный daemon-поток с минимальным приоритетом;
  • различает штатную остановку (🟡) и падение (🔴);
  • повторы с экспоненциальной паузой, чтобы моргнувшая сеть не выглядела как краш;
  • HMAC-SHA256-подпись каждого пакета и защита от повторной отправки (окно ts ±5 минут);
  • метрики JVM (занятая и максимальная память) в /status;
  • опциональный лог агента в файл — для отладки без спама в консоль сервера.

Структура

Путь Что это
src/main/java/pingcore/agent Java-агент для Minecraft-серверов
bot/pingcore Telegram-бот и relay в одном процессе (aiogram 3 + aiohttp + aiosqlite)
bot/tests, bot/e2e_smoke.py тесты, включая сквозной прогон на живой JVM
deploy/ скрипты установки сервиса и агента
docs/GUIDE.md полное руководство

Сборка и тесты

mvn clean package                 # агент -> target/pingcore-agent.jar, 8 JUnit-тестов
cd bot && pip install -r requirements-dev.txt && python -m pytest    # 25 тестов
cd bot && python e2e_smoke.py     # живая JVM + агент + relay + watchdog

Дальнейшие планы — в PingCore-plan.md.

About

pingcore - Java agent

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages