Настройка логирования и модерации Bedrock сервера

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск

Настройка логирования и модерации Bedrock сервера

1. Подготовка

  • Убедитесь, что Bedrock сервер установлен и работает.
  • Имейте права доступа для редактирования конфигурационных файлов.
  • Рекомендуется использовать Ubuntu 24.04 LTS.
  • Установите необходимые инструменты для анализа логов.

2. Настройка логирования в server.properties

Базовые настройки

1. Отредактируйте конфигурацию:

cd /opt/bedrock
nano server.properties

2. Настройки логирования:

\# Логирование контента (если доступно)
content-log-file-enabled=false
\# true - логировать загружаемый контент
\# false - не логировать

Включение детального логирования

1. Для отладки включите логирование:

content-log-file-enabled=true

2. Для продакшн серверов:

content-log-file-enabled=false

3. Структура логов

Расположение логов

1. Основная директория логов:

cd /opt/bedrock
ls -lah logs/

2. Типичные файлы:

logs/
├── latest.log          \# Текущий лог сервера
├── content-log-*.log   \# Логи контента (если включено)
└── crash-reports/      \# Отчеты о крашах

3. Просмотр логов:

tail -f logs/latest.log
cat logs/latest.log | less

4. Анализ логов =

Поиск событий

1. Подключения игроков:

grep -i "connected" logs/latest.log
grep -i "player.*joined" logs/latest.log

2. Отключения игроков:

grep -i "disconnected" logs/latest.log
grep -i "player.*left" logs/latest.log

3. Команды игроков:

grep -i "command" logs/latest.log
grep -i "executed.*command" logs/latest.log

4. Ошибки:

grep -i "error\|exception\|failed" logs/latest.log | tail -50

5. События сервера:

grep -i "server.*start\|server.*stop" logs/latest.log

Создание скрипта анализа

1. Создайте скрипт:

sudo nano /usr/local/bin/bedrock-log-analyzer.sh

2. Добавьте содержимое:

\#!/bin/bash

LOG_FILE="/opt/bedrock/logs/latest.log"
REPORT_FILE="/var/log/bedrock-analysis-$(date +%Y%m%d).log"

echo "=== Bedrock Server Log Analysis ===" > "$REPORT_FILE"
echo "Date: $(date)" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"

\# Статистика подключений
echo "=== Player Connections ===" >> "$REPORT_FILE"
CONNECTIONS=$(grep -i "connected\|joined" "$LOG_FILE" | wc -l)
echo "Total connections: $CONNECTIONS" >> "$REPORT_FILE"
grep -i "connected\|joined" "$LOG_FILE" | tail -20 >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"

\# Статистика команд
echo "=== Commands Executed ===" >> "$REPORT_FILE"
COMMANDS=$(grep -i "command" "$LOG_FILE" | wc -l)
echo "Total commands: $COMMANDS" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"

\# Ошибки
echo "=== Errors ===" >> "$REPORT_FILE"
ERRORS=$(grep -i "error\|exception" "$LOG_FILE" | wc -l)
echo "Total errors: $ERRORS" >> "$REPORT_FILE"
if [ "$ERRORS" -gt 0 ]; then
    grep -i "error\|exception" "$LOG_FILE" | tail -20 >> "$REPORT_FILE"
fi
echo "" >> "$REPORT_FILE"

\# Активные игроки
echo "=== Active Players ===" >> "$REPORT_FILE"
grep -i "player" "$LOG_FILE" | grep -v "disconnected" | tail -10 >> "$REPORT_FILE"

cat "$REPORT_FILE"

3. Сделайте исполняемым:

sudo chmod +x /usr/local/bin/bedrock-log-analyzer.sh

5. Система модерации =

Настройка permissions.json

1. Назначьте права модераторам:

cd /opt/bedrock
nano permissions.json

2. Добавьте модераторов:

[
  {
    "permission": "operator",
    "xuid": "1234567890123456"
  },
  {
    "permission": "operator",
    "xuid": "2345678901234567"
  }
]

Команды модерации

1. Кик игрока:

screen -r minecraft-bedrock
kick PlayerName [причина]

2. Бан игрока:

ban PlayerName [причина]

3. Разбан игрока:

pardon PlayerName

4. Временный бан (через скрипт):

sudo nano /usr/local/bin/bedrock-temp-ban.sh

5. Добавьте содержимое:

\#!/bin/bash

PLAYER="$1"
DURATION="${2:-3600}"  \# По умолчанию 1 час

if [ -z "$PLAYER" ]; then
    echo "Usage: $0 <player-name> [duration-seconds]"
    exit 1
fi

\# Бан игрока
screen -S minecraft-bedrock -X stuff "ban $PLAYER$(printf \\r)"

\# Запланировать разбан через указанное время
(sleep "$DURATION" && screen -S minecraft-bedrock -X stuff "pardon $PLAYER$(printf \\r)") &

echo "Player $PLAYER banned for $DURATION seconds"

6. Автоматическая модерация =

Скрипт автоматической модерации

1. Создайте скрипт:

sudo nano /usr/local/bin/bedrock-auto-moderate.sh

2. Добавьте содержимое:

\#!/bin/bash

LOG_FILE="/opt/bedrock/logs/latest.log"
VIOLATION_LOG="/var/log/bedrock-violations.log"

\# Поиск нарушений в логах
check_violations() {
    \# Список запрещенных слов (пример)
    BAD_WORDS=("spam" "hack" "cheat")
    
    tail -100 "$LOG_FILE" | while read line; do
        for word in "${BAD_WORDS[@]}"; do
            if echo "$line" | grep -qi "$word"; then
                PLAYER=$(echo "$line" | grep -oE "Player[^:]*:\s*\w+" | awk '{print $NF}')
                if [ ! -z "$PLAYER" ]; then
                    echo "[$(date '+%Y-%m-%d %H:%M:%S')] Violation by $PLAYER: $line" >> "$VIOLATION_LOG"
                    
                    \# Автоматический кик (опционально)
                    \# screen -S minecraft-bedrock -X stuff "kick $PLAYER Bad language$(printf \\r)"
                fi
            fi
        done
    done
}

check_violations

3. Сделайте исполняемым:

sudo chmod +x /usr/local/bin/bedrock-auto-moderate.sh

4. Добавьте в cron (каждые 5 минут):

*/5 * * * * /usr/local/bin/bedrock-auto-moderate.sh

7. Мониторинг действий игроков =

Логирование действий

1. Создайте скрипт мониторинга:

sudo nano /usr/local/bin/bedrock-activity-monitor.sh

2. Добавьте содержимое:

\#!/bin/bash

LOG_FILE="/opt/bedrock/logs/latest.log"
ACTIVITY_LOG="/var/log/bedrock-activity.log"

\# Мониторинг действий игроков
monitor_activity() {
    tail -f "$LOG_FILE" | while read line; do
        \# Подключения
        if echo "$line" | grep -qi "connected\|joined"; then
            PLAYER=$(echo "$line" | grep -oE "\w+" | tail -1)
            echo "[$(date '+%Y-%m-%d %H:%M:%S')] JOIN: $PLAYER" >> "$ACTIVITY_LOG"
        fi
        
        \# Отключения
        if echo "$line" | grep -qi "disconnected\|left"; then
            PLAYER=$(echo "$line" | grep -oE "\w+" | tail -1)
            echo "[$(date '+%Y-%m-%d %H:%M:%S')] LEAVE: $PLAYER" >> "$ACTIVITY_LOG"
        fi
        
        \# Команды
        if echo "$line" | grep -qi "executed.*command"; then
            echo "[$(date '+%Y-%m-%d %H:%M:%S')] COMMAND: $line" >> "$ACTIVITY_LOG"
        fi
    done
}

monitor_activity

8. Отчеты и статистика =

Ежедневный отчет

1. Создайте скрипт отчетов:

sudo nano /usr/local/bin/bedrock-daily-report.sh

2. Добавьте содержимое:

\#!/bin/bash

LOG_FILE="/opt/bedrock/logs/latest.log"
REPORT_FILE="/var/log/bedrock-daily-report-$(date +%Y%m%d).txt"

echo "=== Bedrock Server Daily Report ===" > "$REPORT_FILE"
echo "Date: $(date)" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"

\# Статистика за последние 24 часа
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

\# Уникальные игроки
UNIQUE_PLAYERS=$(grep -i "connected\|joined" "$LOG_FILE" | \
    grep -oE "Player[^:]*:\s*\w+" | \
    awk '{print $NF}' | \
    sort -u | wc -l)

echo "Unique players (last 24h): $UNIQUE_PLAYERS" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"

\# Общее количество подключений
TOTAL_CONNECTIONS=$(grep -i "connected\|joined" "$LOG_FILE" | wc -l)
echo "Total connections: $TOTAL_CONNECTIONS" >> "$REPORT_FILE"
echo "" >> "$REPORT_FILE"

\# Ошибки
ERRORS=$(grep -i "error\|exception" "$LOG_FILE" | wc -l)
echo "Total errors: $ERRORS" >> "$REPORT_FILE"

\# Отправка отчета (опционально)
\# mail -s "Bedrock Daily Report" admin@example.com < "$REPORT_FILE"

cat "$REPORT_FILE"

3. Добавьте в cron (ежедневно в 23:59):

59 23 * * * /usr/local/bin/bedrock-daily-report.sh

9. Интеграция с системами модерации =

Webhook для нарушений

1. Создайте скрипт отправки уведомлений:

sudo nano /usr/local/bin/bedrock-violation-webhook.sh

2. Добавьте содержимое:

\#!/bin/bash

WEBHOOK_URL="https://discord.com/api/webhooks/YOUR_WEBHOOK_URL"
VIOLATION="$1"
PLAYER="$2"

curl -H "Content-Type: application/json" \
     -X POST \
     -d "{\"content\": \"⚠️ Violation detected! Player: $PLAYER, Reason: $VIOLATION\"}" \
     "$WEBHOOK_URL"

10. Устранение неполадок =

Проблемы с логами

1. Логи не создаются:

  • Проверьте права доступа к директории logs/
  • Проверьте настройки в server.properties

2. Логи растут слишком быстро:

  • Настройте ротацию логов
  • Отключите content-log-file-enabled

3. Не могу найти события в логах:

  • Используйте grep с правильными паттернами
  • Проверьте формат логов Bedrock сервера

Заключение

Настройка логирования и модерации Bedrock сервера обеспечивает эффективное управление сервером и контроль действий игроков. Правильная настройка логирования и автоматизация модерации значительно упростит управление сервером.

Для размещения ваших Bedrock серверов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой логирования и модерации на Bedrock серверах!