Izibalo nokuqapha imibhalo ye-PHP ngesikhathi sangempela. I-ClickHouse ne-Grafana basiza u-Pinba

Kulesi sihloko ngizokutshela indlela yokusebenzisa i-pinba nge-clickhouse ne-grafana esikhundleni se-pinba_engine ne-pinboard.

Kuphrojekthi ye-PHP, i-pinba mhlawumbe ukuphela kwendlela ethembekile yokuqonda ukuthi kwenzekani ngokusebenza. Yiqiniso, i-pinba ivame ukusetshenziswa kuphela lapho izinkinga seziphawuliwe futhi kungacaci ukuthi β€œkumbiwe kuphi.”

Ngokuvamile akekho onombono wokuthi kangaki ngomzuzwana/ngomzuzu lokhu noma leso script sibizwa futhi baqala ukuthuthukisa "ngokuthinta", kusukela kulezo zindawo ezibonakala zinengqondo.

Abanye bahlaziya izingodo ze-nginx, kuyilapho abanye bahlaziya imibuzo yesizindalwazi esinensayo.

Yiqiniso, i-pinba ngeke ibe yinto engafaneleki, kodwa kunezizathu ezimbalwa zokuthi kungani kungewona wonke amaphrojekthi anayo.

Izibalo nokuqapha imibhalo ye-PHP ngesikhathi sangempela. I-ClickHouse ne-Grafana basiza u-Pinba

Futhi isizathu sokuqala ukufakwa.

Ukuze uthole okuningi noma okuncane kokuthola uhlobo oluthile "lokukhipha amandla" ekusetshenzisweni kwe-Pinba, kuyinto efiseleka kakhulu ukubona amamethrikhi hhayi nje ngemizuzu yokugcina, kodwa futhi nesikhathi eside (kusukela ezinsukwini kuya ezinyangeni).

Ukuze wenze lokhu, udinga:

  • faka isandiso se-php (futhi ungase ufune imojula ye-nginx)
  • hlanganisa isandiso se-mysql
  • faka i-pinboard futhi ulungiselele i-cron

Ngenxa yolwazi oluncane mayelana ne-Pinba, abantu abaningi banombono wokuthi isebenze kuphela ku-PHP5 futhi sekuyisikhathi eside iyinto yesikhathi esidlule, kodwa njengoba sizobona kamuva, akunjalo.

Isinyathelo sokuqala silula kakhulu, okudingeka ukwenze nje ukusebenzisa umyalo:

apt install php-pinba

Lesi sandiso siyatholakala kumakhosombe kuze kufike futhi kufaka phakathi i-php 7.3 futhi awudingi ukuhlanganisa noma yini.

Ngemva kokufaka umyalo wokufaka, ngokushesha sithola isandiso esisebenzayo esiqoqa futhi sithumele amamethrikhi ombhalo ngamunye (isikhathi esisebenzayo, inkumbulo, njll.) ngefomethi. i-protobuf nge-udp kuya ku-127.0.0.1:30002.

Kuze kube manje akekho obambe noma ocubungule la maphakethe e-UDP, kodwa lokhu akuthinti kabi isivinini noma ukuzinza kwemibhalo yakho ye-PHP.

Kuze kube muva nje, okuwukuphela kwesicelo ebesingabamba futhi sicubungule la maphakethe e-UDP kwaba pinba_engine. Incazelo "elula futhi emfushane"Ukufakwa kuqeda isifiso sokuphinda ufunde futhi ujule kukho futhi. Uhlu olude lwekhilomitha lokuncika luqukethe kokubili amagama amaphakheji namagama wezinhlelo nezixhumanisi zamakhasi ngamanye ngokufakwa kwawo, futhi lawo anezixhumanisi zawo kwezinye izinto ezincikile. Akekho umuntu onesikhathi noma isifiso sokubhekana nalesi sihlava.

Inqubo yokufaka pinba2 akazange lula ikakhulukazi.

Mhlawumbe ngolunye usuku kuzokwazi ukufaka i-pinba10 ngomyalo owodwa noma emibili futhi kungadingeki ufunde inqwaba yezinto ukuze uqonde ukuthi ungayenza kanjani, kodwa okwamanje akunjalo.

Uma ufaka i-pinba_engine, lokhu kuyingxenye yempi. Phela, ngaphandle iphinikhodi kuzodingeka uzikhawulele kudatha esuka kumaminithi ambalwa nje wokugcina, noma kuzodingeka uhlanganise, ugcine, futhi ubone idatha ngokwakho. Kuhle ukuthi i-pinboard ilula ukuyisebenzisa ukufakwa.

Kungase kubonakale, kungani ukuhlupheka okunjalo uma wonke amamethrikhi avela ku-php asevele ethunyelwe echwebeni le-udp ngefomethi ye-protobuf futhi konke okudingayo ukubhala isicelo esizowabamba futhi uwabeke ohlotsheni oluthile lokugcina? Ngokusobala, labo bathuthukisi abaqhamuke nalo mbono ngokushesha bahlala phansi ukuze babhale imibono yabo, eminye yayo egcine ku-GitHub.

Okulandelayo ukubuka konke kwamaphrojekthi emithombo evulekile emine alondoloza amamethrikhi kusitoreji, lapho le datha ingabuyiswa kalula futhi ibonakale, isibonelo, kusetshenziswa i-grafana.

olegfedoseev/pinba-server (Novemba 2017)

iseva ye-udp ekuhambeni elondoloza amamethrikhi ku-OpenTSDB. Mhlawumbe uma usuvele usebenzisa i-OpenTSDB kuphrojekthi yakho, khona-ke lesi sixazululo sizokufanela, ngaphandle kwalokho ngincoma ukuthi sidlule.

olegfedoseev/pinba-influxdb (Juni 2018)

udp iseva ekuhambeni, kusukela okufanayo i-habrowser, kulokhu okugcina amamethrikhi ku-InfluxDB. Amaphrojekthi amaningi asevele asebenzisa i-InfluxDB ukuqapha, ngakho-ke lesi sixazululo singabalungele.

Izinzuzo:

  • I-InfluxDB kuvumela hlanganisa amamethrikhi atholiwe, futhi ususe okwangempela ngemva kwesikhathi esithile.

Umthengi:

I-ClickHouse-Ninja/Proton (Januwari 2019)

udp iseva ohambeni, elondoloza amamethrikhi ku-ClickHouse. Lesi yisixazululo somngane wami. Kube ngemva kokujwayelana nayo lapho ngathatha khona isinqumo sokuthi kwase kuyisikhathi sokuthatha i-Pinbu ne-Clickhouse.

Izinzuzo:

  • I-Clickhouse ilungele imisebenzi enjalo; ikuvumela ukuthi ucindezele idatha kakhulu ukuze ukwazi ukugcina yonke idatha eluhlaza noma ngaphandle kokuhlanganisa
  • uma kudingekile, ungakwazi ukuhlanganisa kalula amamethrikhi angumphumela
  • isifanekiso esenziwe ngomumo se-grafana
  • igcina ulwazi kuzibali sikhathi

Umthengi:

  • iphutha elibulalayo
  • akukho ukucushwa lapho ungamisa khona igama lesizindalwazi namathebula, ikheli kanye nechweba leseva.
  • lapho ugcina idatha eluhlaza, ithebula lesichazamazwi elisizayo lisetshenziselwa ukugcina ikhasi namakheli esizinda, okwenza imibuzo elandelayo ibe nzima.
  • ezinye izinto ezincane ezilandela kusukela ekususeni kokuqala

i-pinba-server/pinba-server (April 2019)

udp iseva ku-php, egcina amamethrikhi ku-ClickHouse. Lesi yisixazululo sami, okuwumphumela wokwazi i-pinba, i-ClickHouse ne-protobuf. Ngenkathi ngisahlela lonke leli qoqo, ngabhala β€œubufakazi bomqondo”, okwathi, ngokungalindelekile kimi, akuzange kudle izinsiza ezibalulekile (30 MB ye-RAM nangaphansi kwe-1% yeyodwa yama-processor cores ayisishiyagalombili), ngakho-ke yanquma ukwabelana ngayo nomphakathi.

Izinzuzo ziyafana nesixazululo sangaphambilini, ngiphinde ngasebenzisa amagama ajwayelekile avela ku-pinba_engine yasekuqaleni. Ngiphinde ngengeza ukucushwa okukuvumela ukuthi uqalise izimo ezimbalwa zeseva ye-pinbase ngesikhathi esisodwa ukuze ulondoloze amamethrikhi kumathebula ahlukene - lokhu kuyasiza uma ufuna ukuqoqa idatha hhayi kuphela ku-php, kodwa futhi kusukela ku-nginx.
Ukungalungi - "iphutha elibulalayo" kanye nalezo zinto ezincane ezingeke zivumelane nawe, kodwa isisombululo sami "silula njenge-slipper" futhi siqukethe imigqa yekhodi eyi-100 kuphela, ngakho-ke noma yimuphi umthuthukisi we-PHP angashintsha lokho angakuthandi. emizuzwini embalwa.

Ukuthi isebenza kanjani

Imbobo ye-UDP 30002 iyalalelwa. Wonke amaphakethe angenayo ahlukaniswa ngekhodi ngokohlelo lwe-protobuf futhi ahlanganiswe. Kanye ngomzuzu, iphakethe lifakwa ku-clickhouse kuthebula le-pinba.requests. (yonke imingcele icushwe ku config)

Okuncane mayelana ne-clickhouse

I-Clickhouse isekela izinjini ezahlukene zokugcina idatha. Okuvame ukusetshenziswa kakhulu yi-MergeTree.

Uma ngesikhathi esithile unquma ukugcina idatha ehlanganisiwe yaso sonke isikhathi, kanye nedatha eluhlaza okokugcina kuphela, ungakha umbono owenziwe ngezinto ngokuhlanganisa, futhi ngezikhathi ezithile uhlanze ithebula eliyinhloko le-pinba.requests, kuyilapho yonke idatha izohlala ku- umbono owenziwe ngezinto ezibonakalayo. Ngaphezu kwalokho, lapho udala ithebula le-pinba.requests, ungacacisa "injini = Null", khona-ke idatha eluhlaza ngeke ilondolozwe kudiski nhlobo, futhi ngesikhathi esifanayo isazophelela ekubukeni okwenyama futhi igcinwe ihlanganisiwe. . Ngisebenzisa lesi sikimu kumamethrikhi we-nginx, ngoba ku-nginx nginezicelo eziphindwe ka-50 kune-php.

Ngakho-ke, usuhambe ibanga elide futhi angithandi ukukushiya phakathi, ngakho-ke okulandelayo yincazelo eningiliziwe yokufakwa nokucushwa kwesisombululo sami nakho konke okudingayo, kanye nezingibe ezibangele umkhumbi ongaphezu kowodwa. ukuphahlazeka. Yonke inqubo yokufaka ichazwa ku-Ubuntu 18.04 LTS kanye ne-Centos 7; inqubo ingase yehluke kancane kwezinye izinguqulo nezinguqulo.

setting

Ngifaka yonke imiyalo edingekayo I-Dockerfile ukwenza lula ukukhiqizwa kabusha kwemiyalelo. Izingibe kuphela ezizochazwa ngezansi.

php-pinba

Ngemva kokufaka, qiniseka ukuthi kufayela /etc/php/7.2/fpm/conf.d/20-pinba.ini uyekile ukubeka amazwana kuzo zonke izinketho. Kokunye ukusatshalaliswa (isb. ama-centos) angaphawulwa.

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

clickhouse

Ngesikhathi sokufaka, i-clickhouse izokucela ukuthi usethe iphasiwedi yomsebenzisi ozenzakalelayo. Ngokuzenzakalelayo, lo msebenzisi ufinyeleleka kuwo wonke ama-IP, ngakho-ke uma ungenayo i-firewall kuseva yakho, qiniseka ukuthi uyisethela iphasiwedi. Lokhu kungenziwa futhi ngemva kokufakwa kufayela elithi /etc/clickhouse-server/users.xml.

Kuyaqapheleka futhi ukuthi i-clickhouse isebenzisa izimbobo ezimbalwa, kufaka phakathi i-9000. Le port iphinde isetshenziselwe i-php-fpm kokunye ukusatshalaliswa (isibonelo, ama-centos). Uma usuvele usebenzisa lesi sizindalwazi, ungasishintshela kwesinye kufayela elithi /etc/clickhouse-server/config.xml.

i-grafana ene-plugin ye-clickhouse

Ngemva kokufaka i-Grafana, sebenzisa i-admin yokungena kanye ne-password admin. Uma ungena okokuqala, u-Grafana uzokucela ukuthi usethe iphasiwedi entsha.

Okulandelayo, hamba ku-β€œ+” -> imenyu yokungenisa bese ubonisa inombolo yedeshibhodi ezongeniswa 10011. Ngilungise futhi ngalayisha le deshibhodi ukuze ungaphindi uzenzele futhi.

I-Grafana isekela ukusebenza nge-clickhouse nge-plugin yenkampani yangaphandle, kodwa i-Grafana ayinazo izexwayiso zama-plugin ezinkampani zangaphandle (kube khona ithikithi lalokhu iminyaka eminingana).

i-pinba-server

Ukufaka i-protobuf ne-libevent kungokuzithandela, kodwa kuthuthukisa ukusebenza kwe-pinba-server. Uma ufaka i-pinba-server kufolda ngaphandle kwe-/opt, uzodinga futhi ukulungisa iskripthi se-systemd ifayela.

pinba module ye nginx

Ukuze uhlanganise imojula, udinga amakhodi omthombo wenguqulo efanayo ye-nginx esevele ifakiwe kuseva yakho, kanye nezinketho ezifanayo zokuhlanganiswa, ngaphandle kwalokho ukwakhiwa kuzophumelela, kodwa lapho uxhuma imojula, iphutha lizophonswa lokho. "imojula ayihambelani kanambambili." Izinketho zokuhlanganisa zingabukwa kusetshenziswa umyalo we-nginx -V

Ama-Life hacks

Wonke amasayithi ami asebenza ku-https kuphela. Inkambu ye-schema iba yize, ngakho ngiyisebenzisela ukuhlukanisa iwebhu/ikhonsoli.

Kumibhalo efinyeleleka kuwebhu engiyisebenzisayo:

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

Futhi emibhalweni ye-console (isibonelo, imibhalo ye-cron):

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

Kudeshibhodi yami eGrafana kuneswishi yewebhu/console yokubuka izibalo ngokuhlukene.

Ungakwazi futhi ukuthumela omaka bakho ku-Pinba, isibonelo:

pinba_tag_set('country', $countryCode);

Yilokho kuphela.

Sicela uphendule amavoti angezansi kwesihloko.

Njengenjwayelo, ngiyakuxwayisa ukuthi angikweluleki noma ngisize ngemilayezo yomuntu siqu ku-Habr nezinkundla zokuxhumana.

Dala ithikithi ku-Github.

Sicela futhi uxhaso ngokuthanda Inguqulo yesiNgisi Lesi sihloko ku-reddit.

Abasebenzisi ababhalisiwe kuphela abangabamba iqhaza kuhlolovo. Ngena ngemvume, wamukelekile.

Iyiphi i-OS oyisebenzisayo kuseva?

  • Ubuntu

  • CentOS

  • Debian

  • I-Gentoo

  • I-Red Hat

  • Fedora

  • Vula i-OpenSUSE

  • I-SuSE

  • Unix

  • Windows

  • nezinye

Bangu-114 abasebenzisi abavotile. Abasebenzisi abangu-11 bagobile.

Iyiphi inguqulo ye-php oyisebenzisayo kuseva?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • nezinye

Bangu-105 abasebenzisi abavotile. Abasebenzisi abangu-17 bagobile.

Wake wasebenzisa i-pinba?

  • yebo

  • cha, kodwa ngingathanda

  • cha futhi ngeke ngifune

  • cha futhi akezwanga ngaye

Bangu-100 abasebenzisi abavotile. Abasebenzisi abangu-14 bagobile.

Iyiphi inguqulo yeseva ye-Pinba ongathanda ukuyizama?

  • pinba_engine (mysql engine)

  • I-pinba2 (injini ye-mysql)

  • i-pinboard (php + mysql)

  • olegfedoseev/pinba-server (hamba + OpenTSDB)

  • olegfedoseev/pinba-influxdb (hamba + influxdb)

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

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

  • Ngizobhala okwami

  • nezinye

Bangu-39 abasebenzisi abavotile. Abasebenzisi abangu-47 bagobile.

Source: www.habr.com

Engeza amazwana