Skip to content

Диагностика проблем

Отчёт об ошибках

Большинство проблем в Apiary можно решить с помощью методов, указанных ниже в этой главе. Но если вам нужна дополнительная помощь по данным вопросам, или вы столкнулись с проблемой, не описанной в этой главе, обратитесь к нашей команде технической поддержки для получения дополнительной информации и регистрации проблемы.

Для того чтобы решить проблему как можно быстрее, следуйте рекомендациям:

  1. Опишите условия, возникновения ошибки (что и как вы делаете);
  2. Укажите что вы ожидали в результате ваших действий;
  3. Укажите что вы получаете в результате ваших действий;
  4. Сохраните снимки экрана с ошибкой, если это возможно;
  5. Скачайте логи сервера (см. ниже);
  6. Укажите версию Apiary. Вы можете скопировать эту информацию в окне About.
  7. Отправьте всю вышеперечисленную информацию команде технической поддержки на почтовый ящик support@hexway.ru.

Журнал

В Apiary основные логи сохраняется в системный journal и могут быть просмотрены при помощи journalctl. Вы можете найти логи по этому пути: /run/log/journal/<machine-id>/*.journal[~].

Вы можете настроить время глубину хранения логов при помощи настроек journald. Подробности по настройке можете найти, например, в справочнике вашей операционной системы:

man journald.conf

Чтобы увидеть логи Apiary, откройте консоль машины, на которой он установлен
и выполните команду:

journalctl -u hw-fh

Вы можете использовать опцию --since и/или --until для того что бы указать глубину логов для просмотра. Вы можете найти информацию по использованию этой команды и её опций, например, в справочнике вашей операционной системы:

man journalctl

При необходимости, сохраните логи в файл. Например, так:

journalctl -u hw-fh --since=-1d > system_logs_$(date +%Y%m%d_%H%M%S).tar.gz

В результате будет сохранён файл с именем system_logs_<дата>_<время>.tar.gz который вы можете отправить на адрес support@hexway.ru.

Так же вы можете наблюдать за логами в реальном времени при помощи опции -f/--follow. Например, такая команда покажет 5 последних строк лога и будет отображать их в реальном времени:

journalctl -u hw-fh --follow --lines=5

Настройка отладочного логирования

Вы можете настроить сохранение логов для получения подробной информации о состоянии Apiary или ее сервисов. Существует 5 уровней логирования: DEBUG, INFO, WARNING, ERROR, и CRITICAL. По умолчанию, после первой установки для всех сервисов устанавливается уровень INFO.

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

  • logging.level - глобальная настройка для всех сервисов;
  • f.engine.logging.level - настройка для сервиса f.engine;
  • f.background.logging.level - настройка для сервиса f.background (например, работа парсеров);
  • f.convey.logging.level - настройка для сервиса f.convey.

Чтобы установить уровень логирования, нужно изменить конфигурацию.

Вы можете задать уровень логирования для каждого сервиса Apiary. Укажите одно из значений (DEBUG, INFO, WARNING, ERROR, или CRITICAL):

[main]
f.engine.logging.level = DEBUG
f.background.logging.level = ERROR
f.convey.logging.level = WARNING

Вы можете задать уровень логирования для всех сервисов Apiary и для отдельных:

[main]
logging.level = INFO
f.engine.logging.level = DEBUG

Не забудьте сделать reconfig как указано в параграфе Реконфигурация что бы изменения вступили в силу.

Статус systemd сервиса

Для диагностики состояния Apiary в первую очередь, убедитесь, что он запущен:

systemctl status hw-fh

Пример нормального вывода:

● hw-fh.service - hexway fh prod
     Loaded: loaded (/etc/systemd/system/hw-fh.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2025-03-28 17:49:36 UTC; 2 weeks 4 days ago
...

Пример вывода для остановленного Apiary:

○ hw-fh.service - hexway fh prod
     Loaded: loaded (/etc/systemd/system/hw-fh.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Wed 2025-04-16 12:17:17 UTC; 28s ago
...

Важно обратить внимание, как на состояние активности сервиса (active/inactive), так и на состояния включён/выключен (enabled/disabled).

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

Unit hw-fh.service could not be found.

Или обнаружили, что, по какой-то причине systemd сервис в настоящее время отключен, вы можете его вновь включить и активировать:

systemctl link /opt/hw-fh/systemd/hw-fh.service
systemctl enable hw-fh.service
systemctl daemon-reload
systemctl start hw-fh.service

Просмотр состояния контейнеров docker

Что бы увидеть список docker контейнеров выполните команду:

docker ps

Пример нормального вывода:

CONTAINER ID   IMAGE                                              COMMAND                  CREATED         STATUS         PORTS                                                                  NAMES
8ebe0b7dc988   registry.hexway.io/hexway/apiary-deck:0.65.6       "/docker-entrypoint.…"   9 minutes ago   Up 9 minutes   80/tcp, 443/tcp, 0.0.0.0:80->8080/tcp, [::]:80->8080/tcp               hw-fh-f_deck-1
efbd973bcca0   registry.hexway.io/hexway/apiary-engine:0.65.2     "/init-service /bin/…"   9 minutes ago   Up 9 minutes   5001/tcp                                                               hw-fh-f_background-1
2a8de6cc53d5   registry.hexway.io/hexway/convey:0.65.2            "/init-service /bin/…"   9 minutes ago   Up 9 minutes   5030/tcp                                                               hw-fh-f_convey-1
6a0a90353a4f   registry.hexway.io/hexway/report-engine:0.65.1     "node src/server/run…"   9 minutes ago   Up 9 minutes   5090/tcp                                                               hw-fh-r_engine-1
574ed2ea5a26   registry.hexway.io/hexway/depot-deck:0.65.0        "/docker-entrypoint.…"   9 minutes ago   Up 9 minutes   80/tcp, 5040-5041/tcp                                                  hw-fh-d_proxy-1
346739b7e3e0   registry.hexway.io/hexway/depot-service:0.65.2     "/init-service ./run…"   9 minutes ago   Up 9 minutes   5040/tcp                                                               hw-fh-d_engine-1
0b2acddc4f0a   registry.hexway.io/hexway/apiary-engine:0.65.2     "/init-service /bin/…"   9 minutes ago   Up 9 minutes   5001/tcp                                                               hw-fh-f_engine-1
f52e00a63909   rabbitmq:3.11.23-management                        "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes   4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 15691-15692/tcp, 25672/tcp   hw-fh-d_queue-1
af9061df9864   postgres:16.3-alpine                               "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes   5432/tcp                                                               hw-fh-d_postgres-1
66d88ba73d65   postgres:16.3-alpine                               "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes   5432/tcp                                                               hw-fh-f_postgres-1
0ab6e96b9db8   registry.hexway.io/hexway/rmq-proxy:0.65.0         "/proxy-entrypoint"      9 minutes ago   Up 9 minutes   80/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, [::]:5672->5672/tcp          hw-fh-d_queueproxy-1
b77e1a9b9049   redis:7.2.5-alpine                                 "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes   6379/tcp                                                               hw-fh-f_redis-1

В колонках CREATED и STATUS вы можете увидеть, время создания и время работы контейнеров. Обычно, время создания и время работы для каждого контейнера должно быть, примерно, одинаковым. Если вы видите, что время в CREATED и STATUS различается или в STATUS статус отличный от up это признак того, что с этим контейнером что-то не так.

Вы можете получить логи отдельного контейнера при помощи, например такой команды:

docker logs <container_name>

В качестве container_name укажите имя контейнера из колонки NAMES или идентификатор контейнера из колонки CONTAINER ID. Так же вы можете использовать здесь опции --last / -n, --follow / -f.

Для получения дополнительной информации по опциям выполните:

docker logs --help

В некоторых случаях достаточно изучить логи только одного контейнера для диагностики проблем.