• Час читання ~1 хв
  • 07.07.2022

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

Як власник продукту, я дізнався, як важко виправити проблему з програмним забезпеченням. Особливо, коли це негативно впливає на досвід користувачів. Або, що ще гірше, блокує нових потенційних клієнтів під час адаптації.

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

І чим більше розвивається програма (більше рядків коду, нові розробники працюють), тим важче уникнути інцидентів.

Коли я почав ділитися своєю ідеєю щодо Inspector, я зрозумів, що багато розробників знають цю проблему. Вони витрачають занадто багато часу на дослідження дивної поведінки в своїх програмах.А найпопулярніші платформи моніторингу такі складні й, ймовірно, не бюджетні.

Інспектор заповнює цю прогалину.

Першим дізнайтеся, чи проблема у вашій програмі, до того, як ваші клієнти наштовхнуться на проблему, це може значно зменшити негативний вплив на їхній досвід роботи з вашим продуктом.Це належна основа для початку успішних ділових відносин із вашими клієнтами.

Моніторинг виконання коду Lavarel: як це працює

Inspector — це пакет для створення композиційного пакета для додавання моніторингу виконання коду в режимі реального часу до вашої програми Laravel. Це дозволяє вам працювати над безперервними змінами коду, ловлячи помилки та вузькі місця в режимі реального часу. Перш ніж це зроблять користувачі.

Початок займає менше однієї хвилини. Давайте подивимося, як це працює.

Встановіть пакет composer

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

composer require inspector-apm/inspector-laravel

Налаштуйте ключ передачі

Отримайте новий ключ передачі, зареєструвавшись у Inspector (https://app.inspector.dev/register) і створивши новий проект, це займе лише кілька секунд.

Ви побачите інструкції зі встановлення безпосередньо на екрані програми:

Налаштуйте ключ прийому у файлі середовища:

INSPECTOR_INGESTION_KEY=9a304b04b8XXXXXXXXXXXX

Перевірте, чи все працює

Виконайте нашу команду test, щоб перевірити, чи правильно ваша програма надсилає дані інспектору:

php artisan inspector:test

Перейти до (https://app.inspector.dev/home)[https://app.inspector.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 створює візуальне представлення того, що відбувається у вашому коді.

Ви побачите потоки транзакцій на інформаційній панелі.І для кожної транзакції ви можете відстежувати, що виконує ваша програма в режимі реального часу:

Панель інструментів інспектора

і для кожної транзакції ви можете контролювати, що виконує ваша програма в режимі реального часу:

Збільште графік трансакцій

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

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

Завдяки Inspector ви можете додавати власні сегменти у свою хронологію, крім тих, які виявляються за умовчанням.Це дозволяє виміряти вплив прихованого блоку коду на продуктивність транзакції.

Дозвольте показати вам приклад із реального життя.

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

Інспектор виявляє запити на завдання та базу даних за замовчуванням.Проте, може бути цікаво відстежувати та вимірювати виконання HTTP-запиту до зовнішньої служби. Потім активуйте сповіщення, якщо щось піде не так.

Використовуйте допоміжну функцію inspector():

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