При ошибках и сбоях в ELMA Cortex используйте диагностику для поиска проблем. Диагностические файлы можно изучить для самостоятельного устранения неполадок или предоставить в техподдержку для анализа.
Доступно несколько способов диагностики:
Запуск скрипта диагностики
- Перейдите в папку установки ELMA Cortex:
cd ~/elma-cortex
- Если вы запускаете диагностику впервые, настройте права доступа:
chmod +x ./diagnose.sh
- Запустите скрипт диагностики — по умолчанию произойдёт сбор логов за последние 30 дней:
./diagnose.sh
Скрипт создаст архив <имя-проекта>-diagnostics-<timestamp>.tar.gz, содержащий всю собранную диагностическую информацию.
Чтобы изменить настройки для сбора диагностической информации, при запуске скрипта используйте параметры, описанные ниже.
Параметры скрипта диагностики
Параметр |
Описание |
Значение по умолчанию |
|
Название проекта или стека Docker Swarm для диагностики |
Из файла переменных окружения .env. Если название не задано, используется значение elma-cortex |
|
Период времени для сбора логов |
Формат:
По умолчанию — 30 дней |
|
Название выходного файла диагностики |
Указывается только название, без расширения .tar.gz Формат: <имя-проекта>-diagnostics-<timestamp> |
|
Вызов списка доступных параметров |
— |
Примеры сбора диагностических данных
Рассмотрим примеры команд для запуска диагностики:
- за последние два часа:
./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***.
начало внимание
Перед отправкой файлов диагностики в техподдержку проверьте, что в них не содержатся чувствительные данные.
конец внимание
Рассмотрим, какую информацию собирает скрипт диагностики.
Файл |
Содержимое |
|
Версия ОС, память, дисковое пространство, информация о CPU |
|
Версия Docker и конфигурация |
|
Статус сервисов Docker Compose — только при использовании Docker Compose |
|
Узлы Swarm и информация о кластере — только при использовании Docker Swarm |
|
Сервисы стека и реплики — только при использовании Docker Swarm |
|
История задач, включая сбои — только при использовании Docker Swarm |
|
Запущенные и остановленные контейнеры |
|
Конфигурация сетей Docker |
|
Информация о томах Docker |
|
Метаданные секретов Docker — только при использовании Docker Swarm |
|
Проверки работоспособности сервисов |
|
Недавние события Docker |
Лог-файлы всех сервисов 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 — векторная база данных.
- данные о конфигурации, состояние и метаинформация по каждому запущенному контейнеру или сервису в формате JSON;
- данные задач Docker — только при использовании Docker Swarm.
- файлы docker-compose.yml при использовании Docker Compose или stack-*.yml при использовании Docker Swarm;
- файл env-sanitized.txt — конфигурация окружения с замаскированными паролями;
- файл install.md — документация по установке.
Устранение неполадок скрипта диагностики
Рассмотрим проблемы, которые могут возникать при использовании скрипта диагностики.
- Отказано в доступе (ошибка “Permission Denied”).
Если вы получаете ошибку доступа, примените команды:
chmod +x diagnose.sh
./diagnose.sh
- Скрипт не найден при использовании Docker Compose.
Убедитесь, что во время запуска скрипта вы находитесь в правильной папке:
ls -la diagnose.sh
Если скрипт отсутствует в нужной папке, скопируйте его из архива установки.
- Проблемы с правами в Docker.
Если команды Docker завершаются с ошибками доступа, вы можете:
- запускать скрипт с помощью утилиты sudo:
sudo ./diagnose.sh
- добавить пользователя в группу docker. Для этого потребуется повторный вход:
sudo usermod -aG docker $USER
Команды для диагностики вручную
Рассмотрим команды, которые можно использовать для сбора данных вручную.
Диагностика в Docker Compose
- Проверить статус сервисов:
docker compose ps --all
- Посмотреть логи определённого сервиса:
docker compose logs gamma-apps --since 1h
- Посмотреть объединённые логи:
docker compose logs --since 1h
- Получить данные контейнера:
docker inspect $(docker compose ps -q gamma-apps)
- Проверить готовность сервиса к работе:
docker exec $(docker compose ps -q gamma-apps) curl -sf http://localhost:8080/api/int/v1/info/application/health
Диагностика в Docker Swarm
- Получить список сервисов стека:
docker stack services elma-cortex
- Получить список задач стека, включая завершённые с ошибкой:
docker stack ps elma-cortex --no-trunc
- Просмотреть логи сервиса:
docker service logs elma-cortex_gamma-apps --since 1h
- Получить данные сервиса:
docker service inspect elma-cortex_gamma-apps
- Проверить статусы узлов Swarm:
docker node ls
Сбор HAR-файлов из браузера
Файлы HAR содержат запись сетевого взаимодействия между браузером и сервером. Они помогают при диагностике: проблем с API, ошибок аутентификации, сбоев при работе интерфейса. Способ записи HAR‑файла зависит от используемого браузера и описан в его документации.
HAR-файл содержит:
- HTTP-запросы и ответы;
- заголовки запросов и ответов;
- тела запросов и ответов;
- информацию о времени;
- значения cookie.
Важно: HAR-файлы включают конфиденциальную информацию, включая:
- токены аутентификации и cookies;
- данные сессии;
- персональные данные из ответов API.
Перед отправкой HAR-файлов в техподдержку:
- Проверьте, что в файле не содержится конфиденциальная информация.
- Записывайте активность в течение минимального времени, необходимого для воспроизведения проблемы.
- По возможности используйте тестовую учётную запись.