• Czas czytania ~6 min
  • 07.07.2022

Cześć, jestem inżynierem oprogramowania Valerio, założycielem i CTO w Inspektorze.

Jako właściciel produktu dowiedziałem się, jak trudne może być rozwiązanie problemu z oprogramowaniem. Zwłaszcza, gdy wpływa to negatywnie na wrażenia użytkowników. Lub, co gorsza, blokuje nowych potencjalnych klientów podczas wdrażania.

Podczas cykli rozwojowych nowe zmiany w kodzie są publikowane prawie co tydzień, jeśli nie codziennie.Niestety nie da się przewidzieć wszystkich problemów, które mogą wystąpić po każdym wydaniu. Co więcej, użytkownicy nie spędzają czasu na zgłaszaniu błędów. Przestają używać Twojego produktu, jeśli nie działa zgodnie z oczekiwaniami. Następnie szukają innej, która lepiej odpowiada ich potrzebom.

I im bardziej aplikacja się rozwija (więcej linii kodu, nowi programiści w pracy), tym trudniej jest uniknąć incydentów.

Kiedy zacząłem dzielić się pomysłem na program Inspector, zdałem sobie sprawę, że wielu programistów zna ten problem. Spędzają zbyt dużo czasu na badaniu dziwnych zachowań w swoich aplikacjach.A najpopularniejsze platformy monitorujące są tak skomplikowane i prawdopodobnie nie mają budżetu.

Inspektor wypełnia tę lukę.

Bądź pierwszym, który dowie się, czy Twoja aplikacja ma problemy, zanim klienci natkną się na problem, co może drastycznie zmniejszyć negatywny wpływ na ich wrażenia z korzystania z Twojego produktu.Są to właściwe podstawy do rozpoczęcia udanych relacji biznesowych z klientami.

Monitorowanie wykonywania kodu Lavarel: jak to działa

Inspector to pakiet kompozytorski, który dodaje monitorowanie wykonywania kodu w czasie rzeczywistym do aplikacji Laravel. Pozwala pracować nad ciągłymi zmianami kodu, wyłapując błędy i wąskie gardła w czasie rzeczywistym. Zanim zrobią to użytkownicy.

Rozpoczęcie zajmuje mniej niż minutę. Zobaczmy, jak to działa.

Zainstaluj pakiet Composer

Uruchom polecenie kompozytora w swoim terminalu:

composer require inspector-apm/inspector-laravel

Skonfiguruj klucz przetwarzania

Uzyskaj nowy klucz przetwarzania, rejestrując się w Inspektorze (https://app.inspector.dev/register) i tworząc nowy projekt, zajmuje to tylko kilka sekund.

Instrukcje instalacji zobaczysz bezpośrednio na ekranie aplikacji:

tuP klucz przetwarzania w pliku środowiska:

INSPECTOR_INGESTION_KEY=9a304b04b8XXXXXXXXXXXX

Przetestuj, czy wszystko działa

Wykonaj nasze polecenie test, aby sprawdzić, czy Twoja aplikacja prawidłowo wysyła dane do inspektora:

php artisan inspector:test

Przejdź do (https://app.Inspector.dev/home)[https://app.inspector.dev/home], aby przeglądać dane demonstracyjne.


Domyślnie monitory inspektorów:

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

Ale włączyliśmy światło w 50% naszej aplikacji wykonywanej w tle. Następnym krokiem jest monitorowanie wszystkich cykli wykonania generowanych przez interakcje użytkownika.

Monitoruj przychodzące żądania HTTP

Aby aktywować monitorowanie żądań HTTP, można użyć oprogramowania pośredniczącego WebRequestMonitoring jako niezależnego komponentu. Możesz wtedy swobodnie decydować, które trasy mają być monitorowane. Oprzyj to na konfiguracji tras lub preferencjach monitorowania.

Dołącz oprogramowanie pośredniczące w klasie 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,
    ]
]

Wdróż swój kod i poruszaj się po procesie wykonywania

Następnym krokiem jest wdrożenie kodu w środowisku produkcyjnym. Następnie sprawdź, jak Inspector tworzy wizualną reprezentację tego, co dzieje się w Twoim kodzie.

Zobaczysz strumienie transakcji na swoim pulpicie nawigacyjnym.A dla każdej transakcji możesz monitorować, co Twoja aplikacja wykonuje w czasie rzeczywistym:

Panel inspektora

a dla każdej transakcji możesz monitorować, co Twoja aplikacja wykonuje w czasie rzeczywistym:

Wzbogać oś czasu transakcji

Inspektor domyślnie monitoruje zapytania do bazy danych, zadania w tle i polecenia rzemieślnika. Mimo to w kodzie może znajdować się wiele krytycznych instrukcji, które wymagają monitorowania pod kątem wydajności i błędów:

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

Dzięki Inspektorowi możesz dodawać niestandardowe segmenty na swojej osi czasu oprócz domyślnie wykrywanych.Pozwala to zmierzyć wpływ ukrytego bloku kodu na wydajność transakcji.

Pozwól, że pokażę Ci przykład z życia.

Załóżmy, że masz zadanie w kolejce, które wykonuje w tle niektóre zapytania do bazy danych i żądanie HTTP do usługi zewnętrznej.

Inspektor domyślnie wykrywa zapytania dotyczące zadań i bazy danych.Mimo to może być interesujące monitorowanie i mierzenie wykonania żądania HTTP do usługi zewnętrznej. Następnie aktywuj alerty, jeśli coś pójdzie nie tak.

Użyj funkcji pomocniczej 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');
    }
}

Będziesz w stanie określić wpływ nowego segmentu na oś czasu transakcji:

Błędy Laravela i amp; Powiadomienia o wyjątkach

Domyślnie zgłaszany jest każdy wyjątek uruchomiony w aplikacji Laravel. Dzięki temu będziesz ostrzegany o nieprzewidywalnych błędach w czasie rzeczywistym.

Chcę, aby każda zmiana, którą wprowadzam w moim kodzie, była idealna.Ale rzeczywistość jest taka, że ​​nie zawsze tak jest. Niektóre błędy pojawiają się natychmiast po aktualizacji, podczas gdy inne pojawiają się nieoczekiwanie. To niefortunny fakt dla programistów. Często zależy to również od problemów spowodowanych połączeniem między naszą aplikacją a innymi usługami.

Ale Inspektor ułatwia pracę.Automatyzuje wykrywanie nieznanych problemów, dzięki czemu nie musisz już ręcznie sprawdzać stanu swoich aplikacji. Już nie czekasz na zgłoszenia od użytkowników. Jeśli coś pójdzie nie tak, otrzymasz powiadomienie w czasie rzeczywistym. A po każdym wydaniu możesz być informowany o wpływie najnowszego refaktoryzacji kodu.

Jeśli Twój kod uruchomi wyjątek, ale nie chcesz blokować wykonania, ręcznie zgłoś błąd inspektorowi w celu osobistego monitorowania.

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

Ponadto, jeśli żądanie HTTP nie powiedzie się, zostaniesz powiadomiony w czasie rzeczywistym za pośrednictwem skrzynki odbiorczej w celu zbadania błędu.

Uzyskasz nawet dostęp do szczegółowych informacji zebranych przez Inspektora w czasie rzeczywistym:

Raportowanie błędów inspektora

Wniosek

Gdy klient zgłasza, że ​​coś nie działa, zmusza Cię to do rezygnacji z tego, co robisz.Następnie zacznij próbować odtworzyć scenariusz oraz ponownie przechwyć i ponownie przeanalizuj dzienniki w swoim zestawie narzędzi.

Uzyskanie dokładnego obrazu tego, co się dzieje, może zająć godziny, a nawet dni. Inspektor może znacząco wpłynąć na wydajność, produktywność i zadowolenie klientów.

Wypróbuj Inspektora za darmo tak długo, jak chcesz!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

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...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297