Staitisticí agus monatóireacht ar scripteanna PHP i bhfíor-am. Tagann ClickHouse agus Grafana i gcabhair ar Pinba

San Airteagal seo inseoidh mé duit conas pinba a úsáid le clickhouse agus grafana in ionad pinba_engine agus pinboard.

Ar thionscadal PHP, b'fhéidir gurb é pinba an t-aon bhealach iontaofa chun tuiscint a fháil ar cad atá ag tarlú le feidhmíocht. Fíor, de ghnáth ní chuirtear pinba i bhfeidhm ach amháin nuair a thugtar faoi deara fadhbanna cheana féin agus nach bhfuil sé soiléir "cá háit le tochailt."

Is minic nach mbíonn aon tuairim ag éinne cé mhéad uair in aghaidh an tsoicind/nóiméad a thugtar é seo nó an script sin agus tosaíonn siad ar “theagmháil” a bharrfheabhsú, ag tosú ó na háiteanna sin a bhfuil cuma níos loighciúla orthu.

Déanann cuid acu anailís ar logaí nginx, agus déanann cuid eile anailís ar cheisteanna mall bunachar sonraí.

Ar ndóigh, ní bheadh ​​an pinba iomarcach, ach tá roinnt cúiseanna ann nach bhfuil sé ag gach tionscadal.

Staitisticí agus monatóireacht ar scripteanna PHP i bhfíor-am. Tagann ClickHouse agus Grafana i gcabhair ar Pinba

Agus is é an chéad chúis a shuiteáil.

Chun “sceite” de chineál éigin a fháil níos mó nó níos lú ó chur i bhfeidhm Pinba, tá sé an-inmhianaithe méadracht a fheiceáil, ní hamháin le haghaidh na nóiméad deireanach, ach freisin thar thréimhse fada ama (ó laethanta go míonna).

Mar sin ní mór duit:

  • suiteáil síneadh le haghaidh php (agus b'fhéidir gur mhaith leat modúl le haghaidh nginx)
  • Íosluchtaigh síneadh do mysql
  • shuiteáil pinboard agus cumraigh cron

Mar gheall ar an méid beag faisnéise faoi Pinba, tá a lán daoine den tuairim nár oibrigh sé ach ar PHP5 agus gur rud den am atá caite a bhí ann le fada, ach mar a fheicfimid níos déanaí, ní hé seo an cás.

Is é an chéad chéim an ceann is simplí, níl le déanamh ach an t-ordú a rith:

apt install php-pinba

Tá an síneadh seo ar fáil sna stórtha suas go dtí agus lena n-áirítear php 7.3 agus ní gá duit aon rud a thiomsú.

Tar éis an t-ordú suiteála a fhorghníomhú, faigheann muid síneadh oibre láithreach a bhailíonn agus a sheolann méadracht do gach script (am reatha, cuimhne, etc.) san fhormáid protobuf via udp go 127.0.0.1:30002.

Go dtí seo níl aon duine tar éis na paicéid UDP seo a ghabháil nó a phróiseáil, ach ní chuireann sé seo isteach ar aon bhealach diúltach ar luas nó ar chobhsaíocht do scripteanna PHP.

Go dtí le déanaí, ba é an t-aon iarratas a d'fhéadfadh na paicéid UDP seo a ghabháil agus a phróiseáil pinba_inneall. Cur síos"simplí agus gonta" díspreagann an tsuiteáil fonn a bheith ag léamh agus ag dul i dtóir air arís. Sna liostaí ciliméadar ar fhad de spleáchais tá ainmneacha na bpacáistí agus ainmneacha na gclár agus naisc chuig leathanaigh aonair lena suiteáil, agus tá a naisc féin acu le spleáchais eile. Níl an t-am nó an fonn ag éinne déileáil leis an cacamas seo.

Próiseas suiteála pinba2 ní raibh go háirithe níos éasca.

B'fhéidir lá éigin go mbeifear in ann pinba10 a shuiteáil le ceann amháin nó dhá orduithe agus gan a lán ábhar a léamh chun tuiscint a fháil ar conas é a dhéanamh, ach faoi láthair ní hé seo an cás.

Má dhéanann tú pinba_engine a shuiteáil, ansin níl anseo ach leath an chatha. Tar éis an tsaoil, gan boird beidh ort tú féin a theorannú chuig sonraí ó díreach le cúpla nóiméad anuas, nó beidh ort na sonraí a chomhiomlánú, a stóráil agus a shamhlú leat féin. Is maith an rud é go bhfuil pinboard simplí go leor le húsáid Suiteáil.

Is cosúil, cén fáth a bhfuil fulaingt den sórt sin má tá na méadrachtaí go léir ó php seolta cheana féin chuig an gcalafort udp i bhformáid protobuf agus níl uait ach iarratas a scríobh a ghlacfaidh iad agus iad a chur i stóráil de chineál éigin? Réir dealraimh, shuigh na forbróirí sin a tháinig suas leis an smaoineamh seo láithreach chun a gcuid smaointe féin a scríobh, agus chríochnaigh cuid acu ar GitHub.

Seo a leanas forbhreathnú ar cheithre thionscadal foinse oscailte a shábhálann méadracht i stóráil, ónar féidir na sonraí seo a aisghabháil agus a léirshamhlú go héasca, mar shampla, ag baint úsáide as grafana.

olegfedoseev/pinba-freastalaí (Samhain 2017)

freastalaí udp ar siúl a shábhálann méadracht go OpenTSDB. B'fhéidir má tá tú ag baint úsáide as OpenTSDB cheana féin i do thionscadal, ansin beidh an réiteach seo oiriúnach duit, nó molaim é a rith.

olegfedoseev/pinba-influxdb (Meitheamh 2018)

freastalaí udp ar dul, as an gcéanna habrowser, a stórálann an mhéadracht in InfluxDB an uair seo. Tá go leor tionscadal ag baint úsáide as InfluxDB cheana féin le haghaidh monatóireachta, agus mar sin d'fhéadfadh an réiteach seo a bheith foirfe dóibh.

Son:

  • InfluxDB Ceadaíonn comhiomlán na méadrachta a fuarthas, agus scrios an bhunaidh tar éis am sonraithe.

CONS:

CliceáilHouse-Ninja/Proton (Eanáir 2019)

freastalaí udp ar dul, a shábhálann méadracht i ClickHouse. Seo réiteach mo chara. Tar éis dul i dtaithí air, shocraigh mé go raibh sé in am dul i ngleic le Pinbu agus Clickhouse.

Son:

  • Tá Clickhouse iontach do thascanna dá leithéid; ceadaíonn sé duit sonraí a chomhbhrú an oiread sin gur féidir leat na sonraí amh go léir a stóráil fiú gan comhbhailiúcháin
  • más gá, is féidir leat an méadracht mar thoradh air a chomhiomlánú go héasca
  • teimpléad réidh le haghaidh grafana
  • sábhálann sé eolas ar amadóirí

CONS:

  • locht marfach
  • níl aon chumraíocht ann inar féidir leat ainm an bhunachair shonraí agus na dtáblaí, seoladh agus port an fhreastalaí a chumrú.
  • agus sonraí amh á stóráil, úsáidtear tábla foclóra cúnta chun seoltaí leathanaigh agus fearainn a stóráil, rud a chuireann casta ar cheisteanna ina dhiaidh sin
  • rudaí beaga eile a leanann as an gcéad lúide

freastalaí pinba/pinba-freastalaí (Aibreán 2019)

freastalaí udp i php, a shábhálann méadracht i ClickHouse. Is é seo mo réiteach, atá mar thoradh ar aithne a chur ar pinba, ClickHouse agus protobuf. Agus an sraith iomlán seo á réiteach agam, scríobh mé “cruthúnas ar choincheap”, rud nár ídigh, gan choinne domsa, acmhainní suntasacha (30 MB RAM agus níos lú ná 1% de cheann de na hocht gcroíthe próiseálaithe), mar sin mé chinn é a roinnt leis an bpobal.

Tá na buntáistí mar an gcéanna leis an réiteach roimhe seo, d'úsáid mé na hainmneacha is gnách ón pinba_engine bunaidh freisin. Chuir mé cumraíocht leis freisin a ligeann duit roinnt cásanna freastalaí pinbase a sheoladh ag an am céanna chun méadracht a shábháil i dtáblaí éagsúla - tá sé seo úsáideach más mian leat sonraí a bhailiú ní hamháin ó php, ach freisin ó nginx.
Míbhuntáistí - "locht marfach" agus na rudaí beaga sin nach n-oireann duit go pearsanta, ach tá mo réiteach "chomh simplí le slipper" agus níl ann ach thart ar 100 líne de chód, mar sin is féidir le haon fhorbróir PHP na rudaí nach maith leis a athrú. i gceann cúpla bomaite.

Prionsabal oibríochta

Éisttear le calafort UDP 30002. Díchódaítear gach paicéad isteach de réir na scéime protobuf agus déantar iad a chomhiomlánú. Uair sa nóiméad, cuirtear paicéad isteach sa clickhouse isteach sa tábla pinba.requests. (tá na paraiméadair go léir cumraithe i cumraíochta)

Beagán faoi clickhouse

Tacaíonn Clickhouse le hinnill stórála sonraí éagsúla. Is é an ceann is coitianta a úsáidtear MergeTree.

Más rud é ag pointe éigin a shocraíonn tú sonraí comhiomlánaithe a stóráil le haghaidh gach ama, agus sonraí amh ach amháin don uair dheireanach, ansin is féidir leat dearcadh ábhartha a chruthú le grúpáil, agus an príomh-tábla pinba.requests a ghlanadh go tréimhsiúil, agus fanfaidh na sonraí go léir sa radharc réadaithe. Thairis sin, nuair a chruthaíonn tú an tábla pinba.requests, is féidir leat "inneall = Null" a shonrú, ansin ní shábhálfar na sonraí amh ar diosca ar chor ar bith, agus ag an am céanna beidh sé fós sa radharc ábhartha agus déanfar é a shábháil comhiomlán . Úsáidim an scéim seo le haghaidh méadracht nginx, mar gheall ar nginx tá 50 uair níos mó iarratas agam ná ar php.

Mar sin, tá tú tar éis teacht ar bhealach fada agus níor mhaith liom tú a fhágáil leath bealaigh, mar sin is é seo a leanas cur síos mionsonraithe ar shuiteáil agus cumraíocht mo réiteach agus gach rud a theastaíonn uait, chomh maith leis na gaistí a d'eascair níos mó ná long amháin. a tuairteála. Déantar cur síos ar an bpróiseas suiteála iomlán do Ubuntu 18.04 LTS agus Centos 7; d’fhéadfadh go mbeadh difríocht bheag idir an próiseas agus dáiltí agus leaganacha eile.

Suiteáil

Cuirim na horduithe riachtanacha go léir isteach dockerfile chun in-atáirgtheacht treoracha a éascú. Ní dhéanfar cur síos thíos ach ar na gaistí.

php-pinba

Tar éis é a shuiteáil, déan cinnte go bhfuil na roghanna go léir gan trácht ar an gcomhad /etc/php/7.2/fpm/conf.d/20-pinba.ini. Ar roinnt dáiltí (m.sh. centos) is féidir trácht a dhéanamh orthu.

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

cliceáiltheach

Le linn na suiteála, iarrfaidh clickhouse ort pasfhocal a shocrú don úsáideoir réamhshocraithe. De réir réamhshocraithe, tá an t-úsáideoir seo inrochtana ó gach IP, mar sin mura bhfuil balla dóiteáin agat ar do fhreastalaí, déan cinnte pasfhocal a shocrú dó. Is féidir é seo a dhéanamh freisin tar éis a shuiteáil sa chomhad /etc/clickhouse-server/users.xml.

Is fiú a thabhairt faoi deara freisin go n-úsáideann clickhouse roinnt calafoirt, lena n-áirítear 9000. Úsáidtear an calafort seo freisin le haghaidh php-fpm i roinnt dáiltí (mar shampla, centos). Má úsáideann tú an port seo cheana féin, is féidir leat é a athrú go ceann eile sa chomhad /etc/clickhouse-server/config.xml.

grafana le breiseán clickhouse

Tar éis duit Grafana a shuiteáil, bain úsáid as an admin logáil isteach agus pasfhocal admin. Nuair a logálann tú isteach den chéad uair, iarrfaidh Grafana ort pasfhocal nua a shocrú.

Ansin, téigh go dtí an "+" -> roghchlár allmhairiú agus léirigh an uimhir painéal le haghaidh allmhairiú 10011. D’ullmhaigh agus d’uaslódáil mé an painéal seo ionas nach mbeidh ort é a dhéanamh tú féin arís.

Tacaíonn Grafana le bheith ag obair le clickhouse trí bhreiseán tríú páirtí, ach níl foláirimh ag Grafana maidir le forlíontáin tríú páirtí (tá ticéad ann dó seo le roinnt blianta anuas).

freastalaí pinba

Tá sé roghnach protobuf agus libervent a shuiteáil, ach feabhsaíonn sé feidhmíocht an fhreastalaí pinba. Má shuiteáil tú pinba-server i bhfillteán seachas / opt, beidh ort é a cheartú freisin script córasach comhad.

modúl pinba do nginx

Chun an modúl a thiomsú, ní mór duit cóid foinse den leagan céanna de nginx atá suiteáilte cheana féin ar do fhreastalaí, chomh maith leis na roghanna tiomsaithe céanna, ar shlí eile beidh an tógáil rathúil, ach nuair a bheidh an modúl á nascadh, déanfar earráid a chaitheamh. "Níl an modúl comhoiriúnach le dénártha." Is féidir roghanna tiomsaithe a fheiceáil ag baint úsáide as an ordú nginx -V

Haca saoil

Ní oibríonn mo shuíomhanna go léir ach ar https. Éiríonn an réimse scéimre gan brí, mar sin úsáidim é chun gréasán/consól a scaradh.

I scripteanna atá inrochtana ón ngréasán úsáidim:

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

Agus i scripteanna consól (mar shampla, scripteanna cron):

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

I mo dheais i Grafana tá lasc gréasáin/consól chun staitisticí a fheiceáil ar leithligh.

Is féidir leat do chuid clibeanna a sheoladh chuig Pinba freisin, mar shampla:

pinba_tag_set('country', $countryCode);

Sin uile.

Freagair na pobalbhreitheanna faoi bhun an ailt le do thoil.

Mar is gnách, tugaim rabhadh duit nach dtugaim comhairle ná cúnamh trí theachtaireachtaí pearsanta ar Habr agus ar líonraí sóisialta.

Cruthaigh ticéad ar Github.

Chomh maith leis sin le do thoil tacaíocht le do thoil leagan Béarla An t-alt seo ar reddit.

Ní féidir ach le húsáideoirí cláraithe páirt a ghlacadh sa suirbhé. Sínigh isteach, le do thoil.

Cén OS atá á úsáid agat ar an bhfreastalaí?

  • ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • OpenSUSE

  • SWITZERLAND

  • Unix

  • Windows

  • eile

Vótáil 114 úsáideoir. Staon 11 úsáideoir.

Cén leagan de php atá in úsáid agat ar an bhfreastalaí?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • eile

Vótáil 105 úsáideoir. Staon 17 úsáideoir.

Ar bhain tú úsáid as pinba riamh?

  • yes

  • níl, ach ba mhaith liom

  • níl agus ní bheadh ​​fonn orm

  • níl agus níor chuala sí trácht uirthi

Vótáil 100 úsáideoir. Staon 14 úsáideoir.

Cén leagan de fhreastalaí Pinba ar mhaith leat triail a bhaint as?

  • pinba_engine (inneall mysql)

  • pinba2 (inneall mysql)

  • pinchlár (php + mysql)

  • olegfedoseev/pinba-server (téigh + OpenTSDB)

  • olegfedoseev/pinba-influxdb (téigh + influxdb)

  • pinba-server/pinba-server (téigh + clickhouse)

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

  • Scríobhfaidh mé mo cheann féin

  • eile

Vótáil 39 úsáideoir. Staon 47 úsáideoir.

Foinse: will.com

Add a comment