ProHoster > blog > Amministrazzjoni > Statistika u monitoraġġ ta' skripts PHP f'ħin reali. ClickHouse u Grafana jiġu biex jgħinu lil Pinba
Statistika u monitoraġġ ta' skripts PHP f'ħin reali. ClickHouse u Grafana jiġu biex jgħinu lil Pinba
F'dan l-artiklu ser ngħidlek kif tuża pinba bi clickhouse u grafana minflok pinba_engine u pinboard.
Fuq proġett PHP, pinba huwa forsi l-uniku mod affidabbli biex tifhem dak li qed jiġri bil-prestazzjoni. Veru, pinba normalment jiġi implimentat biss meta l-problemi jkunu diġà osservati u ma jkunx ċar "fejn ħaffer."
Ħafna drabi ħadd ma jkollu idea kemm-il darba kull sekonda/minuta tissejjaħ din jew dik l-iskrittura u jibdew jottimizzaw “bil-mess”, ibda minn dawk il-postijiet li jidhru aktar loġiċi.
Xi wħud janalizzaw zkuk nginx, filwaqt li oħrajn janalizzaw mistoqsijiet bil-mod tad-database.
Naturalment, pinba ma jkunx superfluwu, iżda hemm diversi raġunijiet għaliex mhux kull proġett għandu.
U l-ewwel raġuni hija l-installazzjoni.
Sabiex xi ftit jew wisq tikseb xi tip ta '"egżost" mill-implimentazzjoni ta' Pinba, huwa mixtieq ħafna li tara metriċi mhux biss għall-aħħar minuti, iżda wkoll fuq perjodu twil ta 'żmien (minn jiem għal xhur).
Għal dan għandek bżonn:
installa l-estensjoni għal PHP (u tista 'tixtieq modulu għal nginx)
kompila l-estensjoni għal mysql
installa pinboard u kkonfigurat cron
Minħabba l-ammont żgħir ta 'informazzjoni dwar Pinba, ħafna nies għandhom l-impressjoni li ħadmet biss fuq PHP5 u ilha xi ħaġa tal-passat, iżda kif se naraw aktar tard, dan mhux il-każ.
L-ewwel pass huwa l-aktar sempliċi, kull ma trid tagħmel hu li tmexxi l-kmand:
apt install php-pinba
Fir-repożitorji, din l-estensjoni hija disponibbli sa php 7.3 inklużiv u m'għandekx bżonn tiġbor xejn.
Wara li teżegwixxi l-kmand tal-installazzjoni, aħna nirċievu immedjatament estensjoni tax-xogħol li tiġbor u tibgħat metriċi għal kull skript (ħin ta 'tħaddim, memorja, eċċ.) fil-format protobuf permezz ta' udp għal 127.0.0.1:30002.
S'issa ħadd ma qabad jew ipproċessa dawn il-pakketti UDP, iżda dan bl-ebda mod ma jaffettwa b'mod negattiv il-veloċità jew l-istabbiltà tal-iskripts PHP tiegħek.
Sa ftit ilu, l-unika applikazzjoni li setgħet taqbad u tipproċessa dawn il-pakketti UDP kienet pinba_engine. Deskrizzjoni "sempliċi u konċiż" L-installazzjoni tiskoraġġixxi x-xewqa li qatt taqra u tidħol fiha mill-ġdid. Il-listi ta' kilometri twal ta' dipendenzi fihom kemm l-ismijiet ta' pakketti kif ukoll l-ismijiet ta' programmi u links għal paġni individwali bl-installazzjoni tagħhom, u dawk għandhom il-links tagħhom għal dipendenzi oħra. Ħadd ma għandu l-ħin jew ix-xewqa li jittratta dan il-ħażin.
Forsi xi darba se jkun possibbli li tinstalla pinba10 b'kmandi wieħed jew tnejn u ma jkollokx għalfejn taqra mazz ta 'materjal biex tifhem kif tagħmel dan, iżda għalissa dan mhux il-każ.
Jekk tinstalla pinba_engine, allura dan huwa biss nofs il-battalja. Wara kollox, mingħajr pinboard ikollok tillimita lilek innifsek għad-dejta mill-aħħar ftit minuti biss, jew ikollok tiġbor, taħżen, u tivviżwalizza d-dejta lilek innifsek. Huwa tajjeb li pinboard huwa pjuttost sempliċi biex jintuża installazzjoni.
Jidher, għaliex tbatija bħal din jekk il-metriċi kollha minn PHP diġà jintbagħtu lill-port udp f'format protobuf u kull ma għandek bżonn huwa li tikteb applikazzjoni li taqbadhom u tpoġġihom f'xi tip ta 'ħażna? Apparentement, dawk l-iżviluppaturi li ħarġu b'din l-idea immedjatament poġġew bilqiegħda biex jiktbu l-ideat tagħhom stess, li wħud minnhom spiċċaw fuq GitHub.
Din li ġejja hija ħarsa ġenerali ta 'erba' proġetti ta 'sors miftuħ li jiffrankaw il-metriċi fil-ħażna, li minnhom din id-dejta tista' tiġi rkuprata u viżwalizzata faċilment, pereżempju, bl-użu ta 'grafana.
server udp għaddej li jiffranka l-metriċi għal OpenTSDB. Forsi jekk diġà qed tuża OpenTSDB fil-proġett tiegħek, allura din is-soluzzjoni tkun adattata għalik, inkella nirrakkomanda li tgħaddiha.
udp server fuq go, mill-istess habrowser, li din id-darba jaħżen il-metriċi f'InfluxDB. Ħafna proġetti diġà qed jużaw InfluxDB għall-monitoraġġ, għalhekk din is-soluzzjoni tista 'tkun perfetta għalihom.
Pros:
InfluxDB tippermetti aggrega l-metriċi riċevuti, u ħassar l-oriġinal wara żmien speċifikat.
Cons:
Din is-soluzzjoni ma tiffrankax informazzjoni dwar it-tajmers.
InfluxDB se jaħżen l-indirizzi tal-paġna tas-sit bħala tikketti u jekk għandek ħafna indirizzi tal-paġna uniċi, dan iwassal għal żieda fil-konsum memorja b'aċċess każwali. Minn ċertu mument hu "se jibda jiekol il-memorja bħal miġnun". (sors)
server udp għaddej, li jiffranka l-metriċi fi ClickHouse. Din hija s-soluzzjoni ta’ ħabib tiegħi. Kien wara li sirt familjari magħha li ddeċidejt li kien wasal iż-żmien li nieħu lil Pinbu u Clickhouse.
Pros:
Clickhouse hija ideali għal kompiti bħal dawn tippermettilek tikkompressa d-dejta tant li tista 'taħżen id-dejta mhux ipproċessata kollha anki mingħajr aggregazzjonijiet
jekk meħtieġ, tista 'faċilment taggrega l-metriċi li jirriżultaw
m'hemm l-ebda konfigurazzjoni li fiha tista 'tikkonfigura l-isem tad-database u t-tabelli, l-indirizz u l-port tas-server.
meta taħżen data mhux ipproċessata, tintuża tabella awżiljarja ta' dizzjunarju biex taħżen l-indirizzi tal-paġna u tad-dominju, li tikkomplika l-mistoqsijiet sussegwenti
server udp f'php, li jiffranka l-metriċi f'ClickHouse. Din hija s-soluzzjoni tiegħi, li hija r-riżultat li nsir naf pinba, ClickHouse u protobuf. Waqt li kont qed issolvi dan il-mazz kollu, ktibt "prova tal-kunċett", li, bla mistenni għalija, ma kkunsmatx riżorsi sinifikanti (30 MB ta 'RAM u inqas minn 1% ta' wieħed mit-tmien cores tal-proċessur), għalhekk I iddeċieda li jaqsamha mal-pubbliku.
Il-vantaġġi huma l-istess bħas-soluzzjoni preċedenti, użajt ukoll l-ismijiet tas-soltu mill-pinba_engine oriġinali. Żidt ukoll konfigurazzjoni li tippermettilek tniedi diversi istanzi ta 'server pinbase f'daqqa sabiex issalva l-metriċi f'tabelli differenti - dan huwa utli jekk trid tiġbor data mhux biss minn PHP, iżda wkoll minn nginx.
Żvantaġġi - "difett fatali" u dawk l-affarijiet żgħar li mhux se jixirqu lilek personalment, iżda s-soluzzjoni tiegħi hija "sempliċi daqs papoċċ" u tikkonsisti biss f'madwar 100 linja ta 'kodiċi, sabiex kwalunkwe żviluppatur PHP jista' jibdel dak li ma jħobbx. fi ftit minuti.
Prinċipju ta 'operazzjoni
Il-port UDP 30002 huwa mismugħ Il-pakketti kollha li jidħlu huma dekodifikati skont l-iskema protobuf u aggregati. Darba minuta, pakkett jiddaħħal fil-clickhouse fit-tabella pinba.requests. (il-parametri kollha huma kkonfigurati fi konfig)
Ftit dwar clickhouse
Clickhouse jappoġġja magni differenti tal-ħażna tad-dejta. L-aktar wieħed komunement użat huwa MergeTree.
Jekk f'xi punt tiddeċiedi li taħżen id-dejta aggregata għal kull żmien, u d-dejta mhux ipproċessata biss għall-aħħar darba, allura tista 'toħloq veduta materjalizzata b'raggruppament, u perjodikament tnaddaf it-tabella prinċipali tal-pinba.requests, filwaqt li d-dejta kollha tibqa' fil- veduta mmaterjalizzata. Barra minn hekk, meta toħloq it-tabella pinba.requests, tista 'tispeċifika "magna = Null", allura d-dejta mhux ipproċessata ma tiġi ssejvjata fuq id-disk għal kollox, u fl-istess ħin xorta tispiċċa fil-veduta mmaterjalizzata u tiġi ffrankata aggregata. . Jiena nuża din l-iskema għall-metriċi nginx, għax fuq nginx għandi 50 darba aktar talba milli fuq php.
Allura, għamilt triq twila u ma nixtieqx inħallik nofs triq, allura dak li ġej huwa deskrizzjoni dettaljata tal-installazzjoni u l-konfigurazzjoni tas-soluzzjoni tiegħi u dak kollu li għandek bżonn, kif ukoll l-iżvantaġġi li kkawżaw aktar minn vapur wieħed. biex tiġġarraf. Il-proċess ta 'installazzjoni kollu huwa deskritt għal Ubuntu 18.04 LTS u Centos 7 il-proċess jista' jvarja kemmxejn fuq distribuzzjonijiet u verżjonijiet oħra;
Installazzjoni
Nressaq il-kmandi kollha meħtieġa dockerfile biex tiffaċilita r-riproduċibbiltà tal-istruzzjonijiet. In-nases biss se jiġu deskritti hawn taħt.
php-pinba
Wara l-installazzjoni, kun żgur li fil-fajl /etc/php/7.2/fpm/conf.d/20-pinba.ini inti ma kkummentajtx l-għażliet kollha. Fuq xi distribuzzjonijiet (eż. centos) jistgħu jiġu kkummentati.
Waqt l-installazzjoni, clickhouse se jgħidlek biex tissettja password għall-utent default. B'mod awtomatiku, dan l-utent huwa aċċessibbli mill-IPs kollha, għalhekk jekk ma jkollokx firewall fuq is-server tiegħek, kun żgur li tissettja password għaliha. Dan jista' jsir ukoll wara l-installazzjoni fil-fajl /etc/clickhouse-server/users.xml.
Ta 'min jinnota wkoll li clickhouse juża diversi portijiet, inkluż 9000. Dan il-port jintuża wkoll għal php-fpm f'xi distribuzzjonijiet (per eżempju, centos). Jekk diġà tuża dan il-port, tista' tbiddel għal ieħor fil-fajl /etc/clickhouse-server/config.xml.
grafana bi plugin clickhouse
Wara li tinstalla Grafana, uża l-admin tal-login u l-admin tal-password. Meta tidħol għall-ewwel darba, Grafana jistaqsik biex tissettja password ġdida.
Sussegwentement, mur fil-"+" -> menu ta 'importazzjoni u indika n-numru tad-dashboard għall-importazzjoni 10011. Jien ħejjejt u tellajt dan id-dashboard sabiex ma jkollokx għalfejn terġa’ tagħmel it yourself.
Grafana jappoġġja l-ħidma ma 'clickhouse permezz ta' plugin ta 'parti terza, iżda Grafana m'għandux twissijiet għal plugins ta' partijiet terzi (kien hemm biljett għal dan għal diversi snin).
pinba-server
L-installazzjoni ta' protobuf u libevent hija fakultattiva, iżda ttejjeb il-prestazzjoni ta' pinba-server. Jekk tinstalla pinba-server f'folder għajr / opt, allura jkollok bżonn tikkoreġi wkoll skript systemd fajl.
modulu pinba għal nginx
Biex tikkompila modulu, għandek bżonn kodiċi tas-sors tal-istess verżjoni ta 'nginx li hija diġà installata fuq is-server tiegħek, kif ukoll l-istess għażliet ta' kumpilazzjoni, inkella l-bini se jkun ta 'suċċess, iżda meta tgħaqqad il-modulu, se jintrema żball li "il-modulu mhuwiex kompatibbli binarju." L-għażliet tal-kumpilazzjoni jistgħu jitqiesu bl-użu tal-kmand nginx -V
Ħakkijiet tal-ħajja
Is-siti kollha tiegħi jaħdmu biss fuq https. Il-qasam tal-iskema jsir bla sens, għalhekk nużah biex nissepara l-web/console.
Fi skripts li huma aċċessibbli mill-web li nuża:
if (ini_get('pinba.enabled')) {
pinba_schema_set('web');
}
U fl-iskripts tal-console (per eżempju, skripts cron):
if (ini_get('pinba.enabled')) {
pinba_schema_set('console');
}
Fid-dashboard tiegħi fi Grafana hemm swiċċ tal-web/console biex tara l-istatistika separatament.
Tista' wkoll tibgħat it-tags tiegħek lil Pinba, pereżempju:
pinba_tag_set('country', $countryCode);
Dak kollox.
Jekk jogħġbok wieġeb l-istħarriġ taħt l-artiklu.
Bħas-soltu, inwissikom li ma nagħtix pariri jew ngħin permezz ta’ messaġġi personali fuq Habr u netwerks soċjali.