Проект

Общее

Профиль

Запуск, останов, журналирование сервера

Choose a language: RU | EN | ZH

Table of contents

Разрешаем автозапуск сервера во время загрузки ОС:

$ systemctl enable tegu.service

Эта команда создает символическую ссылку на копию файла сервиса в /etc/systemd/system/tegu.service в точке на диске, где systemd ищет файлы для автозапуска, а также обновляет конфигурацию systemd. Помните, что вы должны обновлять конфигурацию systemd всякий раз, когда меняете конфигурацию в файле /etc/systemd/system/tegu.service. Обновление выполняется командой sudo systemctl reload tegu.service

Запуск сервера вручную:

$ systemctl start tegu.service

Останов сервера вручную:

$ systemctl start tegu.service

Контролируем запуск сервиса (статус сервиса):

$ systemctl status tegu.service

Правильно работающий сервер возвращает примерно такое:

● tegu.service - Tegu. MBK-Lab Mail Server
     Loaded: loaded (/etc/systemd/system/tegu.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-04-11 13:58:09 MSK; 50min ago
   Main PID: 88519 (tegu)
      Tasks: 9 (limit: 9357)
     Memory: 3.3M
     CGroup: /system.slice/tegu.service
             └─88519 /opt/tegu/sbin/tegu

Журналирование работы сервера

По умолчанию сервер ведет краткую версию журнала (log)
Для включения подробного лога необходимо установить параметру "debug" значение "true" в конфигурационном файле:

debug = true

Конфигурационный файл может находиться в каталогах:

  • /etc/tegu.conf
  • ~/tegu.conf (например, /var/mail/tegu.conf)

Включил журналирование, контролируем поведение сервера:

journalctl -f -u tegu -n 200 -a

Лог за весь день

journalctl -u tegu -a --since today > tegu.log

Если нас интересуют какие то конкретные события, используем дополнительно команду grep

journalctl -u tegu.service --since today | grep billing@profintel.ru

Дополнительные подсказки.

С определенной даты и времени:

journalctl --since "2020-12-18 06:00:00"

С определенной даты и по определенное дату и время:

journalctl --since "2020-12-17" --until "2020-12-18 10:00:00

Со вчерашнего дня:

journalctl --since yesterday

С 9 утра и до момента, час назад:

journalctl --since 09:00 --until "1 hour ago"

Так как мы работаем через journalctl, речь идет о системном журнале systemd-journald.

  1. В каком файле хранится лог:

Физически логи лежат в бинарном формате в директории /var/log/journal/ (обычно в /var/log/journal/<имя_хоста>/system.journal).
Это общий файл для всех сервисов.

Важно: Увидеть там только логи tegu в сыром виде нельзя, для этого и используется фильтр командой journalctl -u tegu

  1. Как долго хранится журнал лога:

По умолчанию systemd хранит логи до 1 года или пока размер файлов не достигнет 100 МБ (настройки в файле /etc/systemd/journald.conf).
если в настройках выставить параметр MaxRetentionSec=infinity то журнал будет храниться вечно, пока есть место на диске.

  1. Как очистить (если нужно освободить место):

Удалять файлы вручную в папке /var/log/journal/ не рекомендуется (можно сломать права доступа).

Очищать нужно специальной командой:

Очистить логи старше 1 дня:
journalctl --vacuum-time=1d
Очистить, оставив только 100 Мб данных:
journalctl --vacuum-size=100M

Если нужно просто сохранить историю, используйте команду
journalctl -u tegu -a > /backup/tegu_log_$(date +%F).log

Новый параметр crushReportsCount сохраняет отчёты о критических сбоях сервера.

crushReportsCount - количество последних отчётов, которые будут сохранены. Ранее созданные будут вычищены.
По умолчанию в конфиге выставлен параметр 10.

папка с отчётами
{dataDir}/crash_reports - создается автоматически.

Проверка занятых сетевых портов

Проверить занимаемые программой порты можно командой:

netstat -tulpn | grep tegu