Диагностика 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‑ключи, в файле конфигурации окружения автоматически заменяется на значение ***MASKED***.

начало внимание

Перед отправкой файлов диагностики в техподдержку проверьте, что в них не содержатся чувствительные данные.

конец внимание

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

  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. Детали контейнеров или сервисов:
  • данные о конфигурации, состояние и метаинформация по каждому запущенному контейнеру или сервису в формате JSON;
  • данные задач Docker — только при использовании Docker Swarm.
  1. Конфигурация:
  • файлы docker-compose.yml при использовании Docker Compose или stack-*.yml при использовании Docker Swarm;
  • файл env-sanitized.txt — конфигурация окружения с замаскированными паролями;
  • файл 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. Проверить готовность сервиса к работе:

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. По возможности используйте тестовую учётную запись.