> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/guide/utility/sluzhby.md).

# Службы

Раздел «Службы» предназначен для контроля системных процессов iEXExchanger на сервере. Здесь администратор может проверить состояние служб, время их работы, потребление памяти, последние запуски и доступные действия.

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

{% hint style="info" %}
В разделе используется закрытый список служб и действий. Через административную панель нельзя передать произвольную команду, указать собственное название службы или управлять любым процессом сервера.
{% endhint %}

### Где находится раздел

В панели управления откройте: **«Утилиты» — «Службы»**

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Fgit-blob-45075c4d5a7aea8ae3ebd03ffeccf2d483a1d0ee%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

На странице находятся вкладки «Состояние служб» и «Журнал действий».

## Доступ к разделу

Доступ регулируют два отдельных права в блоке «Админпанель».

<table><thead><tr><th>Право</th><th width="182.1953125">Уровень</th><th>Что разрешает</th></tr></thead><tbody><tr><td>«Просмотр служб обменника»</td><td>Чувствительное</td><td>Открывать раздел, просматривать состояния, стабильность, время работы и журнал действий</td></tr><tr><td>«Управление службами обменника»</td><td>Критичное</td><td>Запускать, останавливать, перезапускать службы и управлять доступными расписаниями</td></tr></tbody></table>

Для открытия страницы достаточно одного из этих прав. Если назначено только право «Просмотр служб обменника», информация будет доступна, но в столбце «Действия» появится надпись «Управление недоступно».

### Настройка прав группы

В панели управления откройте: **«Пользователи» — «Список групп пользователей»**

1. Откройте редактирование нужной группы.
2. Выберите блок «Админпанель».
3. Найдите права «Просмотр служб обменника» и «Управление службами обменника».
4. Включите права, которые требуются сотрудникам этой группы.
5. Нажмите «Сохранить».
6. Откройте раздел «Службы» под учётной записью сотрудника и проверьте доступ.

Право «Управление службами обменника» следует выдавать только сотрудникам, которым разрешено изменять состояние серверных процессов.

## Устройство страницы

{% stepper %}
{% step %}

### Вкладка «Состояние служб»

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

Состояния обновляются автоматически каждые 10 секунд. Фоновое обновление приостанавливается, пока открыто окно подтверждения или выполняется действие над службой.
{% endstep %}

{% step %}

### Вкладка «Журнал действий»

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

Журнал загружается при открытии страницы и после успешного действия. Для повторной загрузки текущей страницы журнала используйте кнопку «Обновить».
{% endstep %}
{% endstepper %}

### Кнопка «Обновить»

Кнопка обновляет только открытую вкладку:

* на вкладке «Состояние служб» повторно запрашивается состояние служб;
* на вкладке «Журнал действий» повторно загружается текущая страница журнала.

Во время выполнения действия кнопка временно недоступна.

## Состояние служб

### Столбцы таблицы

<table><thead><tr><th width="223.3203125">Столбец</th><th>Содержимое</th></tr></thead><tbody><tr><td>«Служба»</td><td>Название службы и кнопка «Подробности»</td></tr><tr><td>«Состояние»</td><td>Текущая оценка работы службы</td></tr><tr><td>«Время работы»</td><td>Время непрерывной работы, длительность последнего выполнения или дата следующего запуска</td></tr><tr><td>«Память»</td><td>Объём памяти, занятый процессом, если значение доступно</td></tr><tr><td>«Действия»</td><td>Разрешённые для текущего состояния кнопки управления</td></tr></tbody></table>

Содержимое столбца «Время работы» зависит от типа службы:

* для постоянно работающего процесса показывается время с момента запуска;
* для одноразовой задачи показывается длительность последнего выполнения или дата его завершения;
* для расписания показывается дата следующего запуска;
* если значение недоступно, отображается прочерк.

### «Подробности»

Кнопка «Подробности» рядом с названием службы открывает техническую информацию:

* точное имя службы в `systemd`;
* внутреннее состояние `systemd`;
* результат последнего выполнения;
* PID работающего процесса;
* количество перезапусков;
* время последнего запуска;
* время завершения;
* длительность последнего выполнения;
* дату следующего запуска;
* пояснение к текущему состоянию.

`systemd` — это серверный компонент Linux, который запускает службы и контролирует их работу. Технические данные из «Подробности» помогают серверному администратору определить причину ошибки.

## Значения состояния

<table><thead><tr><th width="226.12109375">Состояние</th><th>Что означает</th></tr></thead><tbody><tr><td>«Работает»</td><td>Служба работает стабильно, одноразовая задача завершилась успешно или расписание включено и ожидает следующий запуск</td></tr><tr><td>«Запускается»</td><td>Служба запускается, применяет конфигурацию или работает менее 30 секунд после запуска</td></tr><tr><td>«Нестабильно»</td><td>Служба перезапускалась не менее трёх раз и после последнего запуска работает менее 10 минут</td></tr><tr><td>«Есть проблемы»</td><td>Системный агент обнаружил ухудшенное состояние, которое требует проверки через «Подробности»</td></tr><tr><td>«Остановлена»</td><td>Служба не работает, но остаётся доступной для запуска</td></tr><tr><td>«Отключена»</td><td>Служба или расписание отключены</td></tr><tr><td>«Ошибка»</td><td>Служба не загружена, завершилась с ошибкой или вернула неуспешный результат</td></tr><tr><td>«Обслуживание»</td><td>Служба находится в состоянии технического обслуживания</td></tr><tr><td>«Неизвестно»</td><td>Системный агент не смог сопоставить полученное состояние с известным вариантом</td></tr></tbody></table>

После запуска или перезапуска состояние может временно измениться на «Запускается». Если служба продолжает работать, после следующего обновления она перейдёт в состояние «Работает».

## Управляемые службы

### Службы с запуском, остановкой и перезапуском

| Служба              | Назначение                                                      | Доступные действия                         |
| ------------------- | --------------------------------------------------------------- | ------------------------------------------ |
| «Frontend»          | Обслуживает клиентскую часть обменного пункта через Angular SSR | «Запустить», «Остановить», «Перезапустить» |
| «Horizon»           | Обрабатывает фоновые задачи из очередей Laravel                 | «Запустить», «Остановить», «Перезапустить» |
| «Reverb»            | Обслуживает соединения и события реального времени              | «Запустить», «Остановить», «Перезапустить» |
| «Сбор данных Pulse» | Обрабатывает данные серверного мониторинга Pulse                | «Запустить», «Остановить», «Перезапустить» |
| «Проверка Pulse»    | Выполняет проверку сервера для Pulse                            | «Запустить», «Остановить», «Перезапустить» |
| «Cron»              | Каждую минуту запускает проверку запланированных задач Laravel  | «Запустить», «Остановить», «Перезапустить» |

{% hint style="danger" %}
Остановка службы сразу влияет на связанные функции. При остановке Frontend перестаёт нормально обслуживаться клиентский сайт, Horizon прекращает обработку очередей, Reverb прерывает работу соединений реального времени, а Cron перестаёт автоматически запускать запланированные задачи.
{% endhint %}

### Службы с отдельными действиями

| Служба                       | Назначение                                                                    | Доступные действия                            |
| ---------------------------- | ----------------------------------------------------------------------------- | --------------------------------------------- |
| «Планировщик Laravel»        | Однократно запускает все задачи Laravel, срок выполнения которых уже наступил | «Запустить сейчас»                            |
| «PHP-FPM»                    | Обслуживает Backend, административную панель и серверные запросы              | «Перезапустить»                               |
| «Redis»                      | Используется очередями, блокировками и временными данными iEXExchanger        | «Перезапустить»                               |
| «Агент обновлений»           | Выполняет защищённые серверные операции iEXExchanger                          | Только просмотр состояния                     |
| «Резервное копирование»      | Показывает результат последнего управляемого резервного копирования           | Только просмотр состояния                     |
| «Расписание резервных копий» | Управляет будущими автоматическими резервными копиями                         | «Включить расписание», «Отключить расписание» |

{% hint style="warning" %}
Действие «Запустить сейчас» запускает один полный проход Планировщика Laravel. Будут выполнены все запланированные задачи, срок которых наступил. Расписание при этом не изменяется.
{% endhint %}

Перезапуск PHP-FPM может кратковременно прервать запрос административной панели. Интерфейс умеет восстановить соединение и запросить уже сохранённый результат, не выполняя перезапуск повторно.

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

### Службы резервного копирования

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

Действие «Отключить расписание» останавливает создание будущих резервных копий по расписанию. Уже созданные копии не удаляются.

Запустить резервное копирование вручную через страницу «Службы» нельзя.

### Технические имена служб

| Название в панели            | Имя в `systemd`                                                        |
| ---------------------------- | ---------------------------------------------------------------------- |
| «Frontend»                   | `iex-frontend.service`                                                 |
| «Horizon»                    | `iex-horizon.service`                                                  |
| «Reverb»                     | `iex-reverb.service`                                                   |
| «Сбор данных Pulse»          | `iex-pulse-work.service`                                               |
| «Проверка Pulse»             | `iex-pulse-check.service`                                              |
| «Планировщик Laravel»        | `iex-scheduler.service`                                                |
| «PHP-FPM»                    | `phpX.Y-fpm.service`, где `X.Y` соответствует установленной версии PHP |
| «Redis»                      | `redis-server.service`                                                 |
| «Cron»                       | `cron.service`                                                         |
| «Агент обновлений»           | `iex-update-agent.service`                                             |
| «Резервное копирование»      | `iex-backup.service`                                                   |
| «Расписание резервных копий» | `iex-backup.timer`                                                     |

Frontend запускается через PM2 Runtime, но административная панель управляет всей службой `iex-frontend.service`, а не отдельным процессом PM2.

## Доступные действия

| Действие               | Проверяемый результат                                        |
| ---------------------- | ------------------------------------------------------------ |
| «Запустить»            | Служба должна перейти в активное состояние                   |
| «Остановить»           | Служба должна перейти в остановленное состояние              |
| «Перезапустить»        | После перезапуска служба должна снова стать активной         |
| «Запустить сейчас»     | Одноразовая задача должна завершиться с успешным результатом |
| «Включить расписание»  | Расписание должно стать включённым и активным                |
| «Отключить расписание» | Расписание должно стать отключённым и неактивным             |

Успех отображается только после проверки итогового состояния на сервере. Сам факт отправки команды ещё не считается успешным выполнением.

### Какие кнопки отображаются

Для работающей службы с полным управлением доступны «Остановить» и «Перезапустить». Кнопка «Запустить» скрыта.

Для остановленной службы отображается «Запустить». Кнопки «Остановить» и «Перезапустить» скрыты.

Для PHP-FPM и Redis доступно только действие «Перезапустить».

Для включённого расписания резервных копий отображается «Отключить расписание». Для отключённого расписания отображается «Включить расписание».

Для «Агент обновлений» и «Резервное копирование» отображается «Управление недоступно», поскольку эти строки предназначены только для контроля состояния.

## Выполнение действия

### Перед началом

Перед остановкой или перезапуском проверьте:

* название выбранной службы;
* текущее значение в столбце «Состояние»;
* пояснение в окне «Подробности»;
* влияние действия на клиентский сайт, очереди и запланированные процессы;
* отсутствие выполняющегося обновления или технического обслуживания.

### Порядок работы

{% stepper %}
{% step %}

#### Выберите службу

Откройте вкладку «Состояние служб» и найдите нужную строку.
{% endstep %}

{% step %}

#### Проверьте текущее состояние

При необходимости нажмите «Подробности» и проверьте результат последнего выполнения, количество перезапусков и пояснение системного агента.
{% endstep %}

{% step %}

#### Выберите действие

Нажмите доступную кнопку в столбце «Действия».
{% endstep %}

{% step %}

#### Подтвердите выполнение

Проверьте название действия и службы в открывшемся окне. Нажмите «Подтвердить».

Для закрытия окна без выполнения используйте «Отмена».
{% endstep %}

{% step %}

#### Дождитесь завершения

Во время выполнения отображается сообщение «Выполняем действие и проверяем состояние службы…».

Окно нельзя закрыть кнопкой «Отмена», клавишей Escape или нажатием за его пределами, пока действие не завершено.
{% endstep %}

{% step %}

#### Проверьте результат

После успешного выполнения строка службы обновится, появится уведомление с названием действия и службы, а журнал загрузит новую запись.
{% endstep %}
{% endstepper %}

## Защита от повторного выполнения

Перед изменением состояния системный агент сохраняет идентификатор подтверждённого действия. После этого операция принадлежит агенту и может завершиться, даже если браузер или Backend временно потеряют соединение.

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

> Связь со службой восстанавливается. Проверяем сохранённый результат без повторного запуска команды…

В этот момент интерфейс повторно запрашивает результат с тем же идентификатором. Команда над службой второй раз не запускается.

{% hint style="warning" %}
Не обновляйте страницу и не создавайте новое действие, пока интерфейс восстанавливает результат. Особенно это важно при перезапуске PHP-FPM: исходное соединение может прерваться уже после выполнения команды.
{% endhint %}

Если системный агент вернул подтверждённую ошибку, следующая ручная попытка считается новым действием и требует повторного подтверждения.

## Ограничения управления

Одновременно выполняется только одно действие над одной службой. Пока оно не завершено, остальные кнопки управления недоступны.

Системный агент может отказать в запуске нового действия, если:

* выполняется обновление или восстановление iEXExchanger;
* удаляется системный релиз;
* уже выполняется другое действие над службой;
* включён режим технического обслуживания;
* сервер занят другой операцией, изменяющей системное состояние;
* системный агент не может надёжно сохранить состояние действия.

Одно действие ограничено двумя минутами. Если служба не подтверждает требуемое состояние за это время, операция считается неуспешной.

## Что нельзя сделать в разделе

Через страницу «Службы» нельзя:

* выполнить произвольную серверную команду;
* указать собственное имя службы;
* управлять Nginx;
* управлять PostgreSQL;
* управлять Certbot;
* остановить или перезапустить «Агент обновлений»;
* вручную запустить «Резервное копирование»;
* открыть полный системный журнал Linux.

Nginx, PostgreSQL и Certbot намеренно не входят в каталог административной панели.

## Журнал действий

Вкладка «Журнал действий» содержит записи об управлении службами через защищённый интерфейс iEXExchanger.

В таблице отображаются:

* «Служба» — служба, над которой выполнялось действие;
* «Действие» — выбранная команда;
* «Администратор» — имя и E-mail сотрудника, выполнившего действие;
* «Результат» — «Выполнено» или «Ошибка»;
* «Дата» — время создания записи.

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

Если имя и E-mail администратора отсутствуют, в столбце «Администратор» отображается «Система».

При отсутствии записей выводятся сообщения «Действий ещё не было» и «После первого управления службой запись появится здесь».

### Границы журнала

Журнал показывает попытки управления, которые прошли через раздел «Службы». Он не является полным журналом `systemd` и не показывает изменения, выполненные вручную на сервере или другими системными процессами.

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

Состояние строки на вкладке «Состояние служб» является основной проверкой результата. Не запускайте действие повторно только из-за того, что новая запись ещё не появилась в журнале.

## Если возникла проблема

### «Не удалось получить состояние служб»

Системный агент недоступен или не смог прочитать каталог служб.

1. Нажмите «Обновить».
2. Проверьте, появились ли строки служб.
3. Если ошибка повторяется, передайте серверному администратору время ошибки и текст сообщения.
4. Серверный администратор должен проверить «Агент обновлений», его локальное соединение и совместимость версий.

### В столбце «Действия» указано «Управление недоступно»

Проверьте:

* назначено ли право «Управление службами обменника»;
* не включён ли общий режим чтения;
* не работает ли активная учётная запись только в режиме чтения;
* поддерживает ли выбранная служба действия.

Для строк «Агент обновлений» и «Резервное копирование» отсутствие действий является нормальным поведением.

### Отображается восстановление соединения

Не создавайте новое действие. Интерфейс проверяет результат ранее принятой команды и не повторяет её.

Дождитесь успешного результата или подтверждённого сообщения об ошибке.

### Появилось сообщение «Не удалось выполнить действие»

1. Прочитайте сообщение в окне.
2. Откройте вкладку «Состояние служб».
3. Нажмите «Обновить».
4. Проверьте фактическое состояние выбранной службы.
5. Откройте «Журнал действий» и найдите последнюю запись.
6. Перед повторным подтверждением устраните причину, указанную в сообщении или коде ошибки.

### Служба остаётся в состоянии «Запускается»

После запуска или перезапуска подождите не менее 30 секунд. Состояние обновляется автоматически каждые 10 секунд.

Если служба не переходит в состояние «Работает», откройте «Подробности» и проверьте пояснение агента.

### Служба перешла в состояние «Нестабильно»

Такое состояние означает, что служба перезапускалась не менее трёх раз и ещё не проработала 10 минут после последнего запуска.

Не выполняйте повторные перезапуски без диагностики. Передайте серверному администратору название службы, количество перезапусков, время работы и пояснение из «Подробности».

### Коды ошибок журнала

| Код                                            | Причина                                                   | Действие                                                               |
| ---------------------------------------------- | --------------------------------------------------------- | ---------------------------------------------------------------------- |
| `agent_unavailable`                            | Системный агент или его локальное соединение недоступны   | Проверьте состояние агента и повторите загрузку                        |
| `agent_protocol_error` или `protocol_mismatch` | Версии Backend и системного агента несовместимы           | Сверьте установленные версии iEXExchanger и агента                     |
| `update_workflow_busy`                         | Выполняется обновление или восстановление                 | Дождитесь завершения операции                                          |
| `release_deletion_busy`                        | Выполняется удаление релиза                               | Дождитесь завершения удаления                                          |
| `service_action_busy`                          | Уже выполняется другое действие над службой               | Дождитесь его завершения                                               |
| `maintenance_active`                           | Включён режим технического обслуживания                   | Завершите обслуживание перед управлением службами                      |
| `system_mutation_busy`                         | Сервер занят другой изменяющей операцией                  | Дождитесь завершения текущей операции                                  |
| `service_action_failed`                        | Служба не подтвердила успешное состояние                  | Обновите состояние и проверьте серверный журнал службы                 |
| `agent_restarted`                              | Агент был перезапущен во время действия                   | Проверьте фактическое состояние и только затем создайте новое действие |
| `agent_state_failed`                           | Агент не смог надёжно сохранить или прочитать результат   | Не повторяйте действие до проверки фактического состояния              |
| `service_catalog_failed`                       | Агент не смог подготовить доверенный каталог служб        | Проверьте установку и состояние системного агента                      |
| `service_status_failed`                        | Не удалось прочитать состояние службы                     | Проверьте службу и повторите обновление                                |
| `maintenance_status_failed`                    | Не удалось проверить режим обслуживания                   | Требуется серверная диагностика                                        |
| `service_action_capacity`                      | Защищённый журнал агента достиг допустимого объёма        | Требуется обслуживание системного агента                               |
| `idempotency_conflict`                         | Идентификатор подтверждения уже связан с другим действием | Закройте ошибку, обновите состояние и подтвердите новое действие       |
| `invalid_service_action`                       | Выбранное действие не разрешено для этой службы           | Используйте только кнопку, доступную в текущей строке                  |

## Проверка результата

<table><thead><tr><th width="263.52734375">Выполненное действие</th><th>Признак успешного результата</th></tr></thead><tbody><tr><td>«Запустить»</td><td>После периода запуска отображается «Работает», а в «Подробности» служба имеет активное состояние</td></tr><tr><td>«Остановить»</td><td>Отображается «Остановлена», а в столбце «Действия» появляется «Запустить»</td></tr><tr><td>«Перезапустить»</td><td>Сначала может отображаться «Запускается», затем — «Работает»; время работы начинается заново</td></tr><tr><td>«Запустить сейчас»</td><td>В «Подробности» указан успешный результат и обновлена длительность последнего выполнения</td></tr><tr><td>«Включить расписание»</td><td>Отображается «Работает», указана дата следующего запуска и доступно «Отключить расписание»</td></tr><tr><td>«Отключить расписание»</td><td>Отображается «Отключена» и доступно «Включить расписание»</td></tr></tbody></table>

{% hint style="success" %}
Действие завершено, если строка службы показывает ожидаемое состояние после обновления. Запись «Выполнено» в «Журнал действий» служит дополнительным подтверждением.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.iexexchanger.com/guide/utility/sluzhby.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
