Рубрики
Uncategorized

Мониторинг фоновых заданий и команд Laravel с помощью инспектора

В этой статье я покажу вам, как включить свет на темной стороне вашего приложения:… Помечено как laravel, php, производительность.

В этой статье я покажу вам, как включить свет в темной части вашего приложения: “фоновые задания и выполнение запланированных команд мастера”.

Laravel предоставляет отличную архитектуру для заданий в очереди и запланированных задач cron. Я сам часто ими пользуюсь. Они позволяют нам выполнять некоторый фрагмент кода асинхронно в фоновом режиме вне классического цикла HTTP-запросов.

Часто они вызывают беспокойство разработчиков, поскольку их выполнение не связано с непосредственным взаимодействием с пользователем. Они могут ошибаться в течение нескольких дней, и мы не сможем узнать об этом, пока мы вручную не проверим их результаты, как правило, в журналах.

Если что-то пойдет не так во время HTTP-запроса, появятся красные пузырьки или сообщения, которые немедленно проинформируют пользователя о проблеме. Довольно легко обнаружить соответствующие ошибки до выпуска программного обеспечения в производство с помощью автоматизированных тестов или с помощью приложения самостоятельно.

Если задание в очереди или запланированная команда Ремесленника завершатся неудачей, он сделает это тихо, так, чтобы никто не заметил.

Твит ниже привлек мое внимание:

Я понимаю эту озабоченность и люблю ее каждый день, стараясь сделать все возможное, чтобы избежать непредсказуемых ошибок или узких мест.

Мы создаем программное обеспечение; автоматизация заложена в нашей ДНК, но вот в чем ловушка. Мы всегда сосредоточены на том, как автоматизировать работу наших клиентов, и забываем, что можем сделать то же самое (или даже лучше) со своими собственными.

Inspector – это пакет composer для добавления мониторинга в реальном времени в приложения Laravel, он очень прост в установке и использовании, и для начала работы требуется всего две минуты.

Позвольте мне показать вам, как это работает.

Выполните приведенную ниже команду, чтобы установить последнюю версию пакета:

composer require inspector-apm/inspector-laravel

Настройте ключ API

Получите свежий ключ API, зарегистрировавшись в Inspector Получите свежий ключ API, зарегистрировавшись в Inspector

Вы увидите инструкции по установке прямо на экране приложения:

Поместите ключ API в файл вашей среды:

INSPECTOR_API_KEY=9a304b04b8XXXXXXXXXXXX1f

Тест все работает

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

php artisan inspector:test

Перейти к ( https://app.inspector.dev/home )[https://app.inspector.dev/home ] для изучения ваших демонстрационных данных.

По умолчанию инспектор будет отслеживать все фоновые задачи:

  • Задания в очереди
  • Запланированные команды ремесленника
  • Необработанные Исключения

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

Вы мгновенно увидите потоки транзакций на панели управления вашего проекта:

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

Благодаря Inspector вы можете разместить все, что хотите, на своей временной шкале, получая обратную связь в режиме реального времени о выполнении блока кода внутри вашей работы или в команде Artisan.

Предположим, что в вашем коде выполняется внешний http-запрос, который по умолчанию отсутствует на временной шкале. Используйте фасад инспектора:

$segment = \Inspector::startSegment('http');

$guzzleClient->get('https://www.example.com');

$segment->end();

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

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

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

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

Инспектор позволяет вам сообщать об исключении вручную, если вы хотите быть в курсе этого:

try {
    $segment = Inspector::startSegment('http');
    $guzzleClient->get('https://www.example.com');

} catch (GuzzleException $exception) {
    Inspector::reportException($exception);
} finally {
    $segment->end();
}

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

Когда речь идет о фоновых заданиях или запланированных командах, для получения истинной картины происходящего могут потребоваться часы или, исходя из моего опыта, даже дни. Инспектор может иметь огромное значение с точки зрения эффективности и производительности.

Делегирование обнаружения ошибок инструменту автоматического мониторинга позволяет решить 90% проблем за половину времени, еще до того, как пользователи узнают о них.

Новичок в инспекторе?

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

Благодаря Inspector у вас никогда не возникнет необходимости устанавливать что-либо на уровне сервера или выполнять сложную настройку в вашей облачной инфраструктуре.

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

Посетите наш веб-сайт для получения более подробной информации: Посетите наш веб-сайт для получения более подробной информации:

Оригинал: “https://dev.to/inspector/laravel-background-jobs-commands-monitoring-with-inspector-2mmo”