Настройка ротации логов Bedrock сервера: различия между версиями
Admin (обсуждение | вклад) Новая страница: «= Настройка ротации логов Bedrock сервера = == 1. Подготовка == * Убедитесь, что Bedrock сервер уста…» |
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026 |
||
| Строка 6: | Строка 6: | ||
* Имейте права доступа для настройки logrotate и работы с логами. | * Имейте права доступа для настройки logrotate и работы с логами. | ||
* Рекомендуется использовать Ubuntu 24.04 LTS. | * Рекомендуется использовать Ubuntu 24.04 LTS. | ||
* Проверьте текущее расположение логов: | * Проверьте текущее расположение логов: <code>/opt/bedrock/logs/</code> | ||
== 2. Проверка текущих логов == | == 2. Проверка текущих логов == | ||
| Строка 118: | Строка 118: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
LOG_DIR="/opt/bedrock/logs" | LOG_DIR="/opt/bedrock/logs" | ||
| Строка 125: | Строка 125: | ||
RETENTION_DAYS=30 | RETENTION_DAYS=30 | ||
# Функция логирования | |||
log_message() { | log_message() { | ||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | ||
| Строка 132: | Строка 132: | ||
log_message "Starting log rotation..." | log_message "Starting log rotation..." | ||
# Создание директории для бэкапов | |||
mkdir -p "$BACKUP_DIR" | mkdir -p "$BACKUP_DIR" | ||
# Ротация latest.log | |||
if [ -f "$LOG_DIR/latest.log" ]; then | if [ -f "$LOG_DIR/latest.log" ]; then | ||
LOG_SIZE=$(stat -f%z "$LOG_DIR/latest.log" 2>/dev/null || stat -c%s "$LOG_DIR/latest.log") | LOG_SIZE=$(stat -f%z "$LOG_DIR/latest.log" 2>/dev/null || stat -c%s "$LOG_DIR/latest.log") | ||
# Ротация если файл больше 100MB | |||
if [ "$LOG_SIZE" -gt 104857600 ]; then | if [ "$LOG_SIZE" -gt 104857600 ]; then | ||
log_message "Rotating latest.log (size: $(du -h "$LOG_DIR/latest.log" | cut -f1))" | log_message "Rotating latest.log (size: $(du -h "$LOG_DIR/latest.log" | cut -f1))" | ||
# Архивирование | |||
gzip -c "$LOG_DIR/latest.log" > "$BACKUP_DIR/latest-$DATE.log.gz" | gzip -c "$LOG_DIR/latest.log" > "$BACKUP_DIR/latest-$DATE.log.gz" | ||
# Очистка текущего лога | |||
> "$LOG_DIR/latest.log" | > "$LOG_DIR/latest.log" | ||
# Перезагрузка сервиса для создания нового лога | |||
systemctl reload minecraft-bedrock 2>/dev/null || true | systemctl reload minecraft-bedrock 2>/dev/null || true | ||
| Строка 158: | Строка 158: | ||
fi | fi | ||
# Ротация других логов | |||
for log_file in "$LOG_DIR"/*.log; do | for log_file in "$LOG_DIR"/*.log; do | ||
if [ -f "$log_file" ] && [ "$(basename "$log_file")" != "latest.log" ]; then | if [ -f "$log_file" ] && [ "$(basename "$log_file")" != "latest.log" ]; then | ||
| Строка 172: | Строка 172: | ||
done | done | ||
# Удаление старых бэкапов | |||
log_message "Cleaning up old backups (older than $RETENTION_DAYS days)..." | log_message "Cleaning up old backups (older than $RETENTION_DAYS days)..." | ||
find "$BACKUP_DIR" -name "*.gz" -mtime +$RETENTION_DAYS -delete | find "$BACKUP_DIR" -name "*.gz" -mtime +$RETENTION_DAYS -delete | ||
# Подсчет | |||
BACKUP_COUNT=$(find "$BACKUP_DIR" -name "*.gz" | wc -l) | BACKUP_COUNT=$(find "$BACKUP_DIR" -name "*.gz" | wc -l) | ||
TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1) | TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1) | ||
| Строка 236: | Строка 236: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
LOG_DIR="/opt/bedrock/logs" | LOG_DIR="/opt/bedrock/logs" | ||
| Строка 258: | Строка 258: | ||
} | } | ||
# Проверка всех логов | |||
for log_file in "$LOG_DIR"/*.log; do | for log_file in "$LOG_DIR"/*.log; do | ||
if [ -f "$log_file" ]; then | if [ -f "$log_file" ]; then | ||
| Строка 265: | Строка 265: | ||
done | done | ||
# Общий размер | |||
TOTAL_SIZE=$(du -sh "$LOG_DIR" | cut -f1) | TOTAL_SIZE=$(du -sh "$LOG_DIR" | cut -f1) | ||
echo "Total logs size: $TOTAL_SIZE"</pre> | echo "Total logs size: $TOTAL_SIZE"</pre> | ||
| Строка 278: | Строка 278: | ||
<pre>0 * * * * /usr/local/bin/bedrock-log-monitor.sh >> /var/log/bedrock-log-monitor.log 2>&1</pre> | <pre>0 * * * * /usr/local/bin/bedrock-log-monitor.sh >> /var/log/bedrock-log-monitor.log 2>&1</pre> | ||
== 8. Архивация логов | == 8. Архивация логов == | ||
=== Создание архива === | === Создание архива === | ||
| Строка 286: | Строка 286: | ||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
<pre> | <pre>#!/bin/bash | ||
LOG_DIR="/opt/bedrock/logs" | LOG_DIR="/opt/bedrock/logs" | ||
| Строка 295: | Строка 295: | ||
mkdir -p "$ARCHIVE_DIR" | mkdir -p "$ARCHIVE_DIR" | ||
# Архивация за предыдущий месяц | |||
LAST_MONTH=$(date -d "last month" +%Y%m) | LAST_MONTH=$(date -d "last month" +%Y%m) | ||
ARCHIVE_FILE="$ARCHIVE_DIR/logs-$LAST_MONTH.tar.gz" | ARCHIVE_FILE="$ARCHIVE_DIR/logs-$LAST_MONTH.tar.gz" | ||
| Строка 307: | Строка 307: | ||
echo "Archive created: $ARCHIVE_FILE" | echo "Archive created: $ARCHIVE_FILE" | ||
# Удаление заархивированных файлов | |||
find "$LOG_DIR" -name "*.log.gz" -mtime +30 -delete | find "$LOG_DIR" -name "*.log.gz" -mtime +30 -delete | ||
fi | fi | ||
# Удаление старых архивов | |||
find "$ARCHIVE_DIR" -name "*.tar.gz" -mtime +$((RETENTION_MONTHS * 30)) -delete | find "$ARCHIVE_DIR" -name "*.tar.gz" -mtime +$((RETENTION_MONTHS * 30)) -delete | ||
| Строка 322: | Строка 322: | ||
<pre>0 3 1 * * /usr/local/bin/bedrock-log-archive.sh</pre> | <pre>0 3 1 * * /usr/local/bin/bedrock-log-archive.sh</pre> | ||
== 9. Просмотр ротированных логов | == 9. Просмотр ротированных логов == | ||
=== Распаковка и просмотр === | === Распаковка и просмотр === | ||
| Строка 339: | Строка 339: | ||
grep -i "error" latest-20240101.log</pre> | grep -i "error" latest-20240101.log</pre> | ||
== 10. Интеграция с системным логированием | == 10. Интеграция с системным логированием == | ||
=== Перенаправление в journald === | === Перенаправление в journald === | ||
| Строка 356: | Строка 356: | ||
sudo journalctl -u minecraft-bedrock --since "1 hour ago"</pre> | sudo journalctl -u minecraft-bedrock --since "1 hour ago"</pre> | ||
== 11. Устранение неполадок | == 11. Устранение неполадок == | ||
=== Проблемы с ротацией === | === Проблемы с ротацией === | ||
| Строка 379: | Строка 379: | ||
Настройка ротации логов Bedrock сервера обеспечивает эффективное управление логами и предотвращает заполнение диска. Правильная конфигурация logrotate и автоматическая ротация сохранят место на диске и упростят анализ логов. | Настройка ротации логов Bedrock сервера обеспечивает эффективное управление логами и предотвращает заполнение диска. Правильная конфигурация logrotate и автоматическая ротация сохранят место на диске и упростят анализ логов. | ||
'''Для размещения ваших Bedrock серверов на надежном хостинге рекомендуем воспользоваться услугами [ | '''Для размещения ваших Bedrock серверов на надежном хостинге рекомендуем воспользоваться услугами [https://ark-hoster.ru ARK-HOSTER.RU]:''' | ||
* '''[ | * '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' - для высоконагруженных Bedrock серверов | ||
* '''[ | * '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' - для небольших и средних серверов | ||
Наши специалисты помогут с настройкой ротации логов на Bedrock серверах! | Наши специалисты помогут с настройкой ротации логов на Bedrock серверах! | ||
Текущая версия от 08:13, 14 ноября 2026
Настройка ротации логов Bedrock сервера
1. Подготовка
- Убедитесь, что Bedrock сервер установлен и работает.
- Имейте права доступа для настройки logrotate и работы с логами.
- Рекомендуется использовать Ubuntu 24.04 LTS.
- Проверьте текущее расположение логов:
/opt/bedrock/logs/
2. Проверка текущих логов
Расположение логов
1. Проверьте директорию логов:
cd /opt/bedrock ls -lah logs/
2. Типичные файлы логов:
logs/ ├── latest.log ├── content-log-*.log └── crash-reports/
3. Размер логов:
du -sh logs/ du -h logs/*.log
3. Настройка logrotate
Создание конфигурации
1. Создайте файл конфигурации:
sudo nano /etc/logrotate.d/bedrock
2. Добавьте конфигурацию:
/opt/bedrock/logs/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0644 bedrock bedrock
sharedscripts
postrotate
systemctl reload minecraft-bedrock > /dev/null 2>&1 || true
endscript
}
3. Проверьте синтаксис:
sudo logrotate -d /etc/logrotate.d/bedrock
Параметры logrotate
1. daily - ротация каждый день 2. weekly - ротация раз в неделю 3. monthly - ротация раз в месяц 4. rotate N - количество сохраняемых файлов 5. compress - сжатие старых логов 6. delaycompress - сжатие не сразу 7. notifempty - не ротировать пустые файлы 8. create - создавать новые файлы с указанными правами
Примеры конфигураций
1. Ежедневная ротация с сохранением 14 дней:
/opt/bedrock/logs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0644 bedrock bedrock
sharedscripts
postrotate
systemctl reload minecraft-bedrock > /dev/null 2>&1 || true
endscript
}
2. Еженедельная ротация с сохранением 4 недель:
/opt/bedrock/logs/*.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 0644 bedrock bedrock
sharedscripts
postrotate
systemctl reload minecraft-bedrock > /dev/null 2>&1 || true
endscript
}
3. Ежедневная ротация с сжатием и отправкой на удаленный сервер:
/opt/bedrock/logs/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0644 bedrock bedrock
sharedscripts
postrotate
systemctl reload minecraft-bedrock > /dev/null 2>&1 || true
rsync -av /opt/bedrock/logs/*.gz backup-server:/backup/bedrock-logs/ || true
endscript
}
4. Ручная ротация логов
Создание скрипта
1. Создайте скрипт:
sudo nano /usr/local/bin/bedrock-log-rotate.sh
2. Добавьте содержимое:
#!/bin/bash
LOG_DIR="/opt/bedrock/logs"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/bedrock-logs"
RETENTION_DAYS=30
# Функция логирования
log_message() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
log_message "Starting log rotation..."
# Создание директории для бэкапов
mkdir -p "$BACKUP_DIR"
# Ротация latest.log
if [ -f "$LOG_DIR/latest.log" ]; then
LOG_SIZE=$(stat -f%z "$LOG_DIR/latest.log" 2>/dev/null || stat -c%s "$LOG_DIR/latest.log")
# Ротация если файл больше 100MB
if [ "$LOG_SIZE" -gt 104857600 ]; then
log_message "Rotating latest.log (size: $(du -h "$LOG_DIR/latest.log" | cut -f1))"
# Архивирование
gzip -c "$LOG_DIR/latest.log" > "$BACKUP_DIR/latest-$DATE.log.gz"
# Очистка текущего лога
> "$LOG_DIR/latest.log"
# Перезагрузка сервиса для создания нового лога
systemctl reload minecraft-bedrock 2>/dev/null || true
log_message "latest.log rotated successfully"
else
log_message "latest.log size OK: $(du -h "$LOG_DIR/latest.log" | cut -f1)"
fi
fi
# Ротация других логов
for log_file in "$LOG_DIR"/*.log; do
if [ -f "$log_file" ] && [ "$(basename "$log_file")" != "latest.log" ]; then
FILE_SIZE=$(stat -f%z "$log_file" 2>/dev/null || stat -c%s "$log_file")
if [ "$FILE_SIZE" -gt 52428800 ]; then
log_message "Rotating $(basename "$log_file")"
gzip -c "$log_file" > "$BACKUP_DIR/$(basename "$log_file")-$DATE.gz"
> "$log_file"
fi
fi
done
# Удаление старых бэкапов
log_message "Cleaning up old backups (older than $RETENTION_DAYS days)..."
find "$BACKUP_DIR" -name "*.gz" -mtime +$RETENTION_DAYS -delete
# Подсчет
BACKUP_COUNT=$(find "$BACKUP_DIR" -name "*.gz" | wc -l)
TOTAL_SIZE=$(du -sh "$BACKUP_DIR" | cut -f1)
log_message "Rotation completed. Backups: $BACKUP_COUNT, Total size: $TOTAL_SIZE"
3. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-log-rotate.sh
4. Тестирование:
sudo /usr/local/bin/bedrock-log-rotate.sh
5. Настройка автоматической ротации
Через cron
1. Добавьте в crontab:
sudo crontab -e
2. Ежедневная ротация в 2:00:
0 2 * * * /usr/local/bin/bedrock-log-rotate.sh >> /var/log/bedrock-logrotate.log 2>&1
3. Ротация каждые 6 часов:
0 */6 * * * /usr/local/bin/bedrock-log-rotate.sh >> /var/log/bedrock-logrotate.log 2>&1
Через logrotate
1. Проверьте запуск logrotate:
sudo logrotate -f /etc/logrotate.d/bedrock
2. Автоматический запуск через systemd timer (если нужно):
sudo systemctl enable logrotate.timer sudo systemctl start logrotate.timer
6. Ротация crash-reports
Настройка ротации отчетов о крашах
1. Добавьте в logrotate:
sudo nano /etc/logrotate.d/bedrock-crash
2. Добавьте конфигурацию:
/opt/bedrock/crash-reports/*.txt {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 0644 bedrock bedrock
}
7. Мониторинг размера логов
Скрипт мониторинга
1. Создайте скрипт:
sudo nano /usr/local/bin/bedrock-log-monitor.sh
2. Добавьте содержимое:
#!/bin/bash
LOG_DIR="/opt/bedrock/logs"
WARNING_SIZE=1073741824
CRITICAL_SIZE=2147483648
check_log_size() {
local file="$1"
local size=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file")
if [ "$size" -gt "$CRITICAL_SIZE" ]; then
echo "CRITICAL: $file is $(du -h "$file" | cut -f1) - immediate rotation needed!"
return 2
elif [ "$size" -gt "$WARNING_SIZE" ]; then
echo "WARNING: $file is $(du -h "$file" | cut -f1) - consider rotation"
return 1
else
echo "OK: $file is $(du -h "$file" | cut -f1)"
return 0
fi
}
# Проверка всех логов
for log_file in "$LOG_DIR"/*.log; do
if [ -f "$log_file" ]; then
check_log_size "$log_file"
fi
done
# Общий размер
TOTAL_SIZE=$(du -sh "$LOG_DIR" | cut -f1)
echo "Total logs size: $TOTAL_SIZE"
3. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-log-monitor.sh
4. Добавьте в cron (каждый час):
sudo crontab -e
5. Добавьте задачу:
0 * * * * /usr/local/bin/bedrock-log-monitor.sh >> /var/log/bedrock-log-monitor.log 2>&1
8. Архивация логов
Создание архива
1. Создайте скрипт архивации:
sudo nano /usr/local/bin/bedrock-log-archive.sh
2. Добавьте содержимое:
#!/bin/bash
LOG_DIR="/opt/bedrock/logs"
ARCHIVE_DIR="/backup/bedrock-logs-archive"
DATE=$(date +%Y%m%d)
RETENTION_MONTHS=6
mkdir -p "$ARCHIVE_DIR"
# Архивация за предыдущий месяц
LAST_MONTH=$(date -d "last month" +%Y%m)
ARCHIVE_FILE="$ARCHIVE_DIR/logs-$LAST_MONTH.tar.gz"
if [ ! -f "$ARCHIVE_FILE" ]; then
echo "Creating archive for $LAST_MONTH..."
tar -czf "$ARCHIVE_FILE" -C "$LOG_DIR" \
--exclude="latest.log" \
*.log.gz *.log 2>/dev/null
echo "Archive created: $ARCHIVE_FILE"
# Удаление заархивированных файлов
find "$LOG_DIR" -name "*.log.gz" -mtime +30 -delete
fi
# Удаление старых архивов
find "$ARCHIVE_DIR" -name "*.tar.gz" -mtime +$((RETENTION_MONTHS * 30)) -delete
echo "Archiving completed"
3. Сделайте исполняемым:
sudo chmod +x /usr/local/bin/bedrock-log-archive.sh
4. Добавьте в cron (ежемесячно):
0 3 1 * * /usr/local/bin/bedrock-log-archive.sh
9. Просмотр ротированных логов
Распаковка и просмотр
1. Просмотр сжатых логов:
zcat /backup/bedrock-logs/latest-20240101.log.gz | tail -50 zless /backup/bedrock-logs/latest-20240101.log.gz
2. Поиск в сжатых логах:
zgrep -i "error" /backup/bedrock-logs/*.gz zgrep -i "player.*connected" /backup/bedrock-logs/*.gz
3. Распаковка для детального анализа:
cd /tmp zcat /backup/bedrock-logs/latest-20240101.log.gz > latest-20240101.log grep -i "error" latest-20240101.log
10. Интеграция с системным логированием
Перенаправление в journald
1. Настройка systemd для логирования:
sudo nano /etc/systemd/system/minecraft-bedrock.service
2. Добавьте настройки логирования:
[Service] StandardOutput=journal StandardError=journal SyslogIdentifier=minecraft-bedrock
3. Просмотр логов через journalctl:
sudo journalctl -u minecraft-bedrock -f sudo journalctl -u minecraft-bedrock --since "1 hour ago"
11. Устранение неполадок
Проблемы с ротацией
1. Логи не ротируются:
- Проверьте права доступа к файлам
- Проверьте синтаксис logrotate:
sudo logrotate -d /etc/logrotate.d/bedrock
- Запустите вручную:
sudo logrotate -f /etc/logrotate.d/bedrock
2. Логи растут слишком быстро:
- Уменьшите период ротации (daily → hourly для очень активных серверов)
- Проверьте настройки логирования в server.properties
- Рассмотрите отключение content-log-file-enabled
3. Недостаточно места на диске:
- Уменьшите RETENTION_DAYS
- Увеличьте сжатие (compress)
- Переместите архивы на другой диск
Заключение
Настройка ротации логов Bedrock сервера обеспечивает эффективное управление логами и предотвращает заполнение диска. Правильная конфигурация logrotate и автоматическая ротация сохранят место на диске и упростят анализ логов.
Для размещения ваших Bedrock серверов на надежном хостинге рекомендуем воспользоваться услугами ARK-HOSTER.RU:
- Выделенные серверы - для высоконагруженных Bedrock серверов
- VPS/VDS серверы - для небольших и средних серверов
Наши специалисты помогут с настройкой ротации логов на Bedrock серверах!