ProHoster > Blogs > AdministrÄcija > PHP skriptu statistika un uzraudzÄ«ba reÄllaikÄ. ClickHouse un Grafana nÄk palÄ«gÄ Pinba
PHP skriptu statistika un uzraudzÄ«ba reÄllaikÄ. ClickHouse un Grafana nÄk palÄ«gÄ Pinba
Å ajÄ rakstÄ es jums pastÄstÄ«Å”u, kÄ lietot pinba ar clickhouse un grafana, nevis pinba_engine un pinboard.
PHP projektÄ pinba, iespÄjams, ir vienÄ«gais uzticamais veids, kÄ saprast, kas notiek ar veiktspÄju. Tiesa, pinba parasti tiek ieviesta tikai tad, kad problÄmas jau ir novÄrotas un nav skaidrs, ākur raktā.
Bieži vien nevienam nav ne jausmas, cik reižu sekundÄ/minÅ«tÄ tiek izsaukts tas vai cits skripts, un viÅi sÄk optimizÄt āpieskarotiesā, sÄkot no tÄm vietÄm, kuras Ŕķiet loÄ£iskÄkas.
Daži analizÄ nginx žurnÄlus, bet citi analizÄ lÄnus datu bÄzes vaicÄjumus.
Protams, pinba nebÅ«tu lieka, taÄu ir vairÄki iemesli, kÄpÄc ne katram projektam tÄda ir.
Un pirmais iemesls ir uzstÄdÄ«Å”ana.
Lai vairÄk vai mazÄk iegÅ«tu kaut kÄdu āizplÅ«diā no Pinba ievieÅ”anas, ļoti vÄlams redzÄt metriku ne tikai pÄdÄjÄm minÅ«tÄm, bet arÄ« ilgÄkÄ laika periodÄ (no dienÄm lÄ«dz mÄneÅ”iem).
Lai to izdarītu, jums ir nepiecieŔams:
instalÄjiet php paplaÅ”inÄjumu (un jÅ«s varÄtu vÄlÄties moduli nginx)
kompilÄjiet paplaÅ”inÄjumu mysql
instalÄjiet pinboard un konfigurÄjiet cron
TÄ kÄ par Pinba ir maz informÄcijas, daudziem rodas iespaids, ka tas darbojÄs tikai uz PHP5 un jau sen ir pagÄtne, taÄu, kÄ redzÄsim vÄlÄk, tas tÄ nav.
Pirmais solis ir vienkÄrÅ”Äkais, viss, kas jums jÄdara, ir jÄpalaiž komanda:
apt install php-pinba
Å is paplaÅ”inÄjums ir pieejams krÄtuvÄs lÄ«dz pat php 7.3, un jums nekas nav jÄkompilÄ.
PÄc instalÄÅ”anas komandas izpildes mÄs nekavÄjoties saÅemam strÄdÄjoÅ”u paplaÅ”inÄjumu, kas apkopo un nosÅ«ta metriku katram skriptam (darba laiks, atmiÅa utt.) formÄtÄ protobuf izmantojot udp uz 127.0.0.1:30002.
PagaidÄm neviens nav noÄ·Äris vai apstrÄdÄjis Ŕīs UDP paketes, taÄu tas nekÄdÄ veidÄ negatÄ«vi neietekmÄ jÅ«su PHP skriptu Ätrumu vai stabilitÄti.
VÄl nesen vienÄ«gÄ lietojumprogramma, kas varÄja uztvert un apstrÄdÄt Ŕīs UDP paketes, bija pinba_dzinÄjs. Apraksts "vienkÄrÅ”i un kodolÄ«gi"InstalÄcija attur no vÄlmes kÄdreiz tajÄ lasÄ«t un iedziļinÄties. Kilometru garajos atkarÄ«bu sarakstos ir gan pakotÅu nosaukumi, gan programmu nosaukumi un saites uz atseviŔķÄm lapÄm ar to instalÄÅ”anu, un tÄm ir savas saites uz citÄm atkarÄ«bÄm. Nevienam nav ne laika, ne vÄlÄÅ”anÄs nodarboties ar Ŕīm muļķībÄm.
VarbÅ«t kÄdreiz bÅ«s iespÄjams instalÄt pinba10 ar vienu vai divÄm komandÄm un nav jÄlasa kaudze materiÄlu, lai saprastu, kÄ to izdarÄ«t, bet pagaidÄm tas tÄ nav.
Ja instalÄjat pinba_engine, tÄ ir tikai puse no panÄkumiem. Galu galÄ, bez pinboard jums bÅ«s jÄaprobežojas ar datiem, kas iegÅ«ti tikai pÄdÄjÄs minÅ«tÄs, vai arÄ« jums paÅ”am bÅ«s jÄapkopo, jÄuzglabÄ un jÄvizualizÄ dati. Labi, ka pinboard ir diezgan vienkÄrÅ”i lietojams uzstÄdÄ«Å”ana.
Å Ä·iet, kÄpÄc tÄdas cieÅ”anas, ja no php visa metrika jau tiek nosÅ«tÄ«ta uz udp portu protobuf formÄtÄ un vajag tikai uzrakstÄ«t aplikÄciju, kas tos noÄ·ers un ieliks kaut kÄdÄ krÄtuvÄ? AcÄ«mredzot tie izstrÄdÄtÄji, kuri nÄca klajÄ ar Å”o ideju, nekavÄjoties sÄdÄs, lai rakstÄ«tu savas idejas, no kurÄm dažas nonÄca GitHub.
TÄlÄk ir sniegts pÄrskats par Äetriem atvÄrtÄ pirmkoda projektiem, kas saglabÄ metriku krÄtuvÄ, no kuriem Å”os datus var viegli izgÅ«t un vizualizÄt, piemÄram, izmantojot grafana.
udp serveris ir kustÄ«bÄ, kas saglabÄ metriku OpenTSDB. IespÄjams, ja jÅ«s jau izmantojat OpenTSDB savÄ projektÄ, tad Å”is risinÄjums jums bÅ«s piemÄrots, pretÄjÄ gadÄ«jumÄ iesaku to nodot garÄm.
udp serveris ir ceļÄ, no tÄ paÅ”a pÄrlÅ«kprogramma, kas Å”oreiz saglabÄ metriku InfluxDB. Daudzos projektos uzraudzÄ«bai jau tiek izmantots InfluxDB, tÄpÄc Å”is risinÄjums tiem var bÅ«t ideÄls.
Plusi:
InfluxDB pieļauj apkopojiet saÅemtos rÄdÄ«tÄjus un pÄc noteikta laika izdzÄsiet oriÄ£inÄlu.
MÄ«nusi:
Å is risinÄjums nesaglabÄ informÄciju par taimeriem.
InfluxDB saglabÄs vietnes lapu adreses kÄ tagus, un, ja jums ir daudz unikÄlu lapu adreÅ”u, tas novedÄ«s pie palielinÄts patÄriÅÅ” brÄ«vpiekļuves atmiÅa. No noteikta brīža viÅÅ” "sÄks Äst atmiÅu kÄ traks". (avots)
udp serveris ir kustÄ«bÄ, kas saglabÄ metriku pakalpojumÄ ClickHouse. Å is ir mana drauga risinÄjums. TieÅ”i pÄc iepazÄ«Å”anÄs ar to es nolÄmu, ka ir pienÄcis laiks uzÅemties Pinbu un Clickhouse.
Plusi:
Clickhouse ir ideÄli piemÄrots Å”Ädiem uzdevumiem; tas ļauj saspiest datus tik daudz, lai jÅ«s varÄtu saglabÄt visus neapstrÄdÄtos datus pat bez apkopoÅ”anas
ja nepiecieÅ”ams, varat viegli apkopot iegÅ«tos rÄdÄ«tÄjus
nav konfigurÄcijas, kurÄ var konfigurÄt datu bÄzes un tabulu nosaukumu, servera adresi un portu.
saglabÄjot neapstrÄdÄtus datus, lapu un domÄnu adreÅ”u saglabÄÅ”anai tiek izmantota palÄ«gvÄrdnÄ«cas tabula, kas sarežģī turpmÄkos vaicÄjumus.
udp serveris php, kas saglabÄ metriku ClickHouse. Å is ir mans risinÄjums, kas tapis, iepazÄ«stot pinba, ClickHouse un protobuf. KamÄr es kÄrtoju visu Å”o Ä·ekaru, uzrakstÄ«ju ākoncepcijas pierÄdÄ«jumuā, kas man negaidÄ«ti nepatÄrÄja ievÄrojamus resursus (30 MB RAM un mazÄk nekÄ 1% no viena no astoÅiem procesora kodoliem), tÄpÄc es nolÄma dalÄ«ties tajÄ ar sabiedrÄ«bu.
PriekÅ”rocÄ«bas ir tÄdas paÅ”as kÄ iepriekÅ”Äjam risinÄjumam, izmantoju arÄ« parastos nosaukumus no oriÄ£inÄlÄ pinba_engine. Es pievienoju arÄ« konfigurÄciju, kas ļauj vienlaikus palaist vairÄkus pinbase servera gadÄ«jumus, lai saglabÄtu metriku dažÄdÄs tabulÄs - tas ir noderÄ«gi, ja vÄlaties apkopot datus ne tikai no php, bet arÄ« no nginx.
TrÅ«kumi - āfatÄls defektsā un tie sÄ«kumi, kas tev personÄ«gi nederÄs, bet mans risinÄjums ir āvienkÄrÅ”s kÄ tupeleā un sastÄv tikai no aptuveni 100 koda rindÄm, tÄpÄc jebkurÅ” PHP izstrÄdÄtÄjs var mainÄ«t to, kas viÅam nepatÄ«k pÄris minÅ«Å”u laikÄ.
KÄ tas darbojas
Tiek noklausÄ«ts UDP ports 30002. Visas ienÄkoÅ”Äs paketes tiek dekodÄtas pÄc protobuf shÄmas un apkopotas. Reizi minÅ«tÄ tiek ievietota pakete clickhouse tabulÄ pinba.requests. (visi parametri ir konfigurÄti konfigurÄcija)
Mazliet par Clickhouse
Clickhouse atbalsta dažÄdus datu uzglabÄÅ”anas dzinÄjus. VisbiežÄk izmantotais ir MergeTree.
Ja kÄdÄ brÄ«dÄ« nolemjat saglabÄt apkopotos datus par visu laiku un neapstrÄdÄtos datus tikai pÄdÄjo reizi, varat izveidot materializÄtu skatu ar grupÄÅ”anu un periodiski notÄ«rÄ«t galveno tabulu pinba.requests, kamÄr visi dati paliks mapÄ. materializÄts skats. TurklÄt, veidojot tabulu pinba.requests, var norÄdÄ«t āengine = Nullā, tad neapstrÄdÄtie dati vispÄr netiks saglabÄti diskÄ, un tajÄ paÅ”Ä laikÄ tie joprojÄm nonÄks materializÄtajÄ skatÄ un tiks saglabÄti apkopoti. . Es izmantoju Å”o shÄmu nginx metrikai, jo nginx man ir 50 reizes vairÄk pieprasÄ«jumu nekÄ php.
TÄtad, jÅ«s esat nogÄjuÅ”i garu ceļu un es negribÄtu jÅ«s atstÄt pusceļÄ, tÄpÄc tÄlÄk ir detalizÄts apraksts par mana risinÄjuma uzstÄdÄ«Å”anu un konfigurÄciju un visu nepiecieÅ”amo, kÄ arÄ« par slazdiem, kas izraisÄ«juÅ”i vairÄk nekÄ vienu kuÄ£i. salauzt. Viss instalÄÅ”anas process ir aprakstÄ«ts Ubuntu 18.04 LTS un Centos 7; process var nedaudz atŔķirties citos izplatÄ«jumos un versijÄs.
UzstÄdÄ«Å”ana
Ieliku visas nepiecieÅ”amÄs komandas Dockerfile lai atvieglotu instrukciju reproducÄjamÄ«bu. TÄlÄk tiks aprakstÄ«tas tikai nepilnÄ«bas.
php-pinba
PÄc instalÄÅ”anas pÄrliecinieties, vai failÄ /etc/php/7.2/fpm/conf.d/20-pinba.ini esat atcÄlis visas opcijas. Dažos izplatÄ«jumos (piemÄram, centos) tos var komentÄt.
InstalÄÅ”anas laikÄ Clickhouse lÅ«gs iestatÄ«t paroli noklusÄjuma lietotÄjam. PÄc noklusÄjuma Å”im lietotÄjam var piekļūt no visiem IP adresÄm, tÄdÄļ, ja jÅ«su serverÄ« nav ugunsmÅ«ra, noteikti iestatiet tam paroli. To var izdarÄ«t arÄ« pÄc instalÄÅ”anas failÄ /etc/clickhouse-server/users.xml.
Ir arÄ« vÄrts atzÄ«mÄt, ka clickhouse izmanto vairÄkus portus, tostarp 9000. Å o portu izmanto arÄ« php-fpm dažos izplatÄ«jumos (piemÄram, centos). Ja jau izmantojat Å”o portu, varat to mainÄ«t uz citu /etc/clickhouse-server/config.xml failÄ.
grafana ar spraudni clickhouse
PÄc Grafana instalÄÅ”anas izmantojiet pieteikÅ”anÄs administratoru un paroles administratoru. Piesakoties pirmo reizi, Grafana lÅ«gs iestatÄ«t jaunu paroli.
PÄc tam dodieties uz izvÄlni ā+ā -> importÄÅ”ana un norÄdiet importÄjamÄ informÄcijas paneļa numuru 10011. Es sagatavoju un augÅ”upielÄdÄju Å”o informÄcijas paneli, lai jums tas vairs nebÅ«tu jÄdara paÅ”am.
Grafana atbalsta darbu ar Clickhouse, izmantojot treÅ”Äs puses spraudni, taÄu Grafana nav brÄ«dinÄjumu par treÅ”Äs puses spraudÅiem (par to ir biļete jau vairÄkus gadus).
pinba serveris
Protobuf un libevent instalÄÅ”ana nav obligÄta, taÄu uzlabo pinba servera veiktspÄju. Ja instalÄjat pinba-server mapÄ, kas nav /opt, jums arÄ« bÅ«s jÄlabo systemd skripts failu.
pinba modulis priekÅ” nginx
Lai kompilÄtu moduli, ir nepiecieÅ”ami tÄs paÅ”as nginx versijas pirmkodi, kas jau ir instalÄta jÅ«su serverÄ«, kÄ arÄ« tÄs paÅ”as kompilÄcijas opcijas, pretÄjÄ gadÄ«jumÄ bÅ«vÄÅ”ana bÅ«s veiksmÄ«ga, bet, pieslÄdzot moduli, tiks izmesta kļūda, ka "Modulis nav binÄri saderÄ«gs." KompilÄcijas opcijas var apskatÄ«t, izmantojot komandu nginx -V
Dzīve uzlaužas
Visas manas vietnes darbojas tikai https. ShÄmas lauks kļūst bezjÄdzÄ«gs, tÄpÄc es to izmantoju, lai atdalÄ«tu tÄ«mekli / konsoli.
Skriptos, kas ir pieejami no tīmekļa, es izmantoju:
if (ini_get('pinba.enabled')) {
pinba_schema_set('web');
}
Un konsoles skriptos (piemÄram, cron skriptos):
if (ini_get('pinba.enabled')) {
pinba_schema_set('console');
}
ManÄ Grafana informÄcijas panelÄ« ir tÄ«mekļa/konsoles slÄdzis statistikas apskatei atseviŔķi.
Varat arÄ« nosÅ«tÄ«t savas atzÄ«mes pakalpojumam Pinba, piemÄram:
pinba_tag_set('country', $countryCode);
Tas ir viss.
LÅ«dzu, atbildiet uz aptaujÄm zem raksta.
KÄ parasti, brÄ«dinu, ka nedodu padomu un nepalÄ«dzu ar personÄ«gÄm ziÅÄm Habr un sociÄlajos tÄ«klos.