Лог-файлы платформы
DCImanager 6 сохраняет информацию о работе сервисов в лог-файлы. Данные из лог-файлов могут быть использованы для диагностики работы платформы. Лог-файлы хранятся в директориях /var/log докер-контейнеров.
Перечень лог-файлов
Основные лог-файлы на сервере с платформой
Контейнер | Имя файла | Содержимое |
---|---|---|
dci_auth_back_1 | /var/log/licupdate.log | логи проверки лицензии |
dci_back | /var/log/dci_1_writer.log /var/log/dci_1_reader.log | логи основного сервиса DCImanager 6 |
/var/log/dci_location_check_update.log | лог обновления контейнеров на локации. Сервис запускается при перезапуске контейнера и обновляет контейнеры на локации, если это необходимо. | |
/var/log/dci_locationctl.log /var/log/dci_ansiblectl_location_<id локации>.log /var/log/ansible.log | логи создания и настройки локации | |
/var/log/dci_operationctl.log | лог выполнения операций на локации | |
dci_consumer_1 | /var/log/worker_daemon.log | логи периодических опросов оборудования и получения данных статистики |
dci_dns_proxy_1 | /var/log/dns_proxy_integration.log /var/log/dns_proxy_service_1_reader.log /var/log/dns_proxy_service_1_writer.log | логи модулей: |
dci_ipmgr_1 | /var/log/ip_1_reader.log /var/log/ip_1_writer.log | логи сервиса управления адресным пространством |
dci_ipmi_proxy_v2_client_1 | /var/log/ipmi_proxy_goproxy.log | логи сервиса goproxy. Сервис передаёт данные в VNC-клиент и проксирует Websocket-запросы к VNC-серверу |
/var/log/ipmi_proxy_update_checker.log | обновление модуля проксирования BMC на локации. Сервис запускается при перезапуске контейнера и обновляет модуль, если это необходимо | |
dci_ldap_1 | /var/log/isp_ldap.log | логи синхронизации с каталогом LDAP |
migrator | /var/log/migrate.log /var/log/bill_migrate.log | лог миграции объектов DCImanager 5 |
Лог установки платформы сохраняется в файл /opt/ispsystem/dci/install.log.
Лог-файлы операции диагностики указаны в статье Проверка работы диагностики.
Логи сервиса авторизации записываются в стандартный вывод контейнера dci_auth_back4_1.
Основные лог-файлы на сервере-локации
Контейнер | Имя файла | Содержимое |
---|---|---|
eservice_handler | /var/log/dci_switch_<id>_handler.log | логи обработчиков коммутаторов |
/var/log/dci_pdu_<id>_handler.log | логи обработчиков PDU | |
/var/log/dci_ipmi_<id>_handler.log | логи обработчиков BMC | |
/var/log/dci_intel_amt_handler.log | логи обработчиков Intel AMT |
<id> — id устройства. Например, для коммутатора с ID 3, файл называется dci_switch_3_handler.log
Для просмотра логов BMC используйте id BMC, а не сервера. Чтобы узнать id BMC, выполните API-запрос:
GET https://domain.com/dci/v3/ipmi
domain.com — доменное имя или IP-адрес сервера с платформой
Работа с логами
Скопировать лог-файл из контейнера
Чтобы скопировать лог-файл из контейнера в текущую директорию, выполните команду:
docker cp <container_name>:<path_to_log> ./
<container_name> — имя контейнера
<path_to_log> — путь и имя лог-файла
Пример команды
docker cp dci_auth_back_1:/var/log/licupdate.log ./
Просмотр лог-файлов в контейнере
Перейдите в нужный контейнер:
docker exec -it <container_name> sh
BASHПояснения к команде<container_name> — имя контейнера
Пример команды
docker exec -it dci_back sh
BASHПросмотрите лог-файл стандартными утилитами Linux. Например, cat, tail, less, grep и т.д.
Пример команды: Узнать когда выполнялся опрос коммутатора
grep 'Switch status start' /var/log/dci_switch_1_handler.log
BASHВыйдите из контейнера:
exit
BASH
Просмотр лог-файлов через stdout
Для некоторых сервисов не создаются отдельные лог-файлы. Логи этих сервисов записываются в stdout. Чтобы просмотреть такие логи, выполните команду:
docker logs <container_name> --tail <lines> --since <period>
<container_name> — имя контейнера
<lines> — количество строк
<period> — период сбора логов
Пример команды: Посмотреть последние 100 строк лога сервиса авторизации, созданные за последние 60 минут
docker logs dci_consul_1 --tail 100 --since 60m
Сбор логов платформы
Чтобы собрать все лог-файлы платформы в одной директории:
- Подключитесь к серверу с платформой по SSH.
Создайте bash-скрипт logs_collect.sh следующего содержания:
#!/bin/bash rm /home/logs -fr DOCKER_CONTAINER_NAMES=`docker ps --format '{{.Names}}'` SERVICES=($DOCKER_CONTAINER_NAMES) cd /home mkdir -p logs cd logs for service in ${SERVICES[@]} do echo -e "----\033[0;31mCopying logs from $service\033[0m----\n" mkdir -p $service docker cp $service:/var/log/. $service/. docker logs $service > $service/${service}_stdout.log 2>&1 done cp -r /opt/ispsystem/*/install.log install.log ARCHIVE_NAME="logs_$(date +'%Y_%m_%d_%H_%M_%S').tar.gz" tar -cvzf /home/$ARCHIVE_NAME -C /home/logs .
BASHЗапустите скрипт:
bash logs_collect.sh
BASH
Лог-файлы будут сохранены в директорию /home/logs/, архив с логами — в директорию /home/.
Логирование в journald
Настройки логирования
Платформа использует системную службу journald для сбора логов. journald собирает логи всех контейнеров, кроме dci_consul_1.
Служба journald на сервере платформы и сервере-локации настраивается автоматически. Конфигурация службы сохраняется в файл /usr/lib/systemd/journald.conf.d/dci.conf. Если служба уже была настроена на сервере, то конфигурация, задаваемая платформой, будет иметь более высокий приоритет.
Настройка службы journald может завершиться с ошибкой, если настройки служб syslog и rsyslog на сервере были изменены.
Параметры конфигурации, задаваемые платформой:
- Storage=persistent — хранить файлы на диске;
- Compress=yes — сжимать данные в логах;
- SystemMaxFileSize=500M — максимальный размер файла с логами — 500 Мб. При достижении этого значения выполняется ротация логов;
- SystemMaxUse=20G — максимальный объём диска для хранения логов — 20 ГБ. При достижении этого значения более старые файлы будут удалены.
Операции с логами
journald сохраняет логи в директории /var/log/journal/. Вы можете просмотреть логи с помощью утилиты journalctl. Примеры использования:
Получить id контейнеров, для которых ведётся логирование
journalctl --field CONTAINER_NAME
Просмотреть логи контейнера
journalctl -f CONTAINER_NAME=<container_id>
Получить id сервисов, для которых ведётся логирование
journalctl --field SYSLOG_IDENTIFIER
Просмотреть логи сервиса
journalctl -f SYSLOG_IDENTIFIER=<service_id>