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.

Statistika u monitoraġġ ta' skripts PHP f'ħin reali. ClickHouse u Grafana jiġu biex jgħinu lil Pinba

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.

Proċess ta 'installazzjoni pinba2 ma speċjalment aktar faċli.

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.

olegfedoseev/pinba-server (Novembru 2017)

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.

olegfedoseev/pinba-influxdb (Ġunju 2018)

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)

ClickHouse-Ninja/Proton (Jannar 2019)

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
  • mudell lest għall-grafana
  • jiffranka l-informazzjoni dwar it-tajmers

Cons:

  • difett fatali
  • 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
  • affarijiet żgħar oħra li jsegwu mill-ewwel minus

pinba-server/pinba-server (April 2019)

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.

extension=pinba.so
pinba.enabled=1
pinba.server=127.0.0.1:30002

clickhouse

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.

Oħloq biljett fuq Github.

Ukoll jekk jogħġbok appoġġ b'likes Verżjoni bl-Ingliż Dan l-artiklu fuq reddit.

Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, ta 'xejn.

X'OS qed tuża fuq is-server?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • OpenSUSE

  • ĦSARA

  • Unix

  • twieqi

  • oħra

Ivvutaw 114 utent. 11 utenti astjenew.

Liema verżjoni ta 'php qed tuża fuq is-server?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • oħra

Ivvutaw 105 utent. 17 utenti astjenew.

Qatt użajt il-pinba?

  • iva

  • le, imma nixtieq

  • le u ma nixtieqx

  • le u ma smajtx biha

Ivvutaw 100 utent. 14 utenti astjenew.

Liema verżjoni tas-server Pinba tixtieq tipprova?

  • pinba_engine (magna mysql)

  • pinba2 (magna mysql)

  • pinboard (php + mysql)

  • olegfedoseev/pinba-server (mur + OpenTSDB)

  • olegfedoseev/pinba-influxdb (go + influxdb)

  • pinba-server/pinba-server (mur + clickhouse)

  • pinba-server/pinba-server (php + clickhouse)

  • Jien nikteb tiegħi jien

  • oħra

Ivvutaw 39 utent. 47 utenti astjenew.

Sors: www.habr.com

Żid kumment