• Время чтения ~1 мин
  • 07.07.2022

Здравствуйте, я инженер-программист Валерио, основатель и технический директор Inspector.

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

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

И чем больше растет приложение (больше строк кода, новых разработчиков), тем сложнее избежать инцидентов.

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

Инспектор заполняет этот пробел.

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

Мониторинг выполнения кода Lavarel: как это работает

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

Для начала требуется менее одной минуты. Посмотрим, как это работает.

Установите пакет композитора

Запустите команду composer в своем терминале:

composer require inspector-apm/inspector-laravel

Настройте ключ передачи

Чтобы получить новый ключ Ingestion, зарегистрируйтесь в Inspector (https://app.spector.dev/register) и создайте новый проект. Это займет всего несколько секунд.

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

tUP ключ Ingestion в файле вашей среды:

INSPECTOR_INGESTION_KEY=9a304b04b8XXXXXXXXXXXX

Проверить, все ли работает

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

php artisan inspector:test

Перейти к (https://app.spector.dev/home)[https://app.spawn.dev/home], чтобы изучить ваши демонстрационные данные.


По умолчанию Inspector отслеживает:

  • Database interactions
  • Queued Jobs execution
  • Artisan commands
  • Email sent
  • Notifications
  • Unhandled Exceptions

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

Отслеживание входящих HTTP-запросов

Чтобы активировать мониторинг HTTP-запросов, вы можете использовать промежуточное ПО WebRequestMonitoring как независимый компонент. Затем вы вольны решать, какие маршруты нужно отслеживать. Основывайтесь на конфигурации маршрутов или настройках мониторинга.

Подключите промежуточное ПО в классе App\Http\Kernel:

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [
       ...,
       \Inspector\Laravel\Middleware\WebRequestMonitoring::class,
    ],
 
    'api' => [
       ...,
       \Inspector\Laravel\Middleware\WebRequestMonitoring::class,
    ]
]

Разверните код и начните выполнение

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

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

Панель управления инспектора

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

Расширьте временную шкалу транзакций

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

  • Http calls to external services
  • Function that deals with files (pdf, excel, images)

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

Позвольте мне показать вам пример из реальной жизни.

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

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

Используйте вспомогательную функцию spector():

class TagUserAsActive extends Job
{
    /** @param User $user */
    protected $user;
 
    // Monitoring an external HTTP requests
    public function handle()
    {
        inspector()->addSegment(function () {
 
            $this->guzzle->post('/mail-marketing/add_tag', [
                'email' => $this->user->email,
                'tag' => 'active',
            ]);
 
        }, 'http');
    }
}

Вы сможете определить влияние нового сегмента на графике транзакции:

Ошибки Laravel & Оповещение об исключениях

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

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

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

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

 
try {
 
   // Your dangerous code here...
 
} catch (GuzzleException $exception) {
   inspector()->reportException($exception)
}

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

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

Отчеты об ошибках инспектора

Заключение

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

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

Попробуйте Inspector бесплатно сколько хотите!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297