Tehnologija

Monitoring PHP aplikacija

monitoring PHP aplikacija - ilustracija

Kada razmatrate najbolje načine za praćenje PHP aplikacija, važno je da imate u vidu da nije potrebno samo da pratite konkretnu aplikaciju već i usluge od kojih ona zavisi, kao i infrastrukturu koja hostuje aplikaciju. U suprotnom, detektovanje uskih grla u performansama i otklanjanje problema može biti veoma teško, što može dovesti do neočekivanog zastoja rada aplikacije.

Kao deo naše fully managed usluge, u mogućnosti smo da klijentima obezbedimo napredne načine praćenja infrastrukture, profilisanje aplikacija, kao i praćenje otvorenih grešaka. Evo o čemu se radi.

Praćenje infrastrukture

Naš napredni sistem praćenja delimično se zasniva na TICK stack-u koji je razvio InfluxData. TICK je akronim za Telegraf, InfluxDB, Chronograf i Kapacitor – komponente koje čine zaokružen sistem praćenja i prikupljanja metrika.

Ostavićemo dublje istraživanje TICK stack-a za drugu priliku, a ovog puta fokusiraćemo se samo na dve najvažnije komponente – Telegraf i InfluxDB.

Telegraf je agent vođen plugin-ovima koji se instalira na serverima i koristi se za prikupljanje različitih metrika operativnog sistema (CPU, memorija, iskorišćenje diska i druge). Zahvaljujući velikom broju dostupnih plugin-ova, Telegraf takođe može prikupljati metrike iz različitih servisa, kao što su HAProxy, MySQL, PHP-FPM, Varnish, Kubernetes, i mnogi drugi!

Kada se metrike prikupe, Telegraf ih može izvesti u različite data store-ove, servise i redove poruka, kao što su Amazon CloudWatch, Graphite, OpenTSDB, Datadog, Kafka i InfluxDB među mnogima drugima.

Naš izbor data store-a je InfluxDB – baza podataka izvanrednih performansi koju koristimo već mnogo godina.

Sve te prikupljene metrike su beskorisne ako ih ne možemo vizualizovati. U tu svrhu koristimo Grafana – open-source platformu za analitiku i praćenje.

Grafana je fenomenalna jer nam omogućava da delimo informativne panele sa našim klijentima. Sa detaljnim uvidom u zdravlje servera i performanse svih servisa koje njihove aplikacije koriste, naši klijenti mogu brzo identifikovati probleme ili degradaciju performansi izazvanu lošim deploy-om, konfigurisati upozorenja na osnovu određenih uslova (npr. stopa grešaka ili vreme učitavanja stranice), dodavati beleške na grafikonima i mnogo više.

Većina naših klijenata koristi web aplikacije napisane u PHP programskom jeziku, i smatrali su naš PHP monitoring dashboard veoma korisnim. Pored specifičnih metrika za PHP-FPM, naš sistem praćenja prikuplja i druge korisne informacije kao što su:

  • Vreme izvršavanja PHP zahteva
  • Vreme procesiranja tih zahteva na CPU-u
  • Distribucija odgovarajućih kodova aplikacije
  • Distribucija PHP grešaka, upozorenja i obaveštenja

influx diagram

 

Profilisanje aplikacije

Iako naš napredni sistem praćenja pruža odličan uvid u funkcionisanje servisa i infrastrukture, da bismo bolje razumeli šta se dešava unutar izvornog koda, neophodno je profilisanje aplikacije.

Profilisanje opisuje metodu merenja memorije i CPU upotrebe aplikacije, učestalosti i trajanja poziva funkcija.

Kada je reč o PHP profajlerima, Xdebug i XHProf su jedni od najpopularnijih. Xdebug postoji od 2002. godine i veoma je moćan, ali je prilično težak za učenje. XHProf, s druge strane, zahteva modifikacije aplikacije, pa možda nije pogodan za manje iskusne programere.

Postoji i nekoliko vrhunskih profajlera koji se nude kao usluge i obično dolaze sa veb interfejsima koji su laki za upotrebu. Neki od najpopularnijih rešenja su:

  • NewRelic
  • Tideways
  • Blackfire

Iako su profajleri odlični alati za debagovanje i optimizaciju aplikacija, nisu jeftini u smislu upotrebe resursa jer vrše dubinsku inspekciju izvršavanja koda. Osigurajte dovoljno rezervnih resursa, jer smo u nekim slučajevima primetili do 30% veću upotrebu CPU-a na serverskim aplikacijama gde je bio omogućen neki vid profajlera.

Prijavljivanje grešaka

Nakon što smo pokrili praćenje infrastrukture i profilisanje aplikacija, ne smemo zaboraviti na prijavljivanje grešaka. I dok su logovi odličan izvor informacija pri debagovanju određenog problema koji je uočio programer ili koji je korisnik prijavio, danas je presudno dobiti obaveštenje odmah nakon što se greška pojavi. Na taj način, debagovanje može početi pre nego što korisnici čak i stignu da prijave problem.

Iz našeg iskustva, i mnogi od naših klijenata bi se složili, Sentry je verovatno najbolja platforma za praćenje otvorenih grešaka. Podržava veliki broj programskih jezika i framework-ova, i lako se integriše sa aplikacijama. Integracija sa third-party uslugama poput GitLab-a, Jira-e i Slack-a poboljšava njegovu upotrebljivost na sledeći nivo.

Jednom integrisan sa aplikacijom, Sentry može uhvatiti greške čim se dese i poslati izveštaj na Sentry server, gde mnogo korisnih informacija može pomoći da razumete kako i zašto se problem javlja.

Zavisno o programskom jeziku i framework-u, imaćete mogućnost da dodelite, komentarišete i povežete grešku sa sistemom za praćenje problema, GitHub-om ili GitLab-om, i generalno, sarađujete na debagovanju sa drugima.

Sentry je dostupan i kao usluga i kao samostalno hostovano rešenje. Ako želite da isprobate samostalni Sentry, obratite nam se, možemo vam pomoći da ga postavite i upravljamo njim za vas.

Šta dalje?

Kao što smo pomenuli na početku ovog teksta, da biste pravilno pratili web aplikacije, morate uzeti u obzir mnogo faktora. Srećom, danas imamo mnogo moćnih alatki koje PHP aplikacije praćenje i debagovanje čine lakšim nego ikada.

Ako imate bilo kakvih pitanja na ovu temu, ostavite nam komentar ispod ili nas kontaktirajte i rado ćemo vam pomoći.

Ostavi komentar

Vaša adresa neće biti objavljena