Uuden aikakauden virheidenhallinta – Bugsnag

Olin uudistamassa asiakkaani tilaustenhallintajärjestelmää, kun tuli aika miettiä, miten hoitaisin virheilmoitukset. Aikaisempi asiakkaan järjestelmä logitti tapahtumat lukuisiin eri tekstitiedostoihin, joita ei kukaan edes koskaan lukenut.

Logitus tiedostoihin oli tehty siten, että info-, warning- ja error-viestejä ei oltu mitenkään eroteltu. Päivittäin tiedostoihin kertyi tuhansia rivejä, jotka olivat pääasiassa pelkkää infoa, jota oltiin mahdollisesti tarvittu aikaisemman järjestelmän teknisiä virheitä etsiessä.

Vaikka miten paha virhe olisi tullut, meillä ei olisi ollut siitä tietoa, ennen kuin asiakaspalvelu tai esimerkiksi laskutus- tai postitusyhteistyökumppani olisi siitä ilmoittanut. Samalla emme tietysti myöskään saaneet tietoa, mikäli jollain yhteistyökumppanilla olisi ollut heidän järjestelmien osalta virhe, ilman heidän ilmoitusta. Usein virheet tulivatkin tietoomme vasta usean viikon jälkeen niiden ilmestymisestä.

Oli siis syytä uudistaa koko logitusprosessi. Mietin aluksi, että miten logitusta tiedostoihin olisi järkevä uudistaa ja samalla esimerkiksi varoittaa sähköpostitse vaarallisemmista virheistä yms. Sitten tajusin, että tarvitsemani kirjasto todennäköisesti löytyisi jo valmiina. Kirjastoa etsiessäni löysinkin jotain paljon paljon parempaa.

Nykyisin virheilmoitusten hallintaan on lukuisia SaaS-palveluita. Näitä vertaillessa ja tutkiessa löytyi yksi ehdottomasti ylitse muiden. Bugsnag. Ohessa muutamia etuja ja faktoja Bugsnagin käytössä.

  • Tuki lukuisille kielille. Android, iOS, JS, Node.js, .NET, JAVA, PHP, Python… you name it! Eri kielien alla on vielä erikseen valmiit kirjastot eri alustoille. Esimerkiksi PHP:n osalta valmiskirjastot löytyy mm. Symfonylle, Laravelille ja WordPressille.
  • Voit hoitaa Bugsnagillä sekä frontend-, että backend-virheet.
  • Integraatio mm. Asanaan ja Jiraan. Näin saat suoraan asana-kanavalle tai jiraan halutut virheraportit. Tämä siis mm. sähköposti- ja tekstiviesti-ilmoitusten lisäksi.
  • Logittaa käsittelemättömät virheet automaattisesti.
  • Virheiden mukana tulee paljon automaattista dataa; mm. ohjelmiston versio, aika, palvelimen hostname, requestin tyyppi (esim. console / http) yms.
  • Laajat mahdollisuudet muokata käsiteltyjen virheiden mukana lähetettävää dataa, tärkeimpänä virheen kriittisyys (info / warning / error) ja mukaan lähetettävät parametrit.
  • Virheraporttiin saa mukaan halutut parametrit. Parametrit voivat sisältää mitä tahansa, jsonia, objektin tai normaalin arvon. Bugsnag konvertoi ja näyttää parametrit oikein raportoinnissaan.
  • Virheiden trackays per käyttäjä tai määritellyn parametrin avulla. Näät virheestä, että keitä kaikkia käyttäjiä se koskee ja vielä virheet kunkin yksittäisen käyttäjän osalta erikseen.
  • Automaattinen stacktrace virheen mukana, mahdollisuus myös tarkastella virheeseen liittyvää koodia Gitistä.
  • Breadcrumbs. Näitä kerätään sekä automaattisesti (esim. sql-kyselyt), että manuaalisesti. Breadcrumbsin idea on se, että näät mitä kaikkea ennen virhettä on tapahtunut. Voit siis manuaalisesti lisätä vaikka viestit 1) “käyttäjän validointi onnistui” 2) “käyttäjän tallennus onnistui”, ja sitten breadcrubsissa näät, että onko molemmat tapahtuneet ennen virhettä, vai tuliko virhe esim. heti käyttäjän validoimisen jälkeen. Breadcrumbsit lähetetään palvelimelle vasta virheen havaitsemisen yhteydessä. Eli mikäli suoritus ei aiheuta virhettä, ei niistä tule kuormitusta verkolle.
  • Mainio raportointinäkymä. Huomaat mm. mistä päivästä alkaen tietty virhe on alkanut esiintyä erityisen paljon, ja milloin se on havaittu ensimmäisen, sekä viimeisen kerran. Klikkaamalla virheriviä aukeaa kaikki yksittäiset virhetapahtumat kyseisen virheen osalta.
  • Yksilöidyt virheet säilötään ensimmäiset 60 päivää, jonka jälkeen ne siirtyvät statistiikoiksi. Muissa vastaavissa palveluissa virheiden yksilötiedot säilötään normaalisti paljon lyhyemmäksi ajaksi.

Kommentoi ihmeessä, mikäli heräsi kysymyksiä tai ajatuksia Bugsnagistä!