> 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/help-center/administrirovanie/obsluzhivanie/laravel-pulse.md).

# Laravel Pulse

Laravel Pulse — это встроенный экран мониторинга производительности iEXExchanger.

Он помогает смотреть нагрузку на backend-часть проекта, медленные запросы, ошибки, очереди, кеш, фоновые задачи, внешние HTTP-запросы и общее состояние сервера.

Pulse открывается на техническом домене админки:

```
https://app.ваш_домен/pulse
```

## Для чего нужен Laravel Pulse

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

С его помощью можно смотреть:

* состояние сервера;
* активность пользователей и запросов;
* очереди и фоновые задачи;
* работу кеша;
* медленные SQL-запросы;
* ошибки приложения;
* медленные HTTP-запросы;
* медленные задачи в очередях;
* медленные внешние запросы к API, мерчантам, выплатам и другим сервисам.

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

## Где находится Laravel Pulse

В панели управления откройте: **«Утилиты» — «Horizon и Pulse» — «Laravel Pulse»**

<figure><img src="https://3493807215-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuyjsNtEAtO6Sby8CHWyD%2Fuploads%2Fgit-blob-e5a75405936441c8012f7c2dd3a5241c3f9cc7ba%2Fimage.png?alt=media" alt="" width="375"><figcaption></figcaption></figure>

Прямой адрес:

```
https://app.ваш_домен/pulse
```

<figure><img src="https://3493807215-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FuyjsNtEAtO6Sby8CHWyD%2Fuploads%2Fgit-blob-11974c75c78cf59a81736e85fea9a3dc778ef78d%2F7a87bd19-01db-45dc-9a19-4fe9f79353db%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>

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

{% hint style="info" %}

## Права доступа

Доступ к Laravel Pulse разрешается только пользователям панели управления, у которых есть право:

```
Разрешить доступ к мониторингу данных
```

Это право находится в настройках групп пользователей.

Рекомендуется выдавать доступ к Pulse только:

* владельцу проекта;
* техническому администратору;
* ответственному специалисту.

Обычным менеджерам этот раздел обычно не нужен, потому что в Pulse отображается техническая информация о работе системы.
{% endhint %}

***

## Включение Laravel Pulse

По умолчанию Laravel Pulse может быть выключен.

Чтобы включить его, нужно изменить настройки backend-проекта на сервере.

Перейдите в директорию backend-проекта:

{% content-ref url="/pages/MDuqJRjp8L1cHG9i4sRB" %}
[Broken mention](broken://pages/MDuqJRjp8L1cHG9i4sRB)
{% endcontent-ref %}

```bash
cd /var/www/имя_пользователя_backend/data/www/app.ваш_домен
```

Откройте файл `.env` и добавьте или измените параметр:

```env
PULSE_ENABLED=true
```

Если такой строки нет, добавьте её в конец файла.

После изменения `.env` очистите кеш конфигурации:

```bash
php artisan optimize:clear
```

Если на сервере используется PHP 8.4 через FastPanel, команда может выглядеть так:

{% content-ref url="/pages/cCEoFDjTDIufy3NUEakd" %}
[Подключение к серверу по SSH](/help-center/upravlenie-serverom/podklyuchenie-k-serveru-po-ssh.md)
{% endcontent-ref %}

```bash
/opt/php84/bin/php artisan optimize:clear
```

***

## Проверка таблиц Pulse

В iEXExchanger таблицы Pulse уже предусмотрены в структуре системы.

Но если проект устанавливался или обновлялся вручную, рекомендуется выполнить миграции:

```bash
php artisan migrate --force
```

Для PHP 8.4:

{% content-ref url="/pages/cCEoFDjTDIufy3NUEakd" %}
[Подключение к серверу по SSH](/help-center/upravlenie-serverom/podklyuchenie-k-serveru-po-ssh.md)
{% endcontent-ref %}

```bash
/opt/php84/bin/php artisan migrate --force
```

Pulse использует таблицы:

```
pulse_entries
pulse_aggregates
pulse_values
```

Если этих таблиц нет, экран Pulse не сможет корректно собирать и показывать данные.

***

## Настройка хранения данных

По умолчанию Pulse хранит данные в базе данных.

Для большинства проектов достаточно такой настройки:

```dotenv
PULSE_ENABLED=true
PULSE_STORAGE_DRIVER=database
PULSE_INGEST_DRIVER=storage
PULSE_STORAGE_KEEP="7 days"
PULSE_INGEST_KEEP="7 days"
```

Что означает:

<table><thead><tr><th width="284.52734375">Параметр</th><th>Что делает</th></tr></thead><tbody><tr><td><code>PULSE_ENABLED=true</code></td><td>Включает сбор данных Pulse</td></tr><tr><td><code>PULSE_STORAGE_DRIVER=database</code></td><td>Хранит данные в базе данных</td></tr><tr><td><code>PULSE_INGEST_DRIVER=storage</code></td><td>Записывает данные напрямую в хранилище</td></tr><tr><td><code>PULSE_STORAGE_KEEP="7 days"</code></td><td>Хранит собранную статистику 7 дней</td></tr><tr><td><code>PULSE_INGEST_KEEP="7 days"</code></td><td>Хранит входящие данные 7 дней</td></tr></tbody></table>

## Рекомендуемые настройки для обычного проекта

Добавьте в `.env`:

```dotenv
PULSE_ENABLED=true
PULSE_STORAGE_DRIVER=database
PULSE_INGEST_DRIVER=storage
PULSE_STORAGE_KEEP="7 days"
PULSE_INGEST_KEEP="7 days"
PULSE_SERVER_NAME=main
```

После этого выполните:

```bash
php artisan optimize:clear
```

Затем откройте:

```
https://app.ваш_домен/pulse
```

***

## Если используется Redis ingest

Обычно Redis ingest не требуется для небольших и средних проектов.

Но если проект высоконагруженный и нужно разгрузить обычные web-запросы, можно использовать Redis ingest:

```env
PULSE_INGEST_DRIVER=redis
PULSE_REDIS_CONNECTION=default
```

В этом режиме необходимо запустить отдельный процесс Pulse:

```bash
php artisan pulse:work
```

Для production такой процесс нужно запускать через Supervisor, чтобы он автоматически перезапускался при сбоях.

Пример команды для Supervisor:

```bash
php /var/www/имя_пользователя_backend/data/www/app.ваш_домен/artisan pulse:work
```

{% hint style="info" %}
Если Redis ingest не используется, `pulse:work` запускать не нужно.
{% endhint %}

***

## Снимок состояния сервера

В Pulse есть команда:

```bash
php artisan pulse:check
```

Она делает снимок текущего состояния сервера для блока server monitoring.

Команду можно запускать вручную:

```bash
php artisan pulse:check
```

Если нужно регулярное обновление серверных показателей, проверьте, что на сервере работает Laravel Scheduler через CRON.

{% content-ref url="/spaces/SZ7jPUG5OOOS4hofY7a2/pages/VQTz35uLnAox2blCwlqe" %}
[Планировщик задач](/server-i-dannye/planirovshik-zadach.md)
{% endcontent-ref %}

***

## Что отображается в Pulse

В вашей системе экран Pulse содержит несколько блоков:

* Сервер;
* Использование системы;
* Очереди;
* Кеш;
* Медленные SQL-запросы;
* Ошибки;
* Медленные запросы;
* Медленные задачи;
* Медленные внешние запросы.

{% stepper %}
{% step %}

### Сервер

Блок «Сервер» показывает состояние сервера и базовые показатели нагрузки.

Он помогает понять, насколько сервер справляется с текущей активностью.
{% endstep %}

{% step %}

### Использование системы

Блок «Использование системы» показывает активность приложения: запросы, пользователей и общую работу backend-части.

Этот блок полезен для оценки текущей нагрузки на систему.
{% endstep %}

{% step %}

### Очереди

Блок «Очереди» показывает работу очередей и фоновых задач.

Он полезен, если в системе используются:

* уведомления;
* Telegram-уведомления;
* e-mail-уведомления;
* парсеры;
* выплаты;
* фоновые проверки;
* отложенные задачи.

Если очередь растёт и не уменьшается, нужно дополнительно проверить Laravel Horizon, Redis и Supervisor.
{% endstep %}

{% step %}

### Кеш

Блок «Кеш» показывает обращения к кешу.

Он помогает понять:

* используется ли кеш;
* много ли промахов кеша;
* нет ли лишней нагрузки на базу данных;
* эффективно ли система повторно использует сохранённые данные.
  {% endstep %}

{% step %}

### Медленные SQL-запросы

Блок «Медленные SQL-запросы» показывает запросы к базе данных, которые выполнялись дольше установленного порога.

По умолчанию порог может быть около:

```
1000 мс
```

Этот блок помогает находить места, которые замедляют админку, API или сайт.
{% endstep %}

{% step %}

### Ошибки

Блок «Ошибки» показывает ошибки приложения.

Если на сайте или в админке что-то работает нестабильно, этот блок помогает быстрее найти причину.

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

{% step %}

### Медленные запросы

Блок «Медленные запросы» показывает страницы и backend-запросы, которые выполнялись слишком долго.

Он полезен для диагностики медленной загрузки:

* сайта;
* админки;
* API;
* карточек заявок;
* страниц с большими таблицами.
  {% endstep %}

{% step %}

### Медленные задачи

Блок «Медленные задачи» показывает фоновые задачи, которые выполняются дольше ожидаемого.

Например:

* уведомления;
* обработка заявок;
* парсеры;
* интеграции;
* экспорт;
* аналитика.

Если задача часто попадает в медленные, проверьте её очередь в Horizon и причину долгого выполнения.
{% endstep %}

{% step %}

### Медленные внешние запросы

Блок «Медленные внешние запросы» показывает медленные обращения к внешним сервисам.

Это полезно при работе с:

* мерчантами;
* автовыплатами;
* API курсов;
* внешними парсерами;
* Telegram;
* почтовыми сервисами;
* другими интеграциями.

Если внешний сервис отвечает медленно, проблема может быть не в сервере iEXExchanger, а во внешней стороне.
{% endstep %}
{% endstepper %}

***

## Настройка порогов медленных операций

Если нужно изменить чувствительность Pulse, можно добавить в `.env`:

```env
PULSE_SLOW_QUERIES_THRESHOLD=1000
PULSE_SLOW_REQUESTS_THRESHOLD=1000
PULSE_SLOW_JOBS_THRESHOLD=1000
PULSE_SLOW_OUTGOING_REQUESTS_THRESHOLD=1000
```

Значения указываются в миллисекундах.

Примеры:

```
1000 = 1 секунда
2000 = 2 секунды
5000 = 5 секунд
```

Если поставить слишком маленькое значение, Pulse будет показывать слишком много событий.

Для production обычно достаточно:

```
1000–2000 мс
```

После изменения параметров выполните:

```bash
php artisan optimize:clear
```

***

## Как отключить Laravel Pulse

Если Pulse больше не нужен, его можно отключить.

{% content-ref url="/pages/MDuqJRjp8L1cHG9i4sRB" %}
[Broken mention](broken://pages/MDuqJRjp8L1cHG9i4sRB)
{% endcontent-ref %}

В `.env` укажите:

```env
PULSE_ENABLED=false
```

Затем выполните:

```bash
php artisan optimize:clear
```

После этого Pulse перестанет собирать новые данные.

## Как очистить данные Pulse

Если нужно удалить старую статистику Pulse, выполните:

{% content-ref url="/pages/cCEoFDjTDIufy3NUEakd" %}
[Подключение к серверу по SSH](/help-center/upravlenie-serverom/podklyuchenie-k-serveru-po-ssh.md)
{% endcontent-ref %}

```bash
php artisan pulse:clear
```

Команда очищает накопленные данные Pulse из хранилища.

{% hint style="warning" %}
Используйте очистку осторожно. После выполнения команды старая статистика в Pulse пропадёт.
{% endhint %}

***

## Частые проблемы

<details>

<summary>Страница Pulse не открывается</summary>

Проверьте:

* включён ли параметр `PULSE_ENABLED=true`;
* выполнена ли команда `php artisan optimize:clear`;
* открываете ли вы backend-домен `app.ваш_домен`, а не основной frontend-домен;
* есть ли у пользователя право «Разрешить доступ к мониторингу данных»;
* выполнены ли миграции таблиц Pulse.

</details>

<details>

<summary>В меню нет Laravel Pulse</summary>

Проверьте группу пользователя.

У пользователя должно быть право:

```
Разрешить доступ к мониторингу данных
```

После выдачи права выйдите из панели управления и войдите снова.

</details>

<details>

<summary>Pulse открывается, но данных мало</summary>

Такое возможно сразу после включения.

Pulse начинает собирать данные только после активации. Откройте сайт, админку, выполните несколько тестовых действий или подождите несколько минут.

После этого данные начнут появляться.

</details>

<details>

<summary>Не отображаются серверные показатели</summary>

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

```bash
php artisan pulse:check
```

Также проверьте, что на сервере настроен CRON для Laravel Scheduler.

</details>

<details>

<summary>Pulse показывает много медленных запросов</summary>

Проверьте пороги в `.env`.

Если значения слишком маленькие, Pulse будет показывать слишком много событий.

Для production обычно достаточно:

```
1000–2000 мс
```

</details>

<details>

<summary>После изменения .env Pulse не изменился</summary>

Очистите кеш конфигурации:

```bash
php artisan optimize:clear
```

Если используется Redis ingest и отдельный процесс `pulse:work`, перезапустите процесс через Supervisor.

</details>

## Рекомендации

Для обычного production-проекта достаточно включить:

```env
PULSE_ENABLED=true
PULSE_STORAGE_DRIVER=database
PULSE_INGEST_DRIVER=storage
PULSE_STORAGE_KEEP="7 days"
PULSE_INGEST_KEEP="7 days"
PULSE_SERVER_NAME=main
```

Не выдавайте доступ к Pulse всем менеджерам. Этот раздел предназначен для технического контроля системы.

Если проект высоконагруженный, можно отдельно настроить Redis ingest и запуск `pulse:work` через Supervisor. Для большинства обменников это не требуется на старте.

***

## Коротко

Laravel Pulse — это экран мониторинга производительности iEXExchanger.

Он помогает видеть медленные запросы, ошибки, очереди, кеш, внешние API-запросы и состояние сервера.

Чтобы включить Pulse, добавьте в `.env`:

```env
PULSE_ENABLED=true
```

Затем выполните:

```bash
php artisan optimize:clear
```

Pulse открывается здесь:

```
https://app.ваш_домен/pulse
```

В панели управления: **«Утилиты» — «Horizon и Pulse» — «Laravel Pulse»**

Доступ должен быть только у пользователей с правом:

```
Разрешить доступ к мониторингу данных
```
