DCImanager 6

Лог-файлы платформы

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
Пояснения

Работа с логами

Скопировать лог-файл из контейнера

Чтобы скопировать лог-файл из контейнера в текущую директорию, выполните команду: 

docker cp <container_name>:<path_to_log> ./
Пояснения к команде
Пример команды
docker cp dci_auth_back_1:/var/log/licupdate.log ./

Просмотр лог-файлов в контейнере

  1. Перейдите в нужный контейнер: 

    docker exec -it <container_name> sh
    Пояснения к команде
    Пример команды
    docker exec -it dci_back sh
  2. Просмотрите лог-файл стандартными утилитами Linux. Например, cat, tail, less, grep и т.д. 

    Пример команды: Узнать когда выполнялся опрос коммутатора
    grep 'Switch status start' /var/log/dci_switch_1_handler.log
  3. Выйдите из контейнера: 

    exit

Просмотр лог-файлов через stdout

Для некоторых сервисов не создаются отдельные лог-файлы. Логи этих сервисов записываются в stdout. Чтобы просмотреть такие логи, выполните команду: 

docker logs <container_name> --tail <lines> --since <period>
Пояснения к команде
Пример команды: Посмотреть последние 100 строк лога сервиса авторизации, созданные за последние 60 минут
docker logs dci_consul_1 --tail 100 --since 60m

Сбор логов платформы

Чтобы собрать все лог-файлы платформы в одной директории:

  1. Подключитесь к серверу с платформой по SSH.
  2. Создайте 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 не нужно.
  3. Запустите скрипт одной из команд: 

    Перед сбором логов скрипт удаляет все файлы из директории /home/logs/.
    Собрать логи за последние сутки
    bash getlog.sh
    Собрать логи с определённой даты
    bash getlog.sh "YYYY-MM-DD"
    Собрать логи с определённой даты и времени
    bash getlog.sh "YYYY-MM-DD HH:MM:SS"
    Пояснения к командам

    Скрипт:

    1. Сохранит логи контейнеров в директории /home/logs/container/.
    2. Cохранит логи сервисов в директории /home/logs/service/.
    3. Создаст архив logs_<текущая_дата>_.tar.gz в директории /home/.

Логирование в journald

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

Платформа использует системную службу journald для сбора логов. journald собирает логи всех контейнеров, кроме dci_consul_1. Вы можете изменить уровень логирования journald: подробнее см. в статье Управление уровнями логирования.

Служба 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>
Получить логи сервиса авторизации с определённой даты
journalctl --no-pager CONTAINER_NAME=dci_auth_back4_1 --since "YYYY-MM-DD"
Пояснения к команде

Также, вы можете получить логи отдельных процессов:

Просмотреть логи процесса
journalctl -f PROCESS=<Имя процесса>
Просмотреть список всех доступных логов по имени процесса
journalctl --field PROCESS
Может быть полезно