Visi kas turi/prižiūri savo production serverius aišku stebi serverio apkrovimus, laisvos atminties kiekius, SQL užklausų kiekį ir panašius parametrus. Tačiau pridėkite ranką prie širdies ir pasakykite: ar žinote ką daro jūsų aplikacija tame production serveryje? Ar neįvyksta kokios problemos esant tam tikroms sąlygoms? Manau teigiamai atsakytų nedaugelis. Nesenai išbandžiau Zend Server sistemą ir man patiko, kad galiu sužinoti apie kilusias problemas vienoje ar kitoje vietoje, bet ši sistema turi minusų: nemaža kaina, naudojamas Apache web serveris (mat dabar naudoju Nginx + PHP-FPM). Tie minusai privertė paieškoti alternatyvų. Taigi ir pradedu straipsnių ciklą apie aplikacijų monitoringą. Ciklas bus baigtas kai rasime tai ko ieškome arba kai užges viltis 🙂
Pirmas kandidatas kurį išbandžiau: http://newrelic.com/ pažiūrėjus demo video kaip ir atrodė radau ko ieškojau. Nemokamai mes galime gauti tiktai monitoringą, tačiau užsiregistravę kelioms dienoms gauname gold planą su visomis galimomis funkcijomis. Monitoringas vyksta nutolusiame serveryje, savame serveryje reikia įdiegti agentą kuris stebės visą veiklą ir perdavinės duomenis į centrinį serverį. Čia iškart kilo klausimas apie informacijos privatumą ir saugumą, bet reikia tikėtis, kad save gerbianti kompanija elgsis sąžiningai… Agento diegimas trunka pora minučių (apie 4-5 komandos per SSH). Perkrovę savo PHP procesus po kelių minučių gauname pirmus rezultatus.
Pagrindiniame aplikacijos lange galime matyti grafikus pagal pasirinktą laiko tarpą (iki 3 mėnesių). Taip matome sarašą transakcijų kurių vykdymo laikas ilgiausias ir panašiai.
Duomenų bazės apžvalga leidžia pažiūrėti lenteles pagal įvairus kriterijus: lėčiausias užklausas, dažniausia naudotas ir t.t.
Na ir pagaliau priėjome prie esminės dalies. Turime aplikacijos vykdymo trukmę ~40sek. kas yra kiek daugoka. Tačiau deja negalime sužinoti nieko detaliau nei yra pavaizduota paveikslėlyje. Naudinga būtų jei visas stabdymas atsirastų dėl per lėtų SQL užklausų, tuomet pagal turimus duomenis greitai rasčiau problemą. Mano atveju informacija naudinga tik tuo, kad aš žinau apie egzistuojančias problemas.
Įrankis paprastam naudojimui yra gana patogus, nereikia rūpintis galybe nustatymų ir papildoma programine įranga, užtenka įsidiegti agentą. Agentą galima įsidiegti į visas populiariausias Linux distribucijas. Sistema turi veną tokį specifinį minusą, kuris tam tikromis sąlygomis yra kaip ir pliusas 🙂 Matome visą statistiką viso serverio, net jei ten sukasi ir daugiau nei viena aplikacija. Jei serveryje sukasi tik viena aplikacija, arba dar geriau, keliuose serveriuose sukasi ta pati aplikacija, tuomet informacijos kiekis yra kaip tik toks kiek ir reikia. Kiek nuliūdino ir apie patį PHP pateikiamos informacijos kiekis, matyt sistema labiau pritaikyta kitoms programavimo kalboms.
Taigi straipsnių ciklas nėra nutraukiamas, nes mano keliamų reikalavimų pilnai neatitiko, tad tęsiame paieškas. Norėdami pasiūlyti savo variantus ar turėdami klausimų – rašykite tiesiai į komentarų skiltį.
Atgalinis pranešimas: Aplikacijų monitoringas: xhprof | Blog.MySQL.Lt