Staitistig agus sgrùdadh sgriobtaichean PHP ann an àm fìor. Thig ClickHouse agus Grafana gu taic Pinba

San artaigil seo innsidh mi dhut mar a chleachdas tu pinba le clickhouse agus grafana an àite pinba_engine agus pinboard.

Air pròiseact PHP, is dòcha gur e pinba an aon dòigh earbsach air tuigse fhaighinn air na tha a’ tachairt le coileanadh. Fìor, mar as trice cha tèid pinba a chuir an gnìomh ach nuair a tha duilgheadasan air fhaicinn mar-thà agus nach eil e soilleir “càit an tèid a chladhach.”

Gu math tric chan eil fios aig duine cia mheud uair san diog / mionaid a chanar ris an sgriobt seo no an sgriobt sin agus tòisichidh iad a’ dèanamh an fheum as fheàrr “le suathadh”, a’ tòiseachadh bho na h-àiteachan sin a tha nas reusanta.

Bidh cuid a’ dèanamh mion-sgrùdadh air logaichean nginx, agus cuid eile a’ sgrùdadh cheistean stòr-dàta slaodach.

Gu dearbh, cha bhiodh pinba iomarcach, ach tha grunn adhbharan ann nach eil e aig a h-uile pròiseact.

Staitistig agus sgrùdadh sgriobtaichean PHP ann an àm fìor. Thig ClickHouse agus Grafana gu taic Pinba

Agus is e a 'chiad adhbhar an stàladh.

Gus barrachd no nas lugha de sheòrsa air choreigin fhaighinn bho bhith a’ buileachadh Pinba, tha e gu math ion-mhiannaichte meatrach fhaicinn chan ann a-mhàin airson na mionaidean mu dheireadh, ach cuideachd thar ùine mhòr (bho làithean gu mìosan).

Feumaidh tu seo a dhèanamh airson seo:

  • stàlaich leudachadh airson php (agus is dòcha gu bheil thu ag iarraidh modal airson nginx)
  • cuir ri chèile leudachadh airson mysql
  • stàlaich pinboard agus rèitich cron

Air sgàth cho beag de dh'fhiosrachadh mu Pinba, tha mòran dhaoine den bheachd nach do dh'obraich e ach air PHP5 agus gu bheil e air a bhith na rud san àm a dh'fhalbh, ach mar a chì sinn nas fhaide air adhart, chan eil seo fìor.

Is e a’ chiad cheum an rud as sìmplidh, chan eil agad ach a bhith a’ ruith an àithne:

apt install php-pinba

Tha an leudachadh seo ri fhaighinn anns na stòran suas gu agus a’ toirt a-steach php 7.3 agus chan fheum thu dad a chuir ri chèile.

Às deidh dhuinn an àithne stàlaidh a chuir an gnìomh, gheibh sinn sa bhad leudachadh obrach a bhios a ’tional agus a’ cur metrics airson gach sgriobt (ùine ruith, cuimhne, msaa) anns a ’chruth protobuf tro udp gu 127.0.0.1:30002.

Gu ruige seo chan eil duine air na pacaidean UDP seo a ghlacadh no a phròiseasadh, ach chan eil seo ann an dòigh sam bith a’ toirt droch bhuaidh air astar no seasmhachd do sgriobtaichean PHP.

Gu ruige o chionn ghoirid, b ’e an aon iarrtas a b’ urrainn na pacaidean UDP sin a ghlacadh agus a phròiseasadh pinba_einnsean. Tuairisgeul"sìmplidh agus pongail“ tha an stàladh a’ dì-mhisneachadh miann a bhith a’ leughadh agus a’ dol a-steach a-rithist. Tha an dà chuid ainmean phasganan agus ainmean phrògraman agus ceanglaichean gu duilleagan fa leth leis an stàladh anns na liostaichean cilemeatair de dh'fhaid, agus tha na ceanglaichean aca fhèin ri eisimeileachd eile. Chan eil ùine no miann aig duine dèiligeadh ris a’ chnap seo.

Pròiseas stàlaidh pinba 2 cha do rinn gu sònraichte nas fhasa.

Is dòcha uaireigin gum bi e comasach pinba10 a chuir a-steach le àithne no dhà agus gun a bhith a’ leughadh dòrlach de stuth gus tuigsinn mar a nì thu e, ach airson a-nis chan eil seo fìor.

Ma stàlaicheas tu pinba_engine, chan eil an seo ach leth a’ bhlàir. Às deidh na h-uile, às aonais bòrd-pinn feumaidh tu thu fhèin a chuingealachadh gu dàta bho dìreach na beagan mhionaidean mu dheireadh, no feumaidh tu an dàta a chruinneachadh, a stòradh agus fhaicinn thu fhèin. Tha e math gu bheil pinboard gu math sìmplidh a chleachdadh stàladh.

Bhiodh e coltach, carson a tha leithid de dh’ fhulangas ma tha a h-uile meatrach bho php air a chuir chun phort udp ann an cruth protobuf mu thràth agus chan eil agad ach tagradh a sgrìobhadh a ghlacas iad agus a chuir ann an stòradh de sheòrsa air choreigin? A rèir coltais, shuidh an luchd-leasachaidh sin a thàinig a-steach don bheachd seo sa bhad gus am beachdan fhèin a sgrìobhadh, agus thàinig cuid dhiubh gu crìch air GitHub.

Tha na leanas na thar-shealladh air ceithir pròiseactan stòr fosgailte a shàbhaileas metrics ann an stòradh, às am faodar an dàta seo fhaighinn air ais agus fhaicinn gu furasta, mar eisimpleir, a’ cleachdadh grafana.

olegfedoseev/pinba-server (Samhain 2017)

frithealaiche udp air adhart a shàbhaileas metrics gu OpenTSDB. Is dòcha ma tha thu mu thràth a’ cleachdadh OpenTSDB sa phròiseact agad, gum bi am fuasgladh seo freagarrach dhut, air neo tha mi a’ moladh a dhol seachad air.

olegfedoseev/pinba-influxdb (Ògmhios 2018)

frithealaiche udp air falbh, bhon aon rud neach-fuasglaidh, a bhios an turas seo a’ stòradh na meatrach ann an InfluxDB. Tha mòran phròiseactan mu thràth a’ cleachdadh InfluxDB airson sgrùdadh, agus mar sin dh’ fhaodadh am fuasgladh seo a bhith foirfe dhaibh.

Pros:

  • InfluxDB Tha e a 'toirt cothrom cruinnich na meatrach a fhuaireadh, agus cuir às don fhear thùsail às deidh ùine ainmichte.

Cons:

Cliog Taigh-Ninja/Proton (Faoilleach 2019)

frithealaiche udp air adhart, a shàbhaileas metrics ann an ClickHouse. Is e seo fuasgladh mo charaid. B’ ann às deidh dhomh eòlas fhaighinn air a cho-dhùin mi gu robh an t-àm ann Pinbu agus Clickhouse a ghabhail os làimh.

Pros:

  • Tha Clickhouse air leth freagarrach airson gnìomhan mar sin; leigidh e leat dàta a dhlùthadh cho mòr is gun urrainn dhut an dàta amh gu lèir a stòradh eadhon às aonais cruinneachaidhean
  • ma tha feum air, is urrainn dhut gu furasta na meatrach a thig às a chruinneachadh
  • teamplaid deiseil airson grafana
  • a 'sàbhaladh fiosrachadh mu timers

Cons:

  • locht marbhtach
  • chan eil rèiteachadh ann far an urrainn dhut ainm an stòr-dàta agus na clàran, seòladh agus port an fhrithealaiche a rèiteachadh.
  • nuair a thathar a’ stòradh dàta amh, bithear a’ cleachdadh clàr faclair cuideachail gus seòlaidhean duilleag is àrainn a stòradh, a nì iom-fhillteachd cheistean às dèidh làimh
  • rudan beaga eile a tha a 'leantainn bhon chiad minus

pinba-server/pinba-server (Giblean 2019)

frithealaiche udp ann am php, a shàbhaileas metrics ann an ClickHouse. Is e seo am fuasgladh agam, a tha mar thoradh air eòlas fhaighinn air pinba, ClickHouse agus protobuf. Fhad ‘s a bha mi a’ rèiteach a ’bhuidheann slàn seo, sgrìobh mi“ dearbhadh bun-bheachd ”, nach do dh’ ith mi, ris nach robh dùil, goireasan cudromach (30 MB de RAM agus nas lugha na 1% de aon de na h-ochd coraichean pròiseasar), agus mar sin tha mi co-dhùnadh a roinn leis a’ phoball.

Tha na buannachdan an aon rud ris an fhuasgladh roimhe, chleachd mi cuideachd na h-ainmean àbhaisteach bhon pinba_engine tùsail. Chuir mi cuideachd config ris a leigeas leat grunn shuidheachaidhean frithealaiche pinbase a chuir air bhog aig an aon àm gus metrics a shàbhaladh ann an diofar chlàran - tha seo feumail ma tha thu airson dàta a chruinneachadh chan ann a-mhàin bho php, ach cuideachd bho nginx.
Eas-bhuannachdan - “locht marbhtach” agus na rudan beaga sin nach bi freagarrach dhut gu pearsanta, ach tha am fuasgladh agam “cho sìmplidh ri sliper” agus chan eil ann ach mu 100 loidhne de chòd, gus an urrainn do leasaiche PHP sam bith na rudan nach toil leis atharrachadh. ann am mionaid no dhà.

Ciamar a tha e ag obair

Thathas ag èisteachd ri port UDP 30002. Tha na pacaidean uile a thig a-steach air an còdachadh a rèir an sgeama protobuf agus air an cruinneachadh. Aon uair sa mhionaid, thèid pasgan a chuir a-steach don taigh-cliog a-steach don chlàr pinba.requests. (tha na paramadairean uile air an rèiteachadh a-steach rèiteachadh)

Beagan mu dheidhinn clickhouse

Bidh Clickhouse a’ toirt taic do dhiofar einnseanan stòraidh dàta. Is e am fear as cumanta MergeTree.

Ma cho-dhùnas tu aig àm air choreigin dàta cruinnichte a stòradh fad na h-ùine, agus dàta amh a-mhàin airson an fhear mu dheireadh, faodaidh tu sealladh tàbhachdach a chruthachadh le cruinneachadh, agus bho àm gu àm am prìomh chlàr pinba.requests a ghlanadh, fhad ‘s a bhios an dàta gu lèir fhathast anns an sealladh gnàthaichte. A bharrachd air an sin, nuair a chruthaicheas tu an clàr pinba.requests, faodaidh tu “engine = Null” a shònrachadh, an uairsin cha tèid an dàta amh a shàbhaladh gu diosc idir, agus aig an aon àm thig e gu crìch fhathast san t-sealladh tàbhachdach agus thèid a shàbhaladh gu h-iomlan. . Bidh mi a’ cleachdadh an sgeama seo airson nginx metrics, oir air nginx tha 50 uair a bharrachd iarrtasan agam na air php.

Mar sin, tha thu air a thighinn astar mòr agus cha bu mhath leam do fàgail letheach slighe, agus mar sin tha na leanas a’ toirt cunntas mionaideach air stàladh agus rèiteachadh an fhuasglaidh agam agus a h-uile dad a dh ’fheumas tu, a bharrachd air na duilgheadasan a dh’ adhbhraich barrachd air aon shoitheach. a bhualadh. Tha am pròiseas stàlaidh gu lèir air a mhìneachadh airson Ubuntu 18.04 LTS agus Centos 7; faodaidh am pròiseas a bhith beagan eadar-dhealaichte air sgaoilidhean agus dreachan eile.

suidheachadh

Chuir mi a-steach na h-òrdughan riatanach uile Faidhle docker gus ath-riochdachadh stiùiridhean a dhèanamh comasach. Is e dìreach na duilgheadasan a thèid a mhìneachadh gu h-ìosal.

php-pinba

Às deidh an stàladh, dèan cinnteach gu bheil thu anns an fhaidhle /etc/php/7.2/fpm/conf.d/20-pinba.ini nach tug thu iomradh air na roghainnean uile. Air cuid de sgaoilidhean (me centos) dh'fhaodadh gun tèid iomradh a thoirt orra.

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

taigh-cliog

Rè an stàladh, iarraidh Clickhouse ort facal-faire a shuidheachadh airson an neach-cleachdaidh bunaiteach. Gu gnàthach, tha an cleachdaiche seo ruigsinneach bho gach IP, mar sin mura h-eil balla-teine ​​​​agad air an t-seirbheisiche agad, bi cinnteach gun cuir thu facal-faire air a shon. Faodar seo a dhèanamh cuideachd às deidh an stàladh anns an fhaidhle /etc/clickhouse-server/users.xml.

Is fhiach a bhith mothachail cuideachd gu bheil clickhouse a 'cleachdadh grunn phuirt, a' gabhail a-steach 9000. Tha am port seo cuideachd air a chleachdadh airson php-fpm ann an cuid de sgaoilidhean (mar eisimpleir, centos). Ma chleachdas tu am port seo mu thràth, faodaidh tu atharrachadh gu fear eile san fhaidhle /etc/clickhouse-server/config.xml.

grafana le plugan clickhouse

Às deidh dhut Grafana a chuir a-steach, cleachd an rianadair logadh a-steach agus rianadair facal-faire. Nuair a logas tu a-steach airson a’ chiad uair, iarraidh Grafana ort facal-faire ùr a shuidheachadh.

An uairsin, rachaibh chun chlàr “+” -> in-mhalairt agus comharraich an àireamh deas-bhòrd airson in-mhalairt 10011. Dh'ullaich mi agus luchdaich mi suas an deas-bhòrd seo gus nach fheum thu a dhèanamh leat fhèin a-rithist.

Tha Grafana a’ toirt taic do bhith ag obair le clickhouse tro plugan treas-phàrtaidh, ach chan eil rabhaidhean aig Grafana airson plugins treas-phàrtaidh (tha tiogaid air a bhith ann airson seo airson grunn bhliadhnaichean).

pinba-fhrithealaiche

Tha e roghainneil a bhith a’ stàladh protobuf agus libevent, ach a’ leasachadh coileanadh frithealaiche pinba. Ma stàlaicheas tu pinba-server ann am pasgan a bharrachd air / opt, feumaidh tu a cheartachadh cuideachd sgriobt siostam faidhle.

modal pinba airson nginx

Gus am modal a chuir ri chèile, feumaidh tu còdan stòr den aon dreach de nginx a tha air a chuir a-steach air an t-seirbheisiche agad mu thràth, a bharrachd air na h-aon roghainnean cruinneachaidh, air neo bidh an togail soirbheachail, ach nuair a cheanglas tu am modal, thèid mearachd a thilgeil “Chan eil am modal co-chosmhail ri dàna.” Faodar coimhead air roghainnean cruinneachaidh a’ cleachdadh an àithne nginx -V

Hacaidhean beatha

Chan eil a h-uile làrach agam ag obair ach air https. Bidh an raon sgeama a’ fàs gun bhrìgh, agus mar sin bidh mi ga chleachdadh gus lìn/console a sgaradh.

Ann an sgriobtaichean a tha ruigsinneach bhon lìon bidh mi a’ cleachdadh:

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

Agus ann an sgriobtaichean tòcan (mar eisimpleir, sgriobtaichean cron):

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

Anns an deas-bhòrd agam ann an Grafana tha tionndadh lìn / consol airson coimhead air staitistig air leth.

Faodaidh tu cuideachd na tagaichean agad a chuir gu Pinba, mar eisimpleir:

pinba_tag_set('country', $countryCode);

Sin e.

Feuch an freagair thu na cunntasan-bheachd fon artaigil.

Mar as àbhaist, tha mi a 'toirt rabhadh dhut nach eil mi a' toirt comhairle no cuideachadh tro theachdaireachdan pearsanta air Habr agus lìonraidhean sòisealta.

Cruthaich tiogaid air Github.

Feuch an toir thu taic cuideachd le likes dreach Beurla den artaigil seo air reddit.

Chan fhaod ach luchd-cleachdaidh clàraichte pàirt a ghabhail san sgrùdadh. Soidhnig a-steach, mas e do thoil e.

Dè an OS a tha thu a’ cleachdadh air an fhrithealaiche?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • OpenSUSE

  • AN EILBHEIS

  • Unix

  • Windows

  • eile

Bhòt 114 neach-cleachdaidh. Sheall 11 neach-cleachdaidh.

Dè an dreach de php a tha thu a’ cleachdadh air an fhrithealaiche?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • eile

Bhòt 105 neach-cleachdaidh. Sheall 17 neach-cleachdaidh.

An do chleachd thu pinba a-riamh?

  • tha

  • chan eil, ach bu mhath leam

  • chan eil agus cha bhithinn ag iarraidh

  • chan eil agus cha chuala mi iomradh oirre

Bhòt 100 neach-cleachdaidh. Sheall 14 neach-cleachdaidh.

Dè an tionndadh de fhrithealaiche Pinba a bu toigh leat feuchainn?

  • pinba_engine (einnsean mysql)

  • pinba2 (einnsean mysql)

  • pinboard (php + mysql)

  • olegfedoseev/pinba-server (falbh + OpenTSDB)

  • olegfedoseev/pinba-influxdb (go + influxdb)

  • pinba-server/pinba-server (falbh + taigh-cliog)

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

  • Sgrìobhaidh mi mo chuid fhèin

  • eile

Bhòt 39 neach-cleachdaidh. Sheall 47 neach-cleachdaidh.

Source: www.habr.com

Cuir beachd ann