Tölfræði og eftirlit með PHP forskriftum í rauntíma. ClickHouse og Grafana koma Pinba til aðstoðar

Í þessari grein mun ég segja þér hvernig á að nota pinba með clickhouse og grafana í staðinn fyrir pinba_engine og pinboard.

Í PHP verkefni er pinba kannski eina áreiðanlega leiðin til að skilja hvað er að gerast með frammistöðu. Að vísu er pinba venjulega aðeins útfært þegar vandamál eru þegar vart og ekki er ljóst „hvar á að grafa“.

Oft hefur enginn hugmynd um hversu oft á sekúndu/mínútu þetta eða hitt handritið er kallað og það byrjar að fínstilla „með snertingu“, frá þeim stöðum sem virðast rökréttari.

Sumir greina nginx logs, á meðan aðrir greina hægar gagnagrunnsfyrirspurnir.

Auðvitað væri pinba ekki óþarfi, en það eru nokkrar ástæður fyrir því að ekki hvert verkefni hefur það.

Tölfræði og eftirlit með PHP forskriftum í rauntíma. ClickHouse og Grafana koma Pinba til aðstoðar

Og fyrsta ástæðan er uppsetning.

Til þess að fá nokkurs konar „útblástur“ frá innleiðingu Pinba er mjög æskilegt að sjá mælikvarða ekki aðeins fyrir síðustu mínútur, heldur einnig yfir langan tíma (frá dögum til mánaða).

Fyrir þetta þarftu:

  • setja upp viðbót fyrir php (og þú gætir viljað einingu fyrir nginx)
  • setja saman viðbót fyrir mysql
  • settu upp pinnatöflu og stilltu cron

Vegna lítils magns upplýsinga um Pinba hafa margir á tilfinningunni að það hafi aðeins virkað á PHP5 og hefur lengi heyrt sögunni til, en eins og við munum sjá síðar er það ekki raunin.

Fyrsta skrefið er einfaldast, allt sem þú þarft að gera er að keyra skipunina:

apt install php-pinba

Þessi viðbót er fáanleg í geymslunum upp að og með php 7.3 og þú þarft ekki að setja neitt saman.

Eftir að hafa keyrt uppsetningarskipunina fáum við strax virka viðbót sem safnar og sendir mælikvarða fyrir hvert handrit (keyrslutími, minni o.s.frv.) á sniðinu frumefni í gegnum udp til 127.0.0.1:30002.

Enn sem komið er hefur enginn náð í eða unnið úr þessum UDP pakka, en þetta hefur ekki á neinn hátt neikvæð áhrif á hraða eða stöðugleika PHP forskrifta þinna.

Þar til nýlega var eina forritið sem gat náð og unnið úr þessum UDP pakka pinba_vél. Lýsing "einfalt og hnitmiðað“ Uppsetning dregur úr lönguninni til að lesa og kafa ofan í hana aftur. Kílómetra langir listar yfir ósjálfstæði innihalda bæði nöfn pakka og nöfn forrita og tengla á einstakar síður með uppsetningu þeirra, og þær hafa sína eigin tengla á önnur ósjálfstæði. Enginn hefur tíma eða löngun til að takast á við þessa vitleysu.

Uppsetningarferli pinba2 gerði það ekki sérstaklega auðveldara.

Kannski verður einhvern tíma hægt að setja upp pinba10 með einni eða tveimur skipunum og þurfa ekki að lesa fullt af efni til að skilja hvernig á að gera það, en í bili er þetta ekki raunin.

Ef þú setur upp pinba_engine, þá er þetta aðeins hálf baráttan. Eftir allt saman, án pinnatöflu þú verður að takmarka þig við gögn frá síðustu mínútum, eða þú verður að safna saman, geyma og sjá fyrir gögnunum sjálfur. Það er gott að pinboard er frekar einfalt í notkun uppsetning.

Það virðist, hvers vegna slík þjáning ef allar mælingar frá php eru nú þegar sendar til udp portsins á protobuf sniði og allt sem þú þarft er að skrifa forrit sem mun ná þeim og setja þá í einhvers konar geymslu? Svo virðist sem þeir verktaki sem komu með þessa hugmynd settust strax niður til að skrifa sínar eigin hugmyndir, sumar hverjar enduðu á GitHub.

Eftirfarandi er yfirlit yfir fjögur opinn uppspretta verkefni sem vista mælikvarða í geymslu, þaðan sem þessi gögn er auðvelt að sækja og sjá fyrir sér, til dæmis með grafana.

olegfedoseev/pinba-þjónn (nóvember 2017)

udp þjónn á ferðinni sem vistar mæligildi í OpenTSDB. Kannski ef þú ert nú þegar að nota OpenTSDB í verkefninu þínu, þá mun þessi lausn henta þér, annars mæli ég með að fara framhjá henni.

olegfedoseev/pinba-influxdb (júní 2018)

udp server á ferðinni, frá sama habrowser, sem að þessu sinni geymir mælikvarðana í InfluxDB. Mörg verkefni eru nú þegar að nota InfluxDB til eftirlits, svo þessi lausn gæti verið fullkomin fyrir þau.

Kostir:

  • InnstreymiDB gerir safna saman mótteknum mælingum og eyða frumritinu eftir tiltekinn tíma.

Gallar:

ClickHouse-Ninja/Proton (janúar 2019)

udp þjónn á ferðinni, sem vistar mælikvarða í ClickHouse. Þetta er lausn vinar míns. Það var eftir að hafa kynnt mér það sem ég ákvað að það væri kominn tími til að taka á móti Pinbu og Clickhouse.

Kostir:

  • Clickhouse er tilvalið fyrir slík verkefni; það gerir þér kleift að þjappa gögnum svo mikið að þú getur geymt öll hrá gögn jafnvel án þess að safnast saman
  • ef þörf krefur geturðu auðveldlega safnað saman mæligildunum sem myndast
  • tilbúið sniðmát fyrir grafana
  • vistar upplýsingar um tímamæla

Gallar:

  • banvænn galli
  • það er engin config þar sem þú getur stillt nafn gagnagrunnsins og töflur, heimilisfang og höfn þjónsins.
  • þegar hrá gögn eru geymd er hjálparorðabókartafla notuð til að geyma síðu- og lénsföng, sem flækir síðari fyrirspurnir
  • önnur smáatriði sem fylgja af fyrsta mínus

pinba-þjónn/pinba-þjónn (apríl 2019)

udp þjónn í php, sem vistar mæligildi í ClickHouse. Þetta er lausnin mín sem er afleiðing þess að kynnast pinba, ClickHouse og protobuf. Á meðan ég var að redda þessu öllu, skrifaði ég „proof of concept“ sem, óvænt fyrir mig, eyddi ekki verulegu fjármagni (30 MB af vinnsluminni og minna en 1% af einum af átta örgjörvakjarna), svo ég ákvað að deila því með almenningi.

Kostirnir eru þeir sömu og fyrri lausnin, ég notaði líka venjuleg nöfn frá upprunalegu pinba_engine. Ég bætti líka við stillingu sem gerir þér kleift að ræsa nokkur pinbase netþjónstilvik í einu til að vista mælikvarða í mismunandi töflur - þetta er gagnlegt ef þú vilt safna gögnum ekki aðeins frá php, heldur einnig frá nginx.
Ókostir - „banvæn galli“ og þessir litlu hlutir sem henta þér ekki persónulega, en lausnin mín er „eins einföld og inniskór“ og samanstendur af aðeins um 100 línum af kóða, svo hvaða PHP forritari getur breytt því sem honum líkar ekki við eftir nokkrar mínútur.

Meginreglan um rekstur

Hlustað er á UDP-tengi 30002. Allir pakkar sem berast eru afkóðaðir í samræmi við protobuf-kerfið og safnað saman. Einu sinni á mínútu er pakki settur inn í smelluhúsið í pinba.requests töfluna. (allar breytur eru stilltar í stillingar)

Smá um clickhouse

Clickhouse styður mismunandi gagnageymsluvélar. Sá sem oftast er notaður er MergeTree.

Ef þú ákveður á einhverjum tímapunkti að geyma uppsöfnuð gögn fyrir alla tíma, og hrá gögn aðeins fyrir þann síðasta, þá geturðu búið til efnislega sýn með flokkun og hreinsað reglulega pinba.requests töfluna, á meðan öll gögn verða áfram í veruleika sýn. Þar að auki, þegar þú býrð til pinba.requests töfluna, geturðu tilgreint „engine = Null“, þá verða hrá gögnin alls ekki vistuð á disknum og á sama tíma munu þau enn lenda í efnisyfirlitinu og vistast samanlagt . Ég nota þetta kerfi fyrir nginx mælingar, vegna þess að á nginx hef ég 50 sinnum fleiri beiðnir en á php.

Þannig að þú ert kominn langt og ég myndi ekki vilja yfirgefa þig á miðri leið, svo það sem fylgir er nákvæm lýsing á uppsetningu og stillingu lausnarinnar minnar og öllu sem þú þarft, svo og gildrurnar sem hafa valdið fleiri en einu skipi að hrynja. Allt uppsetningarferlið er lýst fyrir Ubuntu 18.04 LTS og Centos 7; ferlið getur verið örlítið frábrugðið öðrum dreifingum og útgáfum.

Uppsetning

Ég setti allar nauðsynlegar skipanir inn Dockerfil til að auðvelda endurgerð leiðbeininga. Hér á eftir verður aðeins lýst gildrunum.

php-pinba

Eftir uppsetningu skaltu ganga úr skugga um að í /etc/php/7.2/fpm/conf.d/20-pinba.ini skránni hafirðu afskrifað alla valkostina. Á sumum dreifingum (td centos) gætu þær verið athugasemdir.

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

smellahús

Við uppsetningu mun clickhouse biðja þig um að setja lykilorð fyrir sjálfgefna notandann. Sjálfgefið er að þessi notandi er aðgengilegur frá öllum IP-tölum, svo ef þú ert ekki með eldvegg á þjóninum þínum, vertu viss um að setja lykilorð fyrir hann. Þetta er líka hægt að gera eftir uppsetningu í /etc/clickhouse-server/users.xml skránni.

Það er líka athyglisvert að clickhouse notar nokkrar port, þar á meðal 9000. Þessi port er einnig notuð fyrir php-fpm í sumum dreifingum (til dæmis centos). Ef þú notar nú þegar þessa höfn geturðu breytt henni í aðra í /etc/clickhouse-server/config.xml skránni.

grafana með clickhouse viðbót

Eftir að Grafana hefur verið sett upp skaltu nota innskráningarstjórann og lykilorðastjórann. Þegar þú skráir þig inn í fyrsta skipti mun Grafana biðja þig um að setja nýtt lykilorð.

Næst skaltu fara í „+“ -> innflutningsvalmyndina og tilgreina númer mælaborðsins fyrir innflutning 10011. Ég undirbjó og hlóð þessu mælaborði upp svo að þú þurfir ekki að gera það sjálfur aftur.

Grafana styður að vinna með clickhouse í gegnum viðbót frá þriðja aðila, en Grafana er ekki með viðvaranir fyrir viðbætur frá þriðja aðila (það hefur verið til miði fyrir þetta í nokkur ár).

pinba-þjónn

Uppsetning protobuf og libevent er valfrjáls, en bætir afköst pinba-þjónsins. Ef þú setur upp pinba-server í annarri möppu en /opt, þá þarftu líka að leiðrétta systemd handrit skrá.

pinba mát fyrir nginx

Til að setja saman einingu þarftu frumkóða af sömu útgáfu af nginx sem er þegar uppsettur á netþjóninum þínum, sem og sömu safnvalkosti, annars gengur smíðin vel, en þegar einingin er tengd kemur upp villa sem "einingin er ekki tvíundarsamhæfð." Hægt er að skoða safnvalkosti með því að nota nginx -V skipunina

Lífsárásir

Allar síðurnar mínar virka aðeins á https. Skemareiturinn verður tilgangslaus, svo ég nota hann til að aðskilja vef/leikjatölvu.

Í skriftum sem eru aðgengilegar af vefnum nota ég:

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

Og í stjórnborðsskriftum (til dæmis cron skriftum):

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

Í mælaborðinu mínu í Grafana er vef-/leikjarofi til að skoða tölfræði sérstaklega.

Þú getur líka sent merkin þín til Pinba, til dæmis:

pinba_tag_set('country', $countryCode);

Það er allt og sumt.

Vinsamlegast svaraðu könnunum fyrir neðan greinina.

Eins og venjulega, vara ég þig við því að ég ráðleggi ekki eða aðstoði í gegnum persónuleg skilaboð á Habr og samfélagsmiðlum.

Búðu til miða á Github.

Vinsamlega styðjið líka með like ensk útgáfa af þessari grein á reddit.

Aðeins skráðir notendur geta tekið þátt í könnuninni. Skráðu þig inn, takk.

Hvaða stýrikerfi ertu að nota á servernum?

  • ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • OpenSUSE

  • SUSE

  • Unix

  • Windows

  • Annað

114 notendur kusu. 11 notendur sátu hjá.

Hvaða útgáfu af php ertu að nota á servernum?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • Annað

105 notendur kusu. 17 notendur sátu hjá.

Hefur þú einhvern tíma notað pinba?

  • nei, en ég myndi vilja

  • nei og ég myndi ekki vilja það

  • nei og hef ekki heyrt um hana

100 notendur kusu. 14 notendur sátu hjá.

Hvaða útgáfu af Pinba netþjóni myndir þú vilja prófa?

  • pinba_engine (mysql vél)

  • pinba2 (mysql vél)

  • pinnaborð (php + mysql)

  • olegfedoseev/pinba-þjónn (fara + OpenTSDB)

  • olegfedoseev/pinba-influxdb (fara + influxdb)

  • pinba-þjónn/pinba-þjónn (fara + smellahús)

  • pinba-þjónn/pinba-þjónn (php + clickhouse)

  • Ég skrifa mitt sjálfur

  • Annað

39 notendur kusu. 47 notendur sátu hjá.

Heimild: www.habr.com

Bæta við athugasemd