Как просмотреть логи сервера

Введение

Просмотр логов — базовый навык для администратора Minecraft-сервера на proxify.cloud. Логи показывают ошибки плагинов, краши, действия игроков и производительность. На выделенном сервере с Ubuntu логи могут находиться в нескольких местах в зависимости от способа запуска: systemd-сервис, screen/tmux, Docker или прямой запуск jar-файла. В инструкции рассмотрены все варианты.


1. Подключение к серверу через панель proxify.cloud

1.1. Вход в панель управления

  1. Откройте https://proxify.cloud и авторизуйтесь.
  2. В списке услуг выберите нужный выделенный сервер.
  3. Нажмите кнопку Управление (Manage) — откроется панель Proxmox VE.

1.2. Доступ к консоли Ubuntu

В Proxmox VE:

  1. В левом дереве выберите вашу виртуальную машину (обычно 100 или похожий ID).
  2. Перейдите на вкладку Console (Консоль).
  3. Нажмите noVNC или xterm.js — откроется терминал прямо в браузере.
  4. Авторизуйтесь под пользователем root или созданным при установке пользователем (обычно ubuntu или minecraft).

Совет: Для постоянной работы удобнее использовать SSH. См. шаг 2.


2. Подключение по SSH (рекомендуемый способ)

2.1. Получение IP-адреса

В панели proxify.cloud на странице сервера найдите Основной IPv4-адрес (Public IP). Пример: 185.123.45.67.

2.2. Подключение из терминала

ssh root@185.123.45.67
# или, если пользователь minecraft:
ssh minecraft@185.123.45.67

При первом подключении подтвердите отпечаток ключа (yes). Введите пароль или используйте SSH-ключ (настраивается в панели proxify.cloud → SSH Keys).

2.3. Переключение на пользователя minecraft (если зашли под root)

su - minecraft

Все дальнейшие команды выполняйте от имени пользователя, под которым запущен сервер.


3. Определение способа запуска сервера

Перед поиском логов выясните, как запущен сервер:

# Проверка systemd-сервисов
systemctl list-units --type=service | grep -i minecraft

# Проверка screen-сессий
screen -ls

# Проверка tmux-сессий
tmux list-sessions

# Проверка Docker-контейнеров
docker ps | grep -i minecraft

# Проверка запущенных java-процессов
ps aux | grep java

Типичные варианты:

  • systemd — сервис minecraft.service или mc-server.service
  • screen — сессия с именем mc, minecraft, server
  • tmux — сессия mc
  • Docker — контейнер itzg/minecraft-server или кастомный
  • Прямой запускjava -jar server.jar в фоне (nohup, &)

4. Просмотр логов для systemd-сервиса

4.1. Основные команды journalctl

Если сервер запущен через systemd (стандарт для Ubuntu на proxify.cloud):

# Просмотр последних 100 строк логов
journalctl -u minecraft -n 100 --no-pager

# Следить за логами в реальном времени (Ctrl+C для выхода)
journalctl -u minecraft -f

# Логи за сегодня
journalctl -u minecraft --since today

# Логи за последний час
journalctl -u minecraft --since "1 hour ago"

# Только ошибки (priority 3=error, 2=crit, 1=alert, 0=emerg)
journalctl -u minecraft -p 3 -n 50

# Сохранить логи в файл для анализа
journalctl -u minecraft --since "2 hours ago" > ~/minecraft_logs_$(date +%F_%H-%M).txt

4.2. Настройка постоянного хранения логов

По умолчанию journald хранит логи в памяти. Для сохранения после перезагрузки:

sudo mkdir -p /etc/systemd/journald.conf.d
sudo tee /etc/systemd/journald.conf.d/99-persistent.conf <<'EOF'
[Journal]
Storage=persistent
SystemMaxUse=500M
RuntimeMaxUse=200M
EOF
sudo systemctl restart systemd-journald

Теперь логи сохранятся в /var/log/journal/.


5. Просмотр логов в screen-сессии

5.1. Подключение к существующей сессии

# Список сессий
screen -ls

# Пример вывода:
# There is a screen on:
#     12345.minecraft    (Detached)
# 1 Socket in /run/screen/S-minecraft.

# Подключение
screen -r minecraft
# или по PID:
screen -r 12345

5.2. Работа внутри screen

  • Прокрутка истории: Ctrl+A, затем Esc — войдёте в режим копирования. Стрелки вверх/вниз, PgUp/PgDown для навигации. Esc — выход.
  • Поиск в истории: Ctrl+A, Esc, затем Ctrl+S (прямой поиск) или Ctrl+R (обратный). Введите текст, Enter.
  • Отсоединение от сессии (оставить сервер работать): Ctrl+A, затем D.

5.3. Логирование screen в файл (включите заранее)

В .screenrc пользователя minecraft:

cat >> ~/.screenrc <<'EOF'
logfile /home/minecraft/logs/screenlog_%Y%m%d_%n.log
deflog on
log on
EOF

Теперь каждый screen будет писать лог в ~/logs/screenlog_<дата>_<номер>.log.

5.4. Просмотр сохранённых screen-логов

tail -n 200 ~/logs/screenlog_$(date +%Y%m%d)_*.log
less ~/logs/screenlog_20250115_0.log

6. Просмотр логов в tmux-сессии

6.1. Подключение

tmux list-sessions
tmux attach -t mc
# или
tmux attach -t 0

6.2. Прокрутка истории

  • Ctrl+B, затем [ — вход в режим копирования.
  • Стрелки, PgUp/PgDown, q — выход.
  • Поиск: в режиме копирования нажмите Ctrl+S (вниз) или Ctrl+R (вверх).

6.3. Логирование tmux (включите в конфиге)

cat >> ~/.tmux.conf <<'EOF'
set -g history-limit 50000
bind-key P pipe-pane -o "cat >> ~/logs/tmux_#S_#I_#P_$(date +%Y%m%d).log" \; display-message "Logging started"
bind-key p pipe-pane \; display-message "Logging stopped"
EOF
tmux source-file ~/.tmux.conf

Внутри сессии: Ctrl+B, Shift+P — начать запись лога в ~/logs/.


7. Просмотр логов Docker-контейнера

7.1. Основные команды

# Список контейнеров
docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"

# Логи контейнера (последние 200 строк)
docker logs --tail 200 minecraft-server

# Следить в реальном времени
docker logs -f minecraft-server

# Логи за последние 30 минут
docker logs --since 30m minecraft-server

# Логи с таймстампами
docker logs -t --tail 100 minecraft-server

# Сохранить в файл
docker logs minecraft-server > ~/docker_mc_logs_$(date +%F).txt 2>&1

7.2. Если контейнер упал — логи предыдущего запуска

docker logs --tail 500 minecraft-server 2>&1 | head -n 300
# или для предыдущего экземпляра (если restart=always)
docker logs --previous minecraft-server

7.3. Доступ к файлам логов внутри контейнера

Если контейнер использует стандартный образ itzg/minecraft-server, логи лежат в /data/logs/:

# Просмотр latest.log
docker exec minecraft-server cat /data/logs/latest.log

# Просмотр всех логов
docker exec minecraft-server ls -la /data/logs/

# Копирование на хост
docker cp minecraft-server:/data/logs ~/docker_logs_backup

8. Просмотр логов при прямом запуске (java -jar)

8.1. Стандартные файлы логов Paper/Spigot/Purpur

При запуске в папке сервера создаются:

  • logs/latest.log — основной лог текущей сессии
  • logs/YYYY-MM-DD-<номер>.log.gz — архивированные прошлые сессии
  • logs/latest.log.1, .2 — ротация (зависит от log4j2.xml)
cd /home/minecraft/server  # или ваш путь

# Последние 200 строк
tail -n 200 logs/latest.log

# Следить в реальном времени
tail -f logs/latest.log

# Поиск ошибок
grep -i "error\|exception\|crash\|fatal" logs/latest.log

# Просмотр архивированного лога
zcat logs/2025-01-15-1.log.gz | less

8.2. Если используется nohup

# nohup.out в папке запуска
tail -f nohup.out

8.3. Настройка log4j2.xml для лучшей ротации

Файл log4j2.xml в папке сервера (Paper/Spigot генерируют автоматически). Пример кастомного для ежедневной ротации и сжатия:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <RollingFile name="File" fileName="logs/latest.log"
                     filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout pattern="[%d{HH:mm:ss}] [%level] %logger: %msg%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30" compressionLevel="9"/>
        </RollingFile>
        <Console name="Console" target="SYSTEM