Statistics na nlekota nke PHP scripts ozugbo. ClickHouse na Grafana na-abịa nyere Pinba aka

N'isiokwu a, m ga-agwa gị otu esi eji pinba na clickhouse na grafana kama pinba_engine na pinboard.

Na ọrụ PHP, pinba nwere ike ịbụ naanị ụzọ a pụrụ ịdabere na ya iji ghọta ihe na-eme na arụmọrụ. N'ezie, a na-eme pinba nanị mgbe achọpụtala nsogbu ma ọ bụ "ebe a ga-egwupụta" edoghị anya.

Ọtụtụ mgbe, ọ dịghị onye nwere echiche ọ bụla ugboro ole kwa sekọnd / nkeji a na-akpọ nke a ma ọ bụ edemede ahụ ma ha na-amalite ịkwalite "site na aka", malite na ebe ndị ahụ yiri ihe ezi uche dị na ya.

Ụfọdụ na-enyocha ndekọ nginx, ebe ndị ọzọ na-enyocha ajụjụ nchekwa data ngwa ngwa.

N'ezie, pinba agaghị abụ nke ukwuu, mana enwere ọtụtụ ihe kpatara na ọ bụghị ọrụ ọ bụla nwere ya.

Statistics na nlekota nke PHP scripts ozugbo. ClickHouse na Grafana na-abịa nyere Pinba aka

Na ihe mbụ kpatara ya bụ echichi.

Iji nwetakwuo ma ọ bụ na-erughị ụfọdụ ụdị "ike ọgwụgwụ" site na mmejuputa Pinba, ọ na-achọsi ike ịhụ metrics ọ bụghị naanị maka nkeji ikpeazụ, kamakwa n'ime ogologo oge (site na ụbọchị ruo ọnwa).

Maka nke a, ịchọrọ:

  • tinye ndọtị maka php (ma ị nwere ike ịchọ modul maka nginx)
  • chịkọta ndọtị maka mysql
  • tinye pinboard ma hazie cron

N'ihi ntakịrị ozi gbasara Pinba, ọtụtụ ndị na-eche na ọ na-arụ ọrụ na PHP5 na ọ dịla anya ihe gara aga, ma dị ka anyị ga-ahụ mgbe e mesịrị, nke a abụghị ikpe.

Nzọụkwụ mbụ bụ nke kachasị mfe, naanị ihe ị ga-eme bụ ịgba ọsọ iwu:

apt install php-pinba

Mgbakwunye a dị na ebe nchekwa ruo yana gụnyere php 7.3 ma ọ dịghị mkpa ka ị chịkọta ihe ọ bụla.

Mgbe emechara iwu nwụnye, anyị na-enweta ngwa ngwa ndọtị na-arụ ọrụ nke na-anakọta ma na-eziga metrics maka edemede ọ bụla (oge na-agba ọsọ, ebe nchekwa, wdg) na usoro. protobuf site na udp ruo 127.0.0.1:30002.

Ka ọ dị ugbu a ọ nweghị onye ejidela ma ọ bụ hazie ngwugwu UDP ndị a, mana nke a anaghị emetụta ọsọ ma ọ bụ kwụsie ike nke ederede PHP gị n'ụzọ ọ bụla.

Ruo n'oge na-adịbeghị anya, naanị ngwa nwere ike ijide ma hazie ngwugwu UDP ndị a bụ pinba_engine. Nkọwa"dị mfe na nkenke" nwụnye na-akụda ọchịchọ ịgụ na ịbanye na ya ọzọ. Ndepụta dabere na ogologo kilomita nwere ma aha ngwugwu na aha mmemme na njikọ nke ibe n'otu n'otu na ntinye ha, ndị ahụ nwere njikọ nke ha na ndabere ndị ọzọ. Ọ dịghị onye nwere oge ma ọ bụ ọchịchọ ime ihe ọjọọ a.

Echichi usoro pinba2 emebeghị karịsịa mfe.

Ikekwe otu ụbọchị, ọ ga-ekwe omume ịwụnye pinba10 na otu iwu ma ọ bụ abụọ ma ghara ịgụ ụyọkọ ihe iji ghọta otú e si eme ya, ma ugbu a, nke a abụghị ikpe.

Ọ bụrụ na ị wụnye pinba_engine, nke a bụ naanị ọkara agha. E kwuwerị, na-enweghị ọkpọkọ ị ga-amachi onwe gị na data sitere na nkeji ole na ole gara aga, ma ọ bụ na ị ga-agbakọta, chekwaa ma jiri anya nke uche hụ data ahụ n'onwe gị. Ọ dị mma na pinboard dị mfe iji nwụnye.

Ọ ga-adị ka, gịnị kpatara nhụjuanya dị otú ahụ ma ọ bụrụ na metrics niile sitere na php ezipụlarị na ọdụ ụgbọ mmiri udp na usoro protobuf na ihe niile ị chọrọ bụ ide ngwa ga-ejide ha ma tinye ha n'ụdị nchekwa? N'ụzọ doro anya, ndị mmepe ahụ chepụtara echiche a nọdụrụ ala ozugbo dee echiche nke ha, ụfọdụ n'ime ha kwụsịrị na GitHub.

Ihe na-esonụ bụ ntụle nke ọrụ isi mmalite anọ mepere emepe na-echekwa metrics na nchekwa, nke enwere ike isi na ya weghachi data a n'ụzọ dị mfe ma hụ ya anya, dịka ọmụmaatụ, iji grafana.

olegfedoseev/pinba-sava (Nọvemba 2017)

udp nkesa na-aga nke na-echekwa metrik na OpenTSDB. Ikekwe ọ bụrụ na ị na-eji OpenTSDB na ọrụ gị, mgbe ahụ ngwọta a ga-adabara gị, ma ọ bụghị ya, m na-akwado ịgafe ya.

olegfedoseev/pinba-influxdb (June 2018)

udp nkesa na-aga, site na otu ihe nchọgharị, nke oge a na-echekwa metrik na InfluxDB. Ọtụtụ ọrụ na-eji InfluxDB maka nlekota, yabụ ngwọta a nwere ike zuru oke maka ha.

Ihe:

  • InfluxDB ọ na-enye ohere chịkọta metrik enwetara, wee hichapụ nke mbụ mgbe oge akọwapụtara.

Cons:

  • Ihe ngwọta a anaghị echekwa ozi na ngụ oge.
  • InfluxDB ga-echekwa adreesị ibe saịtị dị ka mkpado ma ọ bụrụ na ị nwere ọtụtụ adreesị ibe pụrụ iche, nke a ga-eduga ụbara oriri ebe nchekwa ohere ohere. Site na oge ụfọdụ ọ"ga-amalite iri ihe ncheta dị ka onye ara". (isi iyi)

ClickHouse-Ninja/Proton (Januarị 2019)

udp nkesa na-aga, nke na-echekwa metrik na ClickHouse. Nke a bụ ngwọta enyi m. Ọ bụ mgbe m matara ya ka m kpebiri na oge eruola ka m were Pinbu na Clickhouse.

Ihe:

  • Clickhouse dị mma maka ọrụ ndị dị otú ahụ; ọ na-enye gị ohere ịpịkọta data nke ukwuu nke na ị nwere ike ịchekwa data raw niile ọbụlagodi na-enweghị nchịkọta.
  • ọ bụrụ na achọrọ, ị nwere ike ịchịkọta metrics ga-apụta n'ụzọ dị mfe
  • ndebiri emebere maka grafana
  • na-echekwa ozi na ngụ oge

Cons:

  • na-egbu egbu ntụpọ
  • Enweghị nhazi nke ị nwere ike ịhazi aha nchekwa data na tebụl, adreesị na ọdụ ụgbọ mmiri nke ihe nkesa.
  • mgbe ị na-echekwa data raw, a na-eji tebụl ọkọwa okwu inyeaka na-echekwa ibe na adreesị ngalaba, nke na-eme ka ajụjụ ndị na-esote.
  • obere ihe ndị ọzọ na-eso site na mwepu mbụ

pinba-sava/pinba-sava (Eprel 2019)

udp nkesa na php, nke na-echekwa metrik na ClickHouse. Nke a bụ ngwọta m, nke bụ nsonaazụ nke ịmara pinba, ClickHouse na protobuf. Mgbe m na-edozi ụyọkọ a dum, edere m "ihe akaebe nke echiche", nke, na m na-atụghị anya ya, anaghị eri ihe dị ukwuu (30 MB nke RAM na ihe na-erughị 1% nke otu n'ime cores processor asatọ), ya mere m kpebiri ịkọrọ ya ọha na eze.

Uru ndị ahụ dị ka ngwọta gara aga, m na-ejikwa aha ndị a na-emekarị site na pinba_engine mbụ. M gbakwunyekwara nhazi nke na-enye gị ohere ịmalite ọtụtụ ihe nkesa pinbase n'otu oge iji chekwaa metrics na tebụl dị iche iche - nke a bara uru ma ọ bụrụ na ịchọrọ ịnakọta data ọ bụghị naanị na php, kamakwa site na nginx.
Ọdịmma - "njọ na-egbu egbu" na obere ihe ndị ahụ na-agaghị adabara gị onwe gị, mana ngwọta m dị "dị mfe dị ka slipper" ma mejupụtara naanị ihe dị ka ahịrị 100 nke koodu, yabụ onye nrụpụta PHP ọ bụla nwere ike ịgbanwe ihe na-adịghị amasị ya. n'ime nkeji ole na ole.

Olee otú o si arụ ọrụ

A na-ege ntị UDP ọdụ ụgbọ mmiri 30002. A na-edozi ngwugwu niile na-abata dị ka atụmatụ protobuf si dị ma gbakọta. Otu ugboro n'otu nkeji, a na-etinye otu ngwugwu n'ime ụlọ pịa na tebụl pinba.requests. (a na-ahazi paramita niile na nhazi)

Obere banyere clickhouse

Clickhouse na-akwado igwe nchekwa data dị iche iche. Nke a na-ejikarị bụ MergeTree.

Ọ bụrụ na n'oge ụfọdụ ị na-ekpebi na-echekwa aggregated data mgbe niile, na raw data naanị maka nke ikpeazụ, mgbe ahụ, ị ​​nwere ike ịmepụta a materialized echiche na grouping, na-ekpochapụ isi pinba.requests table, mgbe niile data ga-anọgide na na anya ihe onwunwe. Ọzọkwa, mgbe ị na-eke tebụl pinba.requests, ị nwere ike ịkọwapụta "engine = Null", mgbe ahụ, a gaghị echekwa data raw na diski ma ọlị, ma n'otu oge ahụ, ọ ka ga-ejedebe na nlele ihe onwunwe ma chekwaa mkpokọta. . M na-eji atụmatụ a maka nginx metrics, n'ihi na na nginx enwere m arịrịọ ugboro 50 karịa na php.

Ya mere, ị bịarutere ogologo oge ma agaghị m achọ ịhapụ gị ọkara, yabụ ihe na-esote bụ nkọwa zuru ezu nke ntinye na nhazi nke ngwọta m na ihe niile ị chọrọ, yana ọnyà ndị kpatara ihe karịrị otu ụgbọ mmiri. ka ọ daa. A kọwara usoro nrụnye niile maka Ubuntu 18.04 LTS na Centos 7; usoro a nwere ike ịdị iche na nkesa na nsụgharị ndị ọzọ.

ọnọdụ

Etinyere m iwu niile dị mkpa na dockerfile iji kwado reproducibility nke ntuziaka. Naanị ọnyà ndị a ka a ga-akọwa n'okpuru.

php-pinba

Mgbe echichi, jide n'aka na na /etc/php/7.2/fpm/conf.d/20-pinba.ini faịlụ ị nwere uncommented niile nhọrọ. Na ụfọdụ nkesa (dịka centos) enwere ike ịkọwapụta ha.

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

ụlọ akụ

Mgbe echichi, clickhouse ga-ajụ gị ka ịtọọ paswọọdụ maka onye ọrụ ndabara. Site na ndabara, onye ọrụ a nwere ike ịnweta site na IP niile, yabụ ọ bụrụ na ịnweghị firewall na sava gị, jide n'aka na ị debere ya paswọọdụ. Nke a nwekwara ike ime mgbe echichi na /etc/clickhouse-server/users.xml faịlụ.

Ọ dịkwa mma ịmara na clickhouse na-eji ọtụtụ ọdụ ụgbọ mmiri, gụnyere 9000. A na-ejikwa ọdụ ụgbọ mmiri a maka php-fpm na nkesa ụfọdụ (dịka ọmụmaatụ, centos). Ọ bụrụ na ijiri ọdụ ụgbọ mmiri a, ị nwere ike ịgbanwe ya gaa na nke ọzọ na faịlụ /etc/clickhouse-server/config.xml.

grafana na clickhouse ngwa mgbakwunye

Mgbe ị wụnye Grafana, jiri nchịkwa nbanye na paswọọdụ admin. Mgbe ịbanye na nke mbụ, Grafana ga-ajụ gị ka ịtọọ paswọọdụ ọhụrụ.

Na-esote, gaa na "+" -> menu mbubata wee gosi nọmba dashboard maka mbubata 10011. A kwadebere m wee bulite dashboard a ka ị ghara ime ya onwe gị ọzọ.

Grafana na-akwado ịrụ ọrụ na clickhouse site na ngwa mgbakwunye ndị ọzọ, mana Grafana enweghị ọkwa maka plugins ndị ọzọ (enweela tiketi maka nke a ruo ọtụtụ afọ).

pinba-ihe nkesa

Ịwụnye protobuf na nnwere onwe bụ nhọrọ, mana na-eme ka arụmọrụ pinba-server dịkwuo mma. Ọ bụrụ na ị wụnye pinba-sava na nchekwa na-abụghị / họrọ, mgbe ahụ ị ga-mkpa mezie edemede systemd faịlụ.

pinba modul maka nginx

Iji chịkọta modul, ịchọrọ koodu iyi nke otu ụdị nginx nke etinyere na sava gị, yana otu nhọrọ nchịkọta, ma ọ bụghị ya, ihe nrụpụta ahụ ga-aga nke ọma, mana mgbe ị na-ejikọ modul ahụ, a ga-atụfu njehie ahụ. "Modul ahụ adabaghị na ọnụọgụ abụọ." Enwere ike ịlele nhọrọ nchịkọta site na iji iwu nginx -V

Ndụ ndụ

Saịtị m niile na-arụ ọrụ naanị na https. Mpaghara schema na-aghọ enweghị isi, yabụ m na-eji ya kewaa webụ/console.

N'ime edemede ndị a na-enweta na webụ m na-eji:

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

Na n'ihe odide njikwa (dịka ọmụmaatụ, cron scripts):

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

N'ime dashboard m dị na Grafana enwere mgba ọkụ webụ/console maka ọnụ ọgụgụ nlele iche iche.

Ị nwekwara ike izipu mkpado gị na Pinba, dịka ọmụmaatụ:

pinba_tag_set('country', $countryCode);

Ọ gwụla.

Biko zaa ntuli aka n'okpuru akụkọ.

Dị ka ọ dị na mbụ, a na m adọ gị aka na ntị na anaghị m enye ndụmọdụ ma ọ bụ nyere aka site na ozi nkeonwe na Habr na netwọkụ mmekọrịta.

Mepụta tiketi na Github.

Biko kwadokwa na mmasị Ụdị Bekee Akụkọ a na reddit.

Naanị ndị ọrụ edebanyere aha nwere ike isonye na nyocha a. banye, Biko.

Kedu OS ị na-eji na sava ahụ?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • OpenSUSE

  • AHSE

  • Unix

  • Windows

  • ọzọ

Ndị ọrụ 114 tụrụ vootu. Ndị ọrụ 11 anabataghị.

Kedu ụdị php ị na-eji na sava ahụ?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • ọzọ

Ndị ọrụ 105 tụrụ vootu. Ndị ọrụ 17 anabataghị.

Ị jirila pinba?

  • ee

  • mba, mana ọ ga-amasị m

  • mba na agaghị m achọ

  • mba ma anụbeghị ya

Ndị ọrụ 100 tụrụ vootu. Ndị ọrụ 14 anabataghị.

Kedu ụdị nkesa Pinba ga-amasị gị ịnwale?

  • pinba_engine (njin mysql)

  • pinba2 (njin mysql)

  • pinboard (php + mysql)

  • olegfedoseev/pinba-sava (gaa + OpenTSDB)

  • olegfedoseev/pinba-influxdb (go + influxdb)

  • pinba-sava/pinba-sava (gaa + clickhouse)

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

  • Aga m ede nke m n'onwe m

  • ọzọ

Ndị ọrụ 39 tụrụ vootu. Ndị ọrụ 47 anabataghị.

isi: www.habr.com

Tinye a comment