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

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


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

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

Имя файлаСодержимое
Общие сервисы
vm_1_writer.log 
  • задачи, создаваемые платформой;
  • API-запросы, выполненные методами POST и DELETE;
  • операции с базой данных, выполненные с помощью команд INSERT и UPDATE
vm_1_reader.logAPI-запросы, выполненные методом GET
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_snapshot.log

операции со снимками ВМ
host_source_copy.logзагрузка и копирование образов ВМ и шаблонов ОС
image_relocate.logперемещение образов ВМ
iso.logзагрузка и подключение ISO-образов
uploader.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_network.log

конфигурация сети на узле кластера
node_create/{node_id}.log

сбор информации о добавлении узлов кластера

node_info.logсбор информации об узле кластера (данные об ОС, диске и т.д.)

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

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

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

ФункцияКонтейнерПуть к файлу
Лицензированиеvm_license_1stdout контейнера
Сервис уведомлений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
Синхронизация с каталогом LDAPvm_ldap_1/var/log/isp_ldap.log
Выполнение последовательностей запросов

vm_batch_1 (vm-batch-1)

stdout контейнера

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

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

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


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

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

docker cp <container_name>:<path_to_log> ./
BASH

<container_name> — имя контейнера

<path_to_log> — путь и имя лог-файла

Пример команды

docker cp vm_auth_back_1:/var/log/licupdate.log ./
BASH

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

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

    docker exec -it <container_name> sh
    BASH

    <container_name> — имя контейнера

    Пример команды

    docker exec -it vm_box sh
    BASH
  2. Просмотрите лог-файл стандартными утилитами Linux. Например, cat, tail, less и т.д. 

    Пример команды

    less /var/log/host.log
    BASH

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

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

      grep <request_id> /var/log/*
      CODE

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

  3. Выйдите из контейнера: 

    exit
    BASH

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

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

docker logs <container_name> --tail <lines> --since <period>
BASH

<container_name> — имя контейнера

<lines> — количество строк

<period> — период сбора логов

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

docker logs 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. Запустите скрипт:

    bash logs_collect.sh
    BASH

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

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


По умолчанию в платформе отключено логирование в системной службе journald. Чтобы включить логирование:

  1. Подключитесь к серверу с платформой по SSH.
  2. Создайте файл патча /opt/ispsystem/vm/journald.yaml с содержимым: 

    version: "3.5"
    services:
      auth_back4:
        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/
    CODE
  3. Примените патч:

    vm add-patch -p journald -f /opt/ispsystem/vm/journald.yaml
    BASH

Может быть полезно

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