Tirakoobka iyo la socodka qoraalada PHP wakhtiga dhabta ah. ClickHouse iyo Grafana waxay u yimaadeen caawinta Pinba

Maqaalkan waxaan kuu sheegi doonaa sida loo isticmaalo pinba leh clickhouse iyo grafana halkii aad ka isticmaali lahayd pinba_engine iyo pinboard.

Mashruuc PHP ah, pinba ayaa laga yaabaa inay tahay habka kaliya ee lagu kalsoonaan karo ee lagu fahmi karo waxa ku dhacaya waxqabadka. Run, pinba caadi ahaan waxaa la hirgeliyaa kaliya marka dhibaatooyin horay loo arkay mana cadda "halka laga qodo."

Inta badan qofna wax fikrad ah kama haysto inta jeer ee ilbiriqsi/daqiiqo tan ama qoraalkaas ayaa la yiraahdaa waxayna bilaabaan inay hagaajiyaan "taabasho", iyagoo ka bilaabaya meelaha u muuqda kuwo macquul ah.

Qaar waxay falanqeeyaan diiwaannada nginx, halka kuwa kalena ay falanqeeyaan weydiimaha xogta gaabiska ah.

Dabcan, pinba ma noqon doonto mid xad dhaaf ah, laakiin waxaa jira dhowr sababood oo aan mashruuc kasta u haysan.

Tirakoobka iyo la socodka qoraalada PHP wakhtiga dhabta ah. ClickHouse iyo Grafana waxay u yimaadeen caawinta Pinba

Sababta ugu horreysana waa rakibidda.

Si aad u badan ama ka yar u hesho nooc ka mid ah "dhamaan" ka hirgelinta Pinba, waa mid aad loo jecel yahay in la arko qiyaasaha ma aha oo kaliya daqiiqadaha ugu dambeeya, laakiin sidoo kale waqti dheer (maalmo ilaa bilo).

Sidaa darteed waxaad u baahan tahay:

  • Ku rakib kordhinta php (oo laga yaabaa inaad u baahato moduleka nginx)
  • u diyaari kordhinta mysql
  • ku rakib pinboard oo habee cron

Sababtoo ah tirada yar ee macluumaadka ku saabsan Pinba, dad badan ayaa qaba aragti ah in ay kaliya ka shaqeysay PHP5 oo ay muddo dheer ahayd wax la soo dhaafay, laakiin sida aan arki doono dambe, tani maahan kiiska.

Tallaabada ugu horreysa waa tan ugu fudud, dhammaan waxaad u baahan tahay inaad sameyso waa inaad socodsiiso amarka:

apt install php-pinba

Kordhintan waxa laga heli karaa meelaha kaydka ah oo ay ku jiraan php 7.3 uma baahnid inaad wax ururiso.

Kadib fulinta amarka rakibaadda, waxaanu isla markiiba helnaa kordhin shaqo oo aruurisa oo soo direysa cabbirada qoraal kasta (waqtiga socodsiinta, xusuusta, iwm.) ee qaabka protobuf iyada oo loo marayo udp ilaa 127.0.0.1:30002.

Ilaa hadda ma jiro qof qabtay ama farsameeyay xidhmooyinkan UDP, laakiin tani sinaba uma saamaynayso xawaaraha ama xasiloonida qoraalladaada PHP.

Ilaa dhawaan, codsiga kaliya ee qaban kara oo ka baaraandegi kara xirmooyinkan UDP ayaa ahaa pinba_matoorka. Sharaxaad"fudud oo kooban" Rakibaadda waxay niyad-jebinaysaa rabitaanka in la akhriyo oo aan dib u galo. Liisaska ku-tiirsanaanta-dheer ee kiiloomitir waxay ka kooban yihiin labadaba magacyada xirmooyinka iyo magacyada barnaamijyada iyo xiriirinta bogag gaar ah oo la rakibay, kuwana waxay leeyihiin xiriiro u gaar ah kuwa kale ee ku tiirsanaanta. Qofna ma haysto wakhti ama rabitaan uu wax kaga qabto xumaantan.

Nidaamka rakibida pinba2 ma yeelin gaar ahaan sahlan.

Waxaa laga yaabaa in maalin uun ay suurtagal tahay in lagu rakibo pinba10 oo leh hal ama laba amar oo aan loo baahnayn in la akhriyo farabadan walxaha si loo fahmo sida loo sameeyo, laakiin hadda taasi maahan.

Haddii aad rakibto pinba_engine, markaa tani waa kala badh dagaalka. Ka dib oo dhan, la'aanteed pinboard waa inaad naftaada ku koobtaa xogta daqiiqadihii ugu dambeeyay, ama waa inaad kaydisaa, oo aad sawirtaa xogta laftaadu. Way fiican tahay in pinboard-ku uu aad u fudud yahay in la isticmaalo rakibidda.

Waxay u muuqan doontaa, sababta dhibaatadan oo kale ah haddii dhammaan metrics ee php horeyba loogu diro dekedda udp ee qaabka protobuf oo kaliya waxaad u baahan tahay inaad qorto codsi iyaga soo qaban doona oo ku rid nooc ka mid ah kaydinta? Sida muuqata, kuwa horumariya ee la yimid fikraddan isla markiiba waxay u fadhiisteen inay qoraan fikradahooda, qaar ka mid ah kuwaas oo ku dhammaaday GitHub.

Kuwa soo socdaa waa dulmar ku saabsan afar mashruuc oo il furan oo kaydiya cabbirada kaydinta, kuwaas oo xogtan si fudud looga soo saari karo loona arki karo, tusaale ahaan, iyadoo la isticmaalayo grafana.

olegfedoseev/pinba-server (Noofambar 2017)

udp server ku socda kaas oo kaydiya mitirka OpenTSDB. Waxaa laga yaabaa haddii aad horay ugu isticmaalaysay OpenTSDB mashruucaaga, markaa xalkani wuu ku habboonaan doonaa, haddii kale waxaan ku talinayaa inaad dhaafto.

olegfedoseev/pinba-influxdb (June 2018)

udp server on go, ka mid ah habrowser, Kaas oo wakhtigan ku kaydinaya cabbirada InfluxDB. Mashruucyo badan ayaa durbaba u isticmaalaya InfluxDB si ay ula socdaan, markaa xalkani wuxuu ku fiicnaan karaa iyaga.

Faa'iido:

  • InfluxDB Waxa ay u ogolaataa Isku geynta cabbirada la helay, oo tirtir asalka ka dib wakhti cayiman.

Ogolaansho:

ClickHouse-Ninja/Proton (Janaayo 2019)

udp server on go, kaas oo kaydiya mitir gudaha ClickHouse. Tani waa xalka saaxiibkay. Waxay ahayd ka dib markii aan bartay taas oo aan go'aansaday in la joogo waqtigii aan qaadan lahaa Pinbu iyo Clickhouse.

Faa'iido:

  • Clickhouse waxay ku habboon tahay hawlahan oo kale; waxay kuu ogolaaneysaa inaad ku cadaadiso xogta si aad u kaydiso dhammaan xogta ceeriin xitaa iyada oo aan la isku darin.
  • haddii loo baahdo, waxaad si fudud isugu geyn kartaa cabbirrada ka soo baxa
  • template diyaar u ah grafana
  • wuxuu kaydiyaa macluumaadka waqti-bixiyeyaasha

Ogolaansho:

  • cillad dilaa ah
  • ma jiro wax habayn ah oo aad ku habayn karto magaca database-ka iyo miisaska, ciwaanka iyo dekedda server-ka.
  • marka la kaydinayo xogta cayriin, miiska qaamuuska kaaliyaha ayaa loo isticmaalaa in lagu kaydiyo boggaga iyo cinwaanada domainka, taas oo adkeynaysa weydiimaha xiga.
  • Waxyaabo kale oo yaryar oo soo socda laga jaro marka hore

pinba-server/pinba-server (Abriil 2019)

udp server ee php, kaas oo kaydiya mitirka ClickHouse. Tani waa xalkeyga, taas oo ah natiijada barashada pinba, ClickHouse iyo protobuf. Intii aan kala saarayay kooxdan oo dhan, waxaan qoray "caddayn fikradda", taas oo, si lama filaan ah aniga ahaan, aan u isticmaalin kheyraad muhiim ah (30 MB ee RAM iyo in ka yar 1% mid ka mid ah siddeedda processor) waxay go’aansatay inay shacabka la wadaagto.

Faa'iidooyinka waxay la mid yihiin xalkii hore, waxaan sidoo kale isticmaalay magacyada caadiga ah ee asalka ah ee pinba_engine. Waxaan sidoo kale ku daray qaab-dhismeedka kuu oggolaanaya inaad bilowdo dhowr tusaale oo pinbase server hal mar ah si aad u badbaadiso cabbirada miisaska kala duwan - tani waa mid faa'iido leh haddii aad rabto inaad ka ururiso xogta kaliya maahan php, laakiin sidoo kale nginx.
Khasaarooyin - "cillad dilaa ah" iyo waxyaalaha yaryar ee aan adiga kugu habboonayn shakhsi ahaan, laakiin xalkaygu waa "sida fudud ee dacas" oo ka kooban kaliya 100 xariiq oo kood ah, sidaas darteed horumariye kasta oo PHP ah ayaa bedeli kara waxa uusan jeclayn. dhowr daqiiqo gudahood.

Sida ay u hawlgasho

UDP port 30002 waa la dhageystaa.Dhammaan baakadaha soo galaya waa la dekoodhiyay iyadoo la raacayo nidaamka protobuf waana la isku daray. Hal daqiiqo, baakidh ayaa la geliyaa guriga gujinta ee miiska codsiyada ee pinba. (dhammaan xuduudaha waxaa lagu habeeyey gudaha habayn)

Wax yar oo ku saabsan clickhouse

Clickhouse waxay taageertaa matoorada kaydinta xogta ee kala duwan. Midka ugu badan ee la isticmaalo waa MergeTree.

Haddii mar aad go'aansato inaad kaydiso xogta la isku daray ee wakhtiga oo dhan, iyo xogta cayriin oo keliya tan ugu dambeysa, markaa waxaad abuuri kartaa aragti dhab ah oo koox-kooxeed ah, oo si joogto ah u nadiifi miiska dalabka ee pinba., halka dhammaan xogta ay ku sii jiri doonto aragti dhab ah. Intaa waxaa dheer, marka la abuurayo miiska codsiyada pinba., waxaad qeexi kartaa "engine = Null", ka dibna xogta ceeriin ah laguma keydin doono diskka gabi ahaanba, isla mar ahaantaana waxay weli ku dhamaan doontaa aragtida dhabta ah oo la keydiyo oo la isku daro. . Waxaan nidaamkan u isticmaalayaa cabbirada nginx, sababtoo ah nginx waxaan haystaa 50 jeer codsiyo ka badan kan php.

Haddaba, waxaad soo martay waddo dheer, mana jecli inaan kuu dhaafo kala badh, haddaba waxa soo socda ayaa ah sharraxaad faahfaahsan oo ku saabsan rakibidda iyo habaynta xalkayga iyo wax kasta oo aad u baahan tahay, iyo sidoo kale godadka sababay in ka badan hal markab. ku dhicid. Geedi socodka rakibidda oo dhan waxaa lagu sifeeyay Ubuntu 18.04 LTS iyo Centos 7; nidaamku wax yar ayuu kaga duwanaan karaa qaybinta iyo noocyada kale.

Ku rakibida

Waxaan geliyay dhammaan amarrada lagama maarmaanka ah Dockerfile si loo fududeeyo soo saarista tilmaamaha. Dabinnada kaliya ayaa hoos lagu tilmaami doonaa.

php-pinba

Ka dib marka la rakibo, hubi in faylka /etc/php/7.2/fpm/conf.d/20-pinba.ini aad ku qancin dhammaan fursadaha. Qaybinta qaar ka mid ah (tusaale centos) waxa laga yaabaa in laga faalloodo.

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

clickhouse

Inta lagu jiro rakibidda, clickhouse ayaa ku weydiin doona inaad u dejiso furaha sirta ah isticmaalayaasha caadiga ah. Sida caadiga ah, isticmaaluhu waa laga heli karaa dhammaan IP-yada, markaa haddii aadan ku haysan dab-damiska serverkaaga, hubi inaad u dejiso furaha sirta ah. Tan waxa kale oo la samayn karaa ka dib marka lagu rakibo faylka /etc/clickhouse-server/users.xml.

Waxa kale oo xusid mudan in clickhouse uu isticmaalo dhowr dekedood, oo ay ku jiraan 9000. Dekeddan waxa kale oo loo isticmaalaa php-fpm qaybinta qaarkood (tusaale, centos). Haddii aad mar hore isticmaashay dekeddan, waxaad u beddeli kartaa mid kale oo ku jira faylka /etc/clickhouse-server/config.xml.

grafana oo leh plugin clickhouse

Kadib rakibida Grafana, isticmaal admin login iyo password admin. Markaad gasho markii ugu horeysay, Grafana waxay ku weydiin doontaa inaad dejiso furaha sirta ah ee cusub.

Marka xigta, tag "+" -> menu soo dejinta oo muuji lambarka dashboardka ee soo dejinta 10011. Waxaan diyaariyey oo soo galiyay dashboard-kan si aadan adigu mar dambe u samayn naftaada.

Grafana waxay taageertaa la shaqaynta clickhouse iyada oo loo marayo plugin qolo saddexaad ah, laakiin Grafana ma hayso digniinaha plugins-yada dhinac saddexaad (waxaa jiray tigidh tan dhowr sano ah).

pinba-server

Ku rakibida protobuf iyo xoraynta waa ikhtiyaari, laakiin waxay wanaajisaa waxqabadka pinba-server. Haddii aad ku rakibto pinba-server gal aan ahayn /opt, markaas waxaad sidoo kale u baahan doontaa inaad saxdo qoraal habaysan fayl.

module pinba ee nginx

Si aad u ururiso cutubka, waxaad u baahan tahay koodhadhka isha ee isla nooca nginx ee horay loogu rakibay server-kaaga, iyo sidoo kale xulashooyinka isku-darka isku midka ah, haddii kale dhismuhu wuxuu noqon doonaa mid guuleysta, laakiin marka la isku xiro moduleka, qalad ayaa la tuurayaa taas "Moduleku maaha mid ku habboon laba-geesoodka." Ikhtiyaarada ururinta waxaa lagu arki karaa iyadoo la isticmaalayo amarka nginx -V

Dhibaatooyinka nolosha

Dhammaan goobahaygu waxay ka shaqeeyaan https kaliya. Goobta schema waxay noqotaa mid aan macno lahayn, markaa waxaan u isticmaalaa inaan kala saaro shabakada/console.

Qoraalada laga heli karo shabakada waxaan isticmaalaa:

if (ini_get('pinba.enabled')) {
    pinba_schema_set('web');
}

Iyo qoraallada console-ka (tusaale ahaan, qoraallada cron):

if (ini_get('pinba.enabled')) {
    pinba_schema_set('console');
}

Dashboardkayga Grafana waxaa ku yaal shabakad/console beddelka si gooni ah loogu daawado statistics.

Waxaad sidoo kale u diri kartaa summadaada Pinba, tusaale ahaan:

pinba_tag_set('country', $countryCode);

Waa intaas.

Fadlan ka jawaab cod bixinta hoos maqaalka.

Sida caadiga ah, waxaan kaaga digayaa inaanan kugula talin ama ku caawin fariimaha gaarka ah ee Habr iyo shabakadaha bulshada.

Ku samee tigidh Github

Sidoo kale fadlan ku taageer likes Nooca Ingiriisiga maqaalkan ku casdit.

Isticmaalayaasha diiwaangashan oo keliya ayaa ka qaybqaadan kara sahanka. Soo gal, soo dhawoow.

Waa maxay OS aad ku isticmaalayso server-ka?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • OpenSUSE

  • SSE

  • Unix

  • Windows

  • kale

114 isticmaale ayaa u codeeyay. 11 isticmaale ayaa ka aamusay.

Waa maxay nooca php ee aad ku isticmaalayso server-ka?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • kale

105 isticmaale ayaa u codeeyay. 17 isticmaale ayaa ka aamusay.

Waligaa ma isticmaashay pinba?

  • haa

  • maya, laakiin waan jeclaan lahaa

  • maya mana rabo

  • maya mana maqal iyada

100 isticmaale ayaa u codeeyay. 14 isticmaale ayaa ka aamusay.

Nooca server-ka Pinba ma jeclaan lahayd inaad isku daydo?

  • pinba_engine (matoorka mysql)

  • pinba2 (matoorka mysql)

  • pinboard (php + mysql)

  • olegfedoseev/pinba-server (tag + OpenTSDB)

  • olegfedoseev/pinba-influxdb (tag + influxdb)

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

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

  • Aniga naftayda ayaan qori doona

  • kale

39 isticmaale ayaa u codeeyay. 47 isticmaale ayaa ka aamusay.

Source: www.habr.com

Add a comment