При ошибках и сбоях в 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-ключи, токены, автоматически маскируется.
Рассмотрим, какую информацию собирает скрипт диагностики.
Файл |
Содержимое |
|
Версия ОС, память, дисковое пространство, информация о 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 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)
- Проверка endpoint работоспособности:
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-файлов в техподдержку:
- Проверьте содержание в файле конфиденциальной информации.
- Записывайте активность в течение минимального времени, необходимого для воспроизведения проблемы.
- По возможности используйте тестовую учётную запись.