Диагностика ELMA Cortex

При ошибках и сбоях в ELMA Cortex используйте диагностику для поиска проблем. Диагностические файлы можно изучить для самостоятельного устранения неполадок или предоставить в техподдержку для анализа.

Доступно несколько способов диагностики:

Запуск скрипта диагностики

  1. Перейдите в папку установки ELMA Cortex:

cd ~/elma-cortex

  1. Настройте права доступа. При повторном проведении диагностики пропустите шаг:

chmod +x ./diagnose.sh

  1. Запустите скрипт диагностики — по умолчанию произойдёт сбор логов за последние 30 дней:

./diagnose.sh

Скрипт создаст архив <имя-проекта>-diagnostics-<timestamp>.tar.gz, содержащий всю собранную диагностическую информацию.

Для сбора логов по проекту с пользовательским названием, указания периода и установки имени для файла диагностики используйте параметры, приведённые ниже.

Параметры скрипта диагностики

Параметр

Описание

Значение по умолчанию

--project-name <имя>

Название проекта или стека Docker Swarm для диагностики

Из файла переменных окружения .env. Если название не задано используется значение elma-cortex.

--logs-since <период>

Период времени для сбора логов

Формат:

  • 30m — 30 минут;
  • 1h — 1 час;
  • 2h — 2 часа;
  • 24h — 24 часа;
  • 7d — 7 дней.

По умолчанию — 30 дней.

--output <имя>

Название выходного файла диагностики

Указывается только название, без расширения .tar.gz.

Формат:

<имя-проекта>-diagnostics-<timestamp>

--help-h

Вызов списка доступных параметров

Примеры сбора диагностических данных

Рассмотрим примеры команд для запуска диагностики:

  • за последние два часа:

./diagnose.sh --logs-since 2h

  • за последние 24 часа с заданным именем файла:

./diagnose.sh --logs-since 24h --output issue-diagnostics

  • за неделю, если при настройке переменных окружения задано пользовательское название проекта:

./diagnose.sh --project-name my-cortex --logs-since 7d

Собираемые диагностические данные

Скрипт диагностики собирает информацию о работе ELMA Cortex по нескольким папкам, которые объединяются в архив:

  • system — системная информация об установке и окружении;
  • logs — логи сервисов;
  • containers и services — информация:
    • о контейнерах при использовании Docker Compose;
    • о сервисах при использовании Docker Swarm;
  • config — конфигурация Docker и окружения.

Конфиденциальная информация, такая как пароли, API-ключи, токены, автоматически маскируется.

Рассмотрим, какую информацию собирает скрипт диагностики.

  1. Системная информация

Файл

Содержимое

system-info.txt

Версия ОС, память, дисковое пространство, информация о CPU

docker-info.txt

Версия Docker и конфигурация

compose-status.txt

Статус сервисов Docker Compose — только при использовании Docker Compose

swarm-info.txt

Узлы Swarm и информация о кластере — только при использовании Docker Swarm

stack-services.txt

Сервисы стека и реплики — только при использовании Docker Swarm

stack-tasks.txt

История задач, включая сбои — только при использовании Docker Swarm

containers.txt

Запущенные и остановленные контейнеры

networks.txt

Конфигурация сетей Docker

volumes.txt

Информация о томах Docker

secrets.txt

Метаданные секретов Docker — только при использовании Docker Swarm

health-checks.txt

Проверки работоспособности сервисов

docker-events.txt

Недавние события Docker

  1. Логи сервисов

Лог-файлы всех сервисов ELMA Cortex:

  • gamma-apps.log — основной сервис приложения;
  • gamma-tasks.log — фоновый обработчик задач;
  • caddy.log — обратный прокси;
  • mongo-db.log — MongoDB;
  • rabbit.log — RabbitMQ;
  • redis.log — Redis;
  • minio.log — хранилище MinIO S3;
  • qdrant.log — векторная база данных.
  1. Детали контейнеров или сервисов
  1. JSON-данные инспекции для каждого запущенного контейнера или сервиса.
  2. Данные инспекции задач — только при использовании Docker Swarm.
  1. Конфигурация
  1. Файлы docker-compose.yml при использовании Docker Compose или stack-*.yml при использовании Docker Swarm.
  2. Файл env-sanitized.txt — конфигурация окружения с замаскированными паролями.
  3. Файл install.md — документация по установке.

Устранение неполадок скрипта диагностики

Рассмотрим проблемы, которые могут возникать при использовании скрипта диагностики.

  1. Отказано в доступе (ошибка “Permission Denied”).

Если вы получаете ошибку доступа, примените команды:

chmod +x diagnose.sh
./diagnose.sh

  1. Скрипт не найден при использовании Docker Compose.

Убедитесь, что вы запускаете скрипт из правильной папки:

ls -la diagnose.sh 

Если скрипт не расположен в нужной папке, скопируйте его из архива установки.

  1. Проблемы с правами в Docker.

Если команды Docker завершаются с ошибками доступа, вы можете:

  • запускать скрипт с помощью утилиты sudo:

sudo ./diagnose.sh

  • добавить пользователя в группу docker. Для этого потребуется повторный вход:

sudo usermod -aG docker $USER

Команды для диагностики вручную

Рассмотрим команды, которые можно использовать для сбора данных вручную.

Диагностика в Docker Compose

  1. Проверить статус сервисов:

docker compose ps --all

  1. Посмотреть логи конкретного сервиса:

docker compose logs gamma-apps --since 1h

  1. Посмотреть объединенные логи:

docker compose logs --since 1h

  1. Инспекция контейнера:

docker inspect $(docker compose ps -q gamma-apps)

  1. Проверка endpoint работоспособности:

docker exec $(docker compose ps -q gamma-apps) curl -sf http://localhost:8080/api/int/v1/info/application/health

Диагностика в Docker Swarm

  1. Список сервисов стека:

docker stack services elma-cortex

  1. Список задач стека (включая неудачные):

docker stack ps elma-cortex --no-trunc

  1. Просмотр логов сервиса:

docker service logs elma-cortex_gamma-apps --since 1h

  1. Инспекция сервиса:

docker service inspect elma-cortex_gamma-apps

  1. Проверка узлов swarm:

docker node ls

Сбор HAR-файлов из браузера

Файлы HAR содержат запись сетевого взаимодействия между браузером и сервером. Они помогают при диагностике проблем с API, ошибок аутентификации или некорректной работы интерфейса.

Способ записи HAR‑файла зависит от используемого браузера и описан в его документации.

HAR-файл содержит:

  • HTTP-запросы и ответы;
  • заголовки запросов и ответов;
  • тела запросов и ответов;
  • информацию о времени;
  • Cookie.

Важно: HAR-файлы содержат конфиденциальную информацию, включая:

  • токены аутентификации и cookies;
  • данные сессии;
  • персональные данные из ответов API.

Перед отправкой HAR-файлов в техподдержку:

  1. Проверьте содержание в файле конфиденциальной информации.
  2. Записывайте активность в течение минимального времени, необходимого для воспроизведения проблемы.
  3. По возможности используйте тестовую учётную запись.