Перейти к содержанию

Как собирать серверные логи Почты

Назначение документа

В документе описаны команды, с помощью которых можно собирать серверные логи Почты. Также описано как собирать логи при возникновении ошибок.

Какие логи нужно собирать в первую очередь

При кластерной инсталляции команды ниже нужно выполнять на всех серверах и виртуальных машинах, где установлена Почта.

Посмотреть версию продукта:

curl -s localhost:8888/api/v1/products/list | jq -r .products.mail.version

Посмотреть состояние сервисов Почты:

systemctl | grep onprem

Получить неработающие сервисы Почты:

systemctl | grep onprem | grep -v run

Получить информацию о состоянии контейнеров:

docker ps -a 

Получить неработающие контейнеры:

docker ps -a | grep Exit

Посмотреть информацию о сети Почты:

docker network inspect mail-on-premise-net

Получить информацию о дисках и созданных на них разделах:

lsblk 

Посмотреть список всех файловых систем по именам устройств, занятое и свободное пространство, точки монтирования.

df -m 

Посмотреть время работы, количество текущих пользователей в системе и нагрузку за последние 1, 5 и 15 минут.

uptime

Собрать в архив сообщения ядра:

dmesg -H | gzip  > dmesg.logs.gz

Получить глобальные системные журналы ВМ:

tar -czvf messages.logs.gz  /var/log/messages*

Как собирать логи в случае ошибок

При сборе логов может быть рассмотрено 3 случая:

  1. Ошибку не получается воспроизвести.

    journalctl --utc --since="2 days ago" --no-pager -u 
    onpremise-container-* |gzip > 20230320.logs.gz
    

    Запустите команду на всех серверах, она соберет логи за последние 2 дня и сложит их в папку «2023», название папки и количество дней можно изменять.

  2. Ошибку не получается воспроизвести, но известна дата. Например, позавчера:

    journalctl --utc --since="2 days ago" --until="yesterday" --no-pager -u 
    onpremise-container-* |gzip > /tmp/`date +"%Y%m%d"`"-"`hostname`.logs.gz
    

    Запустите команду на каждом сервере.

  3. Ошибку можно воспроизвести повторно. Запустите сбор логов на каждом из серверов:

    journalctl --utc --no-pager -fu onpremise-container-* 
    |gzip > /tmp/`date +"%Y%m%d"`"-"`hostname`.logs.gz
    

    Воспроизведите ошибку и остановите сбор логов.

При проблемах с установщиком

journalctl -u deployer --no-pager | gzip > deployer.log.gz

При проблемах с панелью администатора

В этом случае нужно собрать логи контейнеров biz-celery-beat*, bizf* со всех ВМ:

journalctl -u biz-celery-beat1 --no-pager | gzip > biz-celery-beat1.log.gz
journalctl -u bizf1 --no-pager | gzip > bizf1.log.gz

При проблемах с синхронизацией писем

Если наблюдаются проблемы с синхронизацией писем между MS Exchange и Почтой, то нужно собрать логи контейнеров picker*, rimap*, mpop*:

journalctl -u picker1 --no-pager | gzip > picker1.log.gz
journalctl -u rimap1 --no-pager | gzip > rimap1.log.gz
journalctl -u mpop1 --no-pager | gzip > mpop1.log.gz

При обращении в поддержку нужно также собрать заголовки проблемных писем.

Сбор логов при проблемах с авторизацией через SSO по IMAP

В этом случае нужно собрать журналы сервисов контейнера pub-imap*. Перед тем, как воспроизводить проблему нужно:

  1. В файле /opt/mailOnPremise/dockerVolumes/pub-imapN/conf/config.yaml поменять:

    log:
      level: warn
    

    на

    log:
      level: debug
    
  2. В файле /opt/mailOnPremise/dockerVolumes/pub-imapN/conf/nginx/mail.imap.conf добавить строку:

    error_log                       /dev/stdout debug;
    

    После строки:

    access_log                      /dev/stdout all;
    
  3. Перезапустить все контейнеры pub-imap*:

    systemctl restart onpremise-container-pub-imap1
    

После этого нужно:

  1. Воспроизвести проблему.
  2. Собрать журналы сервисов onpremise-container-pub-imap* и onpremise-container-pub-imap-clauth*.
  3. Передать поддержке архив с логами сервисов.