VMmanager сохраняет информацию о работе сервисов в лог-файлы (журнальные файлы, журналы). Данные из лог-файлов могут быть использованы для диагностики работы платформы.
Перечень лог-файлов
Основные лог-файлы
Основные лог-файлы сервисов VMmanager хранятся в контейнере vm_box в директории /var/log/. Обычно имя лог-файла совпадает с названием сервиса. Например, лог-файл сервиса vmwatch называется vmwatch.log.
Установка платформы
Лог установки платформы сохраняется в файл /opt/ispsystem/vm/install.log.
Различные сервисы
Лог-файлы на узле кластера
Работа с логами
Скопировать лог-файл из контейнера
Чтобы скопировать лог-файл из контейнера в текущую директорию, выполните команду:
docker cp <container_name>:<path_to_log> ./
docker cp auth:/var/log/licupdate.log ./
Просмотр лог-файлов в контейнере
-
Перейдите в нужный контейнер:
docker exec -it <container_name> sh
Пояснения к командеПример командыdocker exec -it vm_box sh
-
Просмотрите лог-файл стандартными утилитами Linux. Например, cat, tail, less и т.д.
Пример командыless /var/log/host.log
Чтобы просмотреть логи конкретной задачи:
- В интерфейсе платформы перейдите в Задачи → выберите задачу → скопируйте значение request_id.
-
Выполните команду:
grep <request_id> /var/log/*
Пояснения к команде
-
Выйдите из контейнера:
exit
Просмотр лог-файлов через stdout
Для некоторых сервисов не создаются отдельные лог-файлы. Логи этих сервисов записываются в stdout. Чтобы просмотреть такие логи, выполните команду:
docker logs <container_name> --tail <lines> --since <period>
docker logs vm_box --tail 100 --since 60m
Сбор логов платформы
Чтобы собрать все лог-файлы платформы в одной директории:
- Подключитесь к серверу с платформой по SSH. Подробнее о подключении по 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 logs_collect.sh
Лог-файлы будут сохранены в директорию /home/logs/, архив с логами — в директорию /home/.
Логирование в journald
По умолчанию в платформе отключено логирование в системной службе journald. Чтобы включить логирование:
- Подключитесь к серверу с платформой по SSH.
-
Создайте файл патча /opt/ispsystem/vm/journald.yaml с содержимым:
version: "3.5" services: auth: volumes: - /var/run/systemd/journal/:/var/run/systemd/journal/ ldap: volumes: - /var/run/systemd/journal/:/var/run/systemd/journal/ vm_box: volumes: - /opt/ispsystem/vm/backup:/opt/ispsystem/vm/backup - /opt/ispsystem/license:/opt/ispsystem/license - /opt/ispsystem/vm/socket/:/opt/ispsystem/vm/vmbox/ - /var/run/systemd/journal/:/var/run/systemd/journal/
-
Примените патч:
vm add-patch -p journald -f /opt/ispsystem/vm/journald.yaml