VMmanager сохраняет информацию о работе сервисов в лог-файлы. Данные из лог-файлов могут быть использованы для диагностики работы платформы.

Перечень лог-файлов


Основные лог-файлы

Основные лог-файлы сервисов VMmanager хранятся в контейнере vm_box в директории /var/log/. Обычно имя лог-файла совпадает с названием сервиса. Например, лог-файл сервиса vmwatch называется vmwatch.log. 

Имя файлаСодержимое
Общие сервисы
vm_1_writer.log 
  • задачи, создаваемые платформой;
  • API-запросы, выполненные методами POST и DELETE;
  • операции с базой данных, выполненные с помощью команд INSERT и UPDATE
vm_1_reader.logAPI-запросы, выполненные методом GET
batch.logвыполнение последовательностей запросов
monitor.logсервис мониторинга ВМ и узлов кластера
run_script.logзапуск скриптов
vmctl.log 
  • параметры и результат запуска скриптов:
    • операций с виртуальными машинами (ВМ);
    • отправки почты;
    • сбора информации об узле кластера;
    • загрузки и копирования образов ВМ и шаблонов ОС;
  • логи системы управления конфигурациями Ansible
vmwatch.logсобытия libvirt, синхронизация состояния ВМ
Операции с ВМ
check_storage.log проверка хранилищ ВМ
connect_storages.logподключение хранилищ ВМ
disk_resize.logоперации по изменению дисков ВМ
gosockify.logсервис проксирования доступа к ВМ по VNC
host.logсоздание и удаление ВМ
host_action.logзапуск, остановка, перезапуск ВМ
host_change_password.logсмена root-пароля для ВМ
host_firewall.logнастройка файрвола
host_image_create.logсоздание образов ВМ
host_image_delete.logудаление образов ВМ
host_migration.logмиграция ВМ
host_redefine.logизменение параметров ВМ, установка пароля VNC
host_source_copy.logзагрузка и копирование образов ВМ и шаблонов ОС
image_relocate.logперемещение образов ВМ
iso.logзагрузка и подключение ISO-образов
websockify.logсервис доступа к ВМ по VNC
Операции с LXD-контейнерами
lxdconsole.logклонирование LXD-контейнеров
lxd_init.logсоздание LXD-контейнеров
Операции с узлами кластера
hawatch.logмикросервис hawatch. Подробнее см. в статье Принцип работы отказоустойчивых кластеров
lxd_node_info.logсбор информации об узлах LXD-кластера
network_configure.logконфигурация сети на узле кластера
node_info.logсбор информации об узле кластера (данные об ОС, диске и т.д.)

Установка платформы

Лог установки платформы сохраняется в файл /opt/ispsystem/vm/install.log.

Различные сервисы

ФункцияКонтейнерПуть к файлу
Лицензированиеvm_auth_back_1/var/log/licupdate.log
/var/log/instancectl.log
Сервис уведомленийvm_msgsender_1/var/log/msgsender_1_reader.1.log
/var/log/msgsender_1_writer.1.log
Почтовые уведомления о создании, переустановке ОС, смене пароля ВМvm_msgsender_1/var/log/email.log
Работа Telegram-бота. Подробнее см. в статье Отправка уведомлений в Telegramvm_msgsender_1/var/log/telegram.log
Cбор информации об аптайме узла кластера, версиях QEMU, libvirtnodewatch/var/log/nodewatch.log
Миграция из VMmanager 5importer/var/log/importer.log
Миграция адресного пространстваvm_ipmgr_1/var/log/ip_ipmgr5_proxy.log

Лог-файлы на узле кластера

ФункцияПуть к файлу
Сбор метрик для статистики/var/log/gomon.log
Сервис ha-agent. Подробнее см. в статье Принцип работы отказоустойчивых кластеров/var/log/ha-agent.log

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


Для просмотра логов в докер-контейнере перейдите в нужный контейнер. Например, vm_box:

docker exec -it vm_box sh
CODE

Логи конкретной задачи можно найти по её request_id. Для этого:

  1. Перейдите в Задачи → выберите задачу → скопируйте значение request_id.
  2. Выполните команду:

    grep <request_id> /var/log/*
    CODE

    <request_id> — значение request_id

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

Посмотреть последние 100 строк лога, созданные за последние 60 минут

docker logs -f vm_box --tail 100 --since 60m
CODE

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


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

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

    sh logs_collect.sh
    BASH

Лог-файлы будут сохранены в директорию /home/logs/, архив с логами — в директорию /home/.



Связанные статьи

Структура VMmanager