Amanani kunye nokubeka esweni izikripthi ze-PHP ngexesha lokwenyani. ClickHouse kunye noGrafana baya kuncedo lwePinba

Kweli nqaku ndiza kukubonisa indlela yokusebenzisa i-pinba nge-clickhouse kunye ne-grafana endaweni ye-pinba_engine kunye ne-pinboard.

Kwiprojekthi yephp, i-pinba yeyona ndlela kuphela ethembekileyo yokuqonda okwenzekayo ngomsebenzi. Enyanisweni, i-pinba idla ngokusetyenziswa kuphela xa iingxaki sele zibonwa kwaye azicaci "indawo yokumba".

Rhoqo, akukho mntu unoluvo lokuba kangaphi ngesekondi/ngomzuzu iskripthi esithile esibizwa ngokuba siskripthi kwaye baqala ukwenza "ngokuchukumisa", ukuqala kwezo ndawo zibonakala zisengqiqweni ngakumbi.

Umntu uhlalutya i-nginx logs, kwaye umntu uhlalutya imibuzo ecothayo kwisiseko sedatha.

Ewe, i-pinba ayiyi kuba yinto engafanelekanga, kodwa kukho izizathu ezininzi zokuba ingabi nayo yonke iprojekthi.

Amanani kunye nokubeka esweni izikripthi ze-PHP ngexesha lokwenyani. ClickHouse kunye noGrafana baya kuncedo lwePinba

Kwaye isizathu sokuqala sisimo.

Ukuze kuninzi okanye kuncinci ukufumana uhlobo oluthile "lokukhupha" ekuqalisweni kwe-pinba, kunqweneleka kakhulu ukubona iimethrikhi kungekhona nje kwimizuzu yokugqibela, kodwa kunye nexesha elide (ukususela kwiintsuku ukuya kwiinyanga).

Kule nto ufuna:

  • faka ulwandiso lwephp (kwaye unokufuna imodyuli ye nginx)
  • qokelela ukwandiswa kwe-mysql
  • faka i-pinboard kwaye usete i-cron

Ngenxa yolwazi oluncinci malunga ne-pinb, abaninzi banoluvo lokuba isebenze kuphela kwi-php5 kwaye sele ihambile, kodwa njengoko siza kubona ngakumbi, oku akunjalo.

Inyathelo lokuqala lelona lilula, konke okufuneka ukwenze kukuqhuba lo myalelo:

apt install php-pinba

Iindawo zokugcina zinolu lwandiso ukuya kuthi ga kunye nokuquka iphp 7.3 kwaye awudingi kuqulunqa nantoni na.

Emva kokuphumeza umyalelo wofakelo, sifumana ngoko nangoko ulwandiso olusele lusebenza oluqokelela kwaye luthumele iimetrics zeskripthi ngasinye (ubude, inkumbulo, njl.njl.) kwifomathi. protobuf ngo-udp ukuya ku-127.0.0.1:30002.

Akukho mntu ubamba kwaye aqhube ezi pakethi ze-udp okwangoku, kodwa oku akuchaphazeli kakubi isantya okanye uzinzo lwezikripthi zakho zephp.

Ukuza kuthi ga ngoku, njengesicelo esinokuthi sibambe kwaye siqhubekise ezi pakethe ze-udp, bekukho kuphela pinba_injini. Inkcazo "ilula kwaye imfutshaneΒ»ufakelo luyawutyhafisa umnqweno wokufunda nokuphonononga kuwo kwakhona. Kuluhlu olude lweekhilomitha zokuxhomekeka kukho zombini amagama ephakheji kunye namagama eprogram kunye nekhonkco kumaphepha ngamnye kunye nofakelo lwawo, kwaye abo banamakhonkco abo kwezinye izinto ezixhomekeke kuzo. Akukho mntu unexesha okanye utyekelo lokujongana nobu bubi.

Inkqubo yokufaka pinba2 khange i ngakumbi ukukhanya.

Mhlawumbi ngenye imini kuya kukwazi ukufaka i-pinba10 ngomyalelo omnye okanye emibini kwaye ungafundi izinto ezininzi ukuze uqonde indlela yokwenza ngayo, kodwa okwangoku oku akunjalo.

Ukuba ufake i-pinba_engine, ke eso sisiqingatha kuphela sedabi. Ngapha koko, ngaphandle ebhodini kuya kufuneka uthintele kwimizuzu embalwa yokugqibela, okanye udibanise, ugcine, kwaye ubone idatha ngokwakho. Kulungile ukuba i-pinboard ilula ngokwaneleyo ukuyisebenzisa. ufakelo.

Kuya kubonakala ngathi, kutheni ukubandezeleka okunjalo ukuba zonke iimetrics ezivela kwiphp sele zisiya kwi-port ye-udp kwifomathi yeprotobuf kwaye yonke into efunekayo kukubhala isicelo esiya kubabamba kwaye sigcine kuhlobo oluthile lokugcina? Kubonakala ukuba, abo baphuhlisi beza nale ngcamango ngokukhawuleza bahlala phantsi ukubhala iibhayisikili zabo, ezinye zazo zaphela kwi-github.

Oku kulandelayo kukujongwa kweeprojekthi ezine ezivulekileyo ezigcina i-metrics kwindawo yokugcina, apho le datha kulula ukuyifumana kwaye ibonakale, umzekelo, ukusebenzisa i-grafana.

olegfedoseev/pinba-server (Novemba 2017)

udp iseva ekuhambeni egcina iimetrics kwi-OpenTSDB. Mhlawumbi ukuba i-OpenTSDB sele isetyenziswa kwiprojekthi yakho, ke esi sisombululo siyakufanela, kungenjalo ndincoma ukudlula.

olegfedoseev/pinba-influxdb (Juni 2018)

udp umncedisi ekuhambeni, ukusuka okufanayo habrauser, eligcina ngeli xesha iimetrics kwi-InfluxDB. Iiprojekthi ezininzi sele zisebenzisa i-InfluxDB ukubeka iliso, ke esi sisombululo sinokuba sihle kubo.

Iinkonzo:

  • I-InfluxDB it ivumela hlanganisa iimetrics ezifunyenweyo, kwaye ucime eyoqobo emva kwexesha elithile.

Umgcini:

ClickHouse-Ninja/Proton (NgoJanuwari 2019)

udp iseva ekuhambeni egcina iimetrics kwiClickHouse. Esi sisisombululo somhlobo wam. Kwakusemva kokuba ndiqhelane naye apho ndagqiba ekubeni ndithabathe i-pinba kunye ne-clickhouse.

Iinkonzo:

  • clickhouse ilungile kwimisebenzi enjalo, ikuvumela ukuba ucinezele idatha kakhulu kangangokuba ungagcina yonke idata ekrwada nangaphandle kokudityaniswa.
  • ukuba kuyafuneka, ungadibanisa ngokulula iimetrikhi ezifunyenweyo
  • itemplate esele yenziwe grafana
  • igcina ulwazi lwesibali-xesha

Umgcini:

  • isiphene esibulalayo
  • Akukho qwalaselo apho unokucwangcisa khona igama lesiseko sedata kunye neetafile, idilesi kunye nezibuko lomncedisi.
  • xa ugcina idata ekrwada, itafile yesichazi-magama encedisayo isetyenziselwa ukugcina iphepha kunye needilesi zendawo, edibanisa imibuzo kamva.
  • ezinye izinto ezincinci ezilandelayo ukusuka kuthabatha wokuqala

pinba-server/pinba-server (Epreli 2019)

udp iseva kwiphp egcina iimetrics kwiClickHouse. Esi sisisombululo sam, esisisiphumo sokuqhelana nepinba, ClickHouse kunye neprotobuf. Ngelixa ndijongene nalo lonke eli qela, ndabhala "ubungqina bengcamango", leyo, ngokungalindelekanga kum, ayizange idle izibonelelo ezibalulekileyo (i-30 MB ye-RAM kunye ne-1% enye yeeprosesa ezisibhozo), ngoko ke ndagqiba ekubeni sabelane ngayo noluntu.

I-Pluses - ifana nesisombululo sangaphambili, ndaphinda ndasebenzisa amagama aqhelekileyo ukusuka kwi-pinba_engine yokuqala. Ndongeze kwakhona uqwalaselo olukuvumela ukuba usebenzise iimeko ezininzi zepinbaserver ngaxeshanye ukuze ugcine iimetrics kwiitafile ezahlukeneyo - oku kuluncedo ukuba ufuna ukuqokelela idatha kungekuphela nje kwiphp, kodwa nakwi nginx.
I-Cons - "isiphako esibulalayo" kunye nezo zinto zincinci aziyi kufanelana nawe, kodwa isisombululo sam "silula njenge-slipper" kwaye siquka imigca yekhowudi emalunga ne-100, ngoko ke nawuphi na umthuthukisi wephp unokutshintsha into angayithandiyo. imizuzu embalwa.

ukuba isebenza njani

Ukuphulaphula kwi-udp port 30002. Zonke iipakethi ezingenayo zihlanjululwa ngokwenkqubo yeprotobuf kwaye zihlanganiswe. Kanye ngomzuzu, ibhetshi ye-clickhouse ifakwe kwitafile ye-pinba.requests. (zonke iiparameters zibunjwe ngaphakathi config)

Kancinci malunga ne-clickhouse

Clickhouse ixhasa iinjini zokugcina ezahlukeneyo. Eyona isetyenziswa kakhulu yi MergeTree.

Ukuba ngaxa lithile uthatha isigqibo sokugcina idatha edityanisiweyo ngalo lonke ixesha, kunye nedatha ekrwada kuphela kweyokugqibela, ngoko unokwenza umbono owenziwe ngezinto ngokwamaqela, kwaye ucoce ngamaxesha athile itheyibhile ephambili yepinba.requests, ngelixa yonke idatha iya kuhlala kwi umbono obonakalayo. Ngaphezu koko, xa udala itafile ye-pinba.requests, unokucacisa "injini = i-Null", ngoko idatha eluhlaza ayiyi kugcinwa kwidiski nonke, kwaye ngexesha elifanayo, iya kuwela kwimbono ebonakalayo kwaye ihlale ihlangene. Ndisebenzisa olu cwangciso kwiimetriki ze-nginx, kuba ndinezicelo eziphindwe ka-50 kwi-nginx kune-php.

Ke, usuka kude kwaye andithandi ukukushiya phakathi, ke oku kulandelayo yinkcazo eneenkcukacha yofakelo kunye noqwalaselo lwesisombululo sam nayo yonke into oyifunayo, kunye nemigibe eye yantlitheka ngaphezu kwenqanawa enye. Yonke inkqubo yokufakela ichazwe ku-Ubuntu 18.04 LTS kunye ne-Centos 7, kwezinye izinikezelo kunye neenguqulelo inkqubo inokwahluka kancinci.

isicwangciso

Ndibeka yonke imiyalelo eyimfuneko dockerfile ukuququzelela ukuveliswa kwakhona kwemiyalelo. Yimigibe kuphela eya kuchazwa ngezantsi.

php iqhosha

Emva kofakelo, qiniseka ukuba zonke iinketho azichazwanga kwifayile /etc/php/7.2/fpm/conf.d/20-pinba.ini. Kwezinye izinikezelo (umz. i-centos) zinokuchazwa ngaphandle.

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

indawo yokucofa

Ngexesha lofakelo, i-clickhouse iya kukucela ukuba usete igama eligqithisiweyo lomsebenzisi ongagqibekanga. Ngokungagqibekanga, lo msebenzisi uyafumaneka kuyo yonke i-ip, ngoko ke ukuba awunayo i-firewall kumncedisi, qiniseka ukuseta igama eliyimfihlo kuyo. Oku kunokwenziwa emva kofakelo kwifayile /etc/clickhouse-server/users.xml.

Kukwafanelekile ukuba uqaphele ukuba i-clickhouse isebenzisa amazibuko amaninzi, kuquka i-9000. Eli zibuko likwasetyenziselwa i-php-fpm kwezinye izinikezelo (umzekelo, i-centos). Ukuba sele usebenzisa eli zibuko, ngoko ungalitshintshela kwelinye kwifayile /etc/clickhouse-server/config.xml.

grafana nge-clickhouse plugin

Emva kokufaka i-grafana, sebenzisa i-admin yokungena kunye ne-password admin. Xa ungena okokuqala, uGrafana uya kukucela ukuba usete igama lokugqitha elitsha.

Okulandelayo, yiya kwimenyu "+" -> ngenisa kwaye ucacise inani ledeshibhodi yokungenisa 10011. Ndilungiselele kwaye ndafaka le dashboard ukuze ungaphindi uyenze ngokwakho kwakhona.

I-Grafana ixhasa ukusebenza nge-clickhouse ngeplagi yomntu wesithathu, kodwa kwiiplagi zomntu wesithathu, i-grafana ayinazo izilumkiso (itikiti lale nto belinobunzima beminyaka eliqela).

i-pinba-server

Ukufakela i-protobuf kunye ne-libevent yinto yokuzikhethela, kodwa iphucula ukusebenza kwe-pinba-server. Ukuba ufaka i-pinba-server kwifolda ngaphandle kwe-/opt, kuya kufuneka kwakhona udibanise iskripthi se-systemd ifayile.

pinba imodyuli phantsi kwe nginx

Ukuqokelela imodyuli, ufuna imithombo yoguqulelo olufanayo lwe nginx esele ifakwe kumncedisi wakho, kunye neenketho ezifanayo zokudibanisa, kungenjalo ukwakhiwa kuya kuba yimpumelelo, kodwa xa uqhagamshela imodyuli, impazamo iya kuveliswa "imodyuli ayihambelani ngokubini". Iinketho zokuhlanganisa zinokujongwa usebenzisa i nginx -V umyalelo

IiHacks zoBomi

Zonke iisayithi zam zisebenza kuphela kwi-https. Indawo ye-schema iba yintsingiselo, ngoko ke ndiyisebenzisa ukwahlula iwebhu/console.

Kwimibhalo efumaneka kwiwebhu, ndisebenzisa:

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

Kwaye kwi-console (umzekelo, izikripthi zecron):

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

Ideshibhodi yam yegrafana inokutshintsha kwewebhu/console ukujonga ubalo ngokwahlukeneyo.

Ungathumela iithegi zakho kwi-pinbu, umzekelo:

pinba_tag_set('country', $countryCode);

Kuko konke.

Isicelo esikhulu sokuphendula ii-polls phantsi kwenqaku.

Ndilumkisa ngokwesiko ukuba andicebisi kwaye andincedi ngemiyalezo yobuqu kaHabr kunye neenethiwekhi zentlalo.

Yenza itikiti kwi-github.

Kwakhona ndicela inkxaso ngee likes Inguqulelo yesiNgesi Oku kubhaliwe kwi reddit.

Ngabasebenzisi ababhalisiweyo kuphela abanokuthatha inxaxheba kuphando. Ngena, ndiyacela.

Yeyiphi i-OS oyisebenzisayo kumncedisi?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • VulaSUSE

  • I-SuSE

  • Unix

  • Windows

  • Okunye

Bali-114 abasebenzisi abavotileyo. Abasebenzisi abasi-11 abakhange.

Loluphi uhlobo lwe php oyisebenzisayo kumncedisi?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • Okunye

Bali-105 abasebenzisi abavotileyo. Abasebenzisi abasi-17 abakhange.

Ngaba ukhe wasebenzisa i-pinba?

  • ewe

  • hayi, kodwa ndingathanda

  • hayi kwaye andifuni

  • hayi, zange ndeva ngaye

Bali-100 abasebenzisi abavotileyo. Abasebenzisi abasi-14 abakhange.

Loluphi uhlobo lomncedisi wepinba ongathanda ukuzama?

  • pinba_injini (injini ye-mysql)

  • I-pinba2 (injini ye-mysql)

  • ibhodi yebhodi (php + mysql)

  • olegfedoseev/pinba-server (hamba + OpenTSDB)

  • olegfedoseev/pinba-influxdb (hamba + influxdb)

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

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

  • ndibhale eyam

  • Okunye

Bali-39 abasebenzisi abavotileyo. Abasebenzisi abasi-47 abakhange.

umthombo: www.habr.com

Yongeza izimvo