DCImanager 6 сохраняет информацию о работе сервисов в лог-файлы. Данные из лог-файлов могут быть использованы для диагностики работы платформы. Лог-файлы хранятся в директориях /var/log докер-контейнеров.
Перечень лог-файлов
Основные лог-файлы на сервере с платформой
Лог установки платформы сохраняется в файл /opt/ispsystem/dci/install.log.
Лог-файлы операции диагностики указаны в статье Проверка работы диагностики.
Логи сервиса авторизации записываются в стандартный вывод контейнера dci_auth_back4_1.
Основные лог-файлы на сервере-локации
Работа с логами
Скопировать лог-файл из контейнера
Чтобы скопировать лог-файл из контейнера в текущую директорию, выполните команду:
docker cp <container_name>:<path_to_log> ./
docker cp dci_auth_back_1:/var/log/licupdate.log ./
Просмотр лог-файлов в контейнере
-
Перейдите в нужный контейнер:
docker exec -it <container_name> sh
Пояснения к командеПример командыdocker exec -it dci_back sh
-
Просмотрите лог-файл стандартными утилитами Linux. Например, cat, tail, less, grep и т.д.
Пример команды: Узнать когда выполнялся опрос коммутатораgrep 'Switch status start' /var/log/dci_switch_1_handler.log
-
Выйдите из контейнера:
exit
Просмотр лог-файлов через stdout
Для некоторых сервисов не создаются отдельные лог-файлы. Логи этих сервисов записываются в stdout. Чтобы просмотреть такие логи, выполните команду:
docker logs <container_name> --tail <lines> --since <period>
docker logs dci_consul_1 --tail 100 --since 60m
Сбор логов платформы
Чтобы собрать все лог-файлы платформы в одной директории:
- Подключитесь к серверу с платформой по SSH.
-
Создайте bash-скрипт getlog.sh следующего содержания:
#!/bin/bash BEGIN_DATE=$(date +'%Y-%m-%d %H:%M:%S' --date '-1 day') SINCE=${1:-${BEGIN_DATE}} /bin/echo "Remove old files" /bin/rm -rf /home/logs && /bin/mkdir -p /home/logs/container && /bin/mkdir -p /home/logs/service && /bin/cd /home/logs /bin/echo "---===Step 1/3===---" DOCKER_CONTAINER_NAMES=`journalctl --field CONTAINER_NAME` CONTAINERS=($DOCKER_CONTAINER_NAMES) /bin/echo "Get logs of the containers" for container in ${CONTAINERS[@]} do /bin/echo "Get log of the container: ${container}" /bin/journalctl --no-pager CONTAINER_NAME=${container} --since "${SINCE}" > /home/logs/container/${container}.log done /bin/echo "---===Step 2/3===---" DOCKER_SERVICES_NAMES=`journalctl --field SYSLOG_IDENTIFIER` SERVICES=($DOCKER_SERVICES_NAMES) /bin/echo "Get logs of the services" for service in ${SERVICES[@]} do /bin/echo "Get log of the service: ${service}" /bin/journalctl --no-pager SYSLOG_IDENTIFIER=${service} --since "${SINCE}" > /home/logs/service/${service}.log done /bin/echo "---===Step 3/3===---" ARCHIVE_NAME="logs_$(date +'%Y_%m_%d_%H_%M_%S').tar.gz" tar -cvzf /home/$ARCHIVE_NAME -C /home/logs . /bin/echo "Done"
Если DCImanager 6 установлена из образа в закрытом контуре, создавать скрипт getlog.sh не нужно. -
Запустите скрипт одной из команд:
Перед сбором логов скрипт удаляет все файлы из директории /home/logs/.Собрать логи за последние суткиbash getlog.sh
Собрать логи с определённой датыbash getlog.sh "YYYY-MM-DD"
Собрать логи с определённой даты и времениbash getlog.sh "YYYY-MM-DD HH:MM:SS"
Пояснения к командамСкрипт:
- Сохранит логи контейнеров в директории /home/logs/container/.
- Cохранит логи сервисов в директории /home/logs/service/.
- Создаст архив logs_<текущая_дата>_.tar.gz в директории /home/.
Логирование в journald
Настройки логирования
Платформа использует системную службу journald для сбора логов. journald собирает логи всех контейнеров, кроме dci_consul_1. Вы можете изменить уровень логирования journald: подробнее см. в статье Управление уровнями логирования.
Служба journald на сервере платформы и сервере-локации настраивается автоматически. Конфигурация службы сохраняется в файл /usr/lib/systemd/journald.conf.d/dci.conf. Если служба уже была настроена на сервере, то конфигурация, задаваемая платформой, будет иметь более высокий приоритет.
Параметры конфигурации, задаваемые платформой:
- Storage=persistent — хранить файлы на диске;
- Compress=yes — сжимать данные в логах;
- SystemMaxFileSize=500M — максимальный размер файла с логами — 500 Мб. При достижении этого значения выполняется ротация логов;
- SystemMaxUse=20G — максимальный объём диска для хранения логов — 20 ГБ. При достижении этого значения более старые файлы будут удалены.
Операции с логами
journald сохраняет логи в директории /var/log/journal/. Вы можете просмотреть логи с помощью утилиты journalctl. Примеры использования:
journalctl --field CONTAINER_NAME
journalctl -f CONTAINER_NAME=<container_id>
journalctl --field SYSLOG_IDENTIFIER
journalctl -f SYSLOG_IDENTIFIER=<service_id>
journalctl --no-pager CONTAINER_NAME=dci_auth_back4_1 --since "YYYY-MM-DD"
Также, вы можете получить логи отдельных процессов:
journalctl -f PROCESS=<Имя процесса>
journalctl --field PROCESS
Связанные статьи: