Mga istatistika ug pag-monitor sa mga script sa PHP sa tinuud nga oras. ClickHouse ug Grafana moadto sa tabang sa Pinba

Niini nga artikulo isulti ko kanimo kung giunsa ang paggamit sa pinba nga adunay clickhouse ug grafana imbes nga pinba_engine ug pinboard.

Sa usa ka proyekto sa PHP, ang pinba tingali ang bugtong kasaligan nga paagi aron masabtan kung unsa ang nahitabo sa pasundayag. Tinuod, ang pinba kasagarang ipatuman lamang kung ang mga problema naobserbahan na ug kini dili klaro kung asa magkalot.

Kasagaran walay usa nga adunay ideya kung pila ka beses matag segundo/minuto kini o kana nga script gitawag ug nagsugod sila sa pag-optimize "pinaagi sa paghikap", sugod sa mga lugar nga ingon og mas lohikal.

Ang uban nag-analisar sa mga log sa nginx, samtang ang uban nag-analisar sa hinay nga mga pangutana sa database.

Siyempre, ang pinba dili mahimong sobra, apan adunay daghang mga hinungdan ngano nga dili matag proyekto adunay niini.

Mga istatistika ug pag-monitor sa mga script sa PHP sa tinuud nga oras. ClickHouse ug Grafana moadto sa tabang sa Pinba

Ug ang unang rason mao ang pag-instalar.

Aron mas daghan o dili kaayo makakuha og usa ka matang sa "tambutso" gikan sa pagpatuman sa Pinba, gitinguha kaayo nga makita ang metrics dili lamang sa katapusang mga minuto, kondili usab sa taas nga panahon (gikan sa mga adlaw ngadto sa mga bulan).

Aron mahimo kini, kinahanglan nimo:

  • i-install ang extension alang sa php (ug mahimo nimo gusto ang usa ka module alang sa nginx)
  • compile extension para sa mysql
  • i-install ang pinboard ug i-configure ang cron

Tungod sa gamay nga kasayuran bahin sa Pinba, daghang mga tawo ang adunay impresyon nga kini nagtrabaho lamang sa PHP5 ug dugay na nga nawala, apan ingon sa atong makita sa ulahi, dili kini ang kahimtang.

Ang una nga lakang mao ang pinakasimple, ang kinahanglan nimong buhaton mao ang pagpadagan sa mando:

apt install php-pinba

Ang kini nga extension magamit sa mga repository hangtod ug lakip ang php 7.3 ug dili nimo kinahanglan nga mag-compile bisan unsa.

Human sa pagpatuman sa sugo sa pag-instalar, nakadawat dayon kami og usa ka nagtrabaho nga extension nga nagkolekta ug nagpadala sa mga sukatan alang sa matag script (panahon sa pagdagan, memorya, ug uban pa) sa format protobuf pinaagi sa udp ngadto sa 127.0.0.1:30002.

Sa pagkakaron wala pa'y nakadakop o nagproseso niining mga UDP packet, apan kini dili sa bisan unsang paagi negatibong makaapekto sa katulin o kalig-on sa imong PHP scripts.

Hangtud bag-o lang, ang bugtong aplikasyon nga makadakop ug makaproseso niini nga mga pakete sa UDP mao pinba_engine. Deskripsyon "yano ug mubo"Ang pag-instalar nagpugong sa tinguha nga basahon ug susihon kini pag-usab. Ang taas nga kilometro nga lista sa mga dependency naglangkob sa mga ngalan sa mga pakete ug sa mga ngalan sa mga programa ug mga link sa tagsa-tagsa nga mga panid uban sa ilang pag-instalar, ug kadtong adunay ilang kaugalingong mga link sa ubang mga dependency. Walay usa nga adunay panahon o tinguha sa pag-atubang niini nga crap.

Proseso sa pag-instalar pinba2 wala labi na kadali.

Tingali sa umaabot nga adlaw posible nga i-install ang pinba10 nga adunay usa o duha nga mga mando ug dili kinahanglan nga magbasa usa ka hugpong sa materyal aron masabtan kung giunsa kini buhaton, apan sa pagkakaron dili kini ang kahimtang.

Kung imong gi-install ang pinba_engine, nan kini katunga ra sa gubat. Human sa tanan, walay pinboard kinahanglan nimo nga limitahan ang imong kaugalingon sa datos gikan sa katapusan nga pipila ka minuto, o kinahanglan nimo nga tipunon, tipigan, ug tan-awon ang datos sa imong kaugalingon. Maayo kay ang pinboard kay sayon ​​ra gamiton pagbutang.

Morag, nganong ang ingon nga pag-antos kung ang tanan nga mga sukatan gikan sa php gipadala na sa udp port sa protobuf format ug ang tanan nga imong gikinahanglan mao ang pagsulat sa usa ka aplikasyon nga makadakop kanila ug ibutang kini sa usa ka matang sa pagtipig? Dayag, kadtong mga developers nga naghimo niini nga ideya diha-diha dayon milingkod sa pagsulat sa ilang kaugalingong mga ideya, nga ang uban niini natapos sa GitHub.

Ang mosunod mao ang usa ka kinatibuk-ang paglantaw sa upat ka open source nga mga proyekto nga makadaginot sa metrics sa storage, diin kini nga data daling makuha ug makita, pananglitan, gamit ang grafana.

olegfedoseev/pinba-server (Nobyembre 2017)

udp server on go nga nagtipig sa mga sukatan sa OpenTSDB. Tingali kung naggamit ka na sa OpenTSDB sa imong proyekto, nan kini nga solusyon mohaum kanimo, kung dili, girekomenda ko nga ipasa kini.

olegfedoseev/pinba-influxdb (Hunyo 2018)

udp server on go, gikan sa mao gihapon habrowser, nga niining higayona nagtipig sa mga sukatan sa InfluxDB. Daghang mga proyekto ang naggamit na sa InfluxDB alang sa pag-monitor, mao nga kini nga solusyon mahimong perpekto alang kanila.

Mga Pro:

  • InfluxDB kini nagtugot aggregate ang nadawat nga metrics, ug kuhaa ang orihinal pagkahuman sa gitakdang oras.

Kahinumduman:

ClickHouse-Ninja/Proton (Enero 2019)

udp server on go, nga makaluwas sa metrics sa ClickHouse. Mao ni ang solusyon sa akong amigo. Kini human sa pag-ila niini nga ako nakahukom nga panahon na sa pagkuha sa Pinbu ug Clickhouse.

Mga Pro:

  • Ang Clickhouse mao ang sulundon alang sa ingon nga mga buluhaton; kini nagtugot kanimo sa pag-compress sa datos nga mahimo nimong tipigan ang tanan nga hilaw nga datos bisan kung wala’y mga panagsama.
  • kung gikinahanglan, dali nimo nga ma-aggregate ang resulta nga mga sukatan
  • andam nga gihimo nga template alang sa grafana
  • nagtipig impormasyon sa mga timer

Kahinumduman:

  • dakong sayop
  • walay config diin mahimo nimong i-configure ang ngalan sa database ug mga lamesa, ang adres ug pantalan sa server.
  • sa pagtipig sa hilaw nga datos, usa ka auxiliary nga talaan sa diksyonaryo ang gigamit sa pagtipig sa mga adres sa panid ug domain, nga makapakomplikado sa sunod nga mga pangutana
  • uban pang gagmay nga mga butang nga nagsunod gikan sa una nga minus

pinba-server/pinba-server (Abril 2019)

udp server sa php, nga nagtipig sa mga sukatan sa ClickHouse. Kini ang akong solusyon, nga resulta sa pagkaila sa pinba, ClickHouse ug protobuf. Samtang gihikay nako kining tibuok nga hugpong, nagsulat ako og "pamatuod sa konsepto", nga, sa wala damha alang kanako, wala mag-ut-ot sa mahinungdanong mga kapanguhaan (30 MB sa RAM ug ubos pa sa 1% sa usa sa walo ka mga processor cores), mao nga ako nakahukom nga ipaambit kini sa publiko.

Ang mga bentaha parehas sa miaging solusyon, gigamit usab nako ang naandan nga mga ngalan gikan sa orihinal nga pinba_engine. Gidugang usab nako ang usa ka config nga nagtugot kanimo sa paglansad sa daghang mga higayon sa pinbase server sa usa ka higayon aron makatipig mga sukatan sa lainlaing mga lamesa - kini mapuslanon kung gusto nimo mangolekta mga datos dili lamang gikan sa php, apan gikan usab sa nginx.
Mga disadvantages - "fatal flaw" ug kadtong gagmay nga mga butang nga dili mohaum sa imong personal, apan ang akong solusyon mao ang "ingon ka yano sa usa ka tsinelas" ug naglangkob lamang sa mga 100 ka linya sa code, mao nga bisan kinsa nga PHP developer makahimo sa pag-usab sa dili niya gusto. sa pipila ka minuto.

Kon sa unsang paagi kini nga mga buhat

Ang UDP port 30002 gipamati. Ang tanan nga umaabot nga mga pakete gi-decode sumala sa protobuf scheme ug giipon. Kausa sa usa ka minuto, usa ka pakete ang gisal-ut sa clickhouse sa lamesa sa pinba.requests. (ang tanan nga mga parameter gi-configure sa config)

Usa ka gamay bahin sa clickhouse

Gisuportahan sa Clickhouse ang lainlaing mga makina sa pagtipig sa datos. Ang labing sagad nga gigamit mao ang MergeTree.

Kung sa usa ka punto ikaw nakahukom sa pagtipig sa aggregated data alang sa tanang panahon, ug hilaw nga data lamang alang sa katapusan nga usa, nan ikaw makahimo sa usa ka materyal nga panglantaw uban sa paggrupo, ug matag karon ug unya sa paglimpyo sa nag-unang pinba.requests lamesa, samtang ang tanan nga data magpabilin sa materialized nga panglantaw. Dugang pa, sa paghimo sa pinba.requests nga lamesa, mahimo nimong ipiho ang "engine = Null", unya ang hilaw nga datos dili maluwas sa disk sa tanan, ug sa samang higayon kini mahuman gihapon sa materyal nga pagtan-aw ug maluwas nga aggregate . Gigamit nako kini nga laraw alang sa mga sukatan sa nginx, tungod kay sa nginx ako adunay 50 ka beses nga daghang mga hangyo kaysa sa php.

Mao nga, layo na ang imong naabot ug dili ko gusto nga biyaan ka sa tunga-tunga, mao nga ang mosunod usa ka detalyado nga paghulagway sa pag-install ug pag-configure sa akong solusyon ug tanan nga imong kinahanglan, ingon man ang mga lit-ag nga hinungdan sa labaw sa usa ka barko sa pagkahagsa. Ang tibuok proseso sa pag-instalar gihulagway alang sa Ubuntu 18.04 LTS ug Centos 7; ang proseso mahimong magkalahi gamay sa ubang mga distribusyon ug mga bersyon.

Pag-instalar

Gibutang nako ang tanan nga kinahanglan nga mga mando Dockerfile aron mapadali ang pag-reproducibility sa mga instruksyon. Ang mga lit-ag lamang ang ihulagway sa ubos.

php-pinba

Human sa pag-instalar, siguroha nga sa /etc/php/7.2/fpm/conf.d/20-pinba.ini file wala nimo gi-uncomment ang tanang mga opsyon. Sa pipila ka mga pag-apod-apod (eg centos) mahimo silang makomentaryo.

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

clickhouse

Atol sa pag-instalar, ang clickhouse mohangyo kanimo sa pagbutang og password alang sa default user. Sa kasagaran, kini nga tiggamit ma-access gikan sa tanan nga mga IP, busa kung wala kay firewall sa imong server, siguroha nga magbutang og password alang niini. Mahimo usab kini human sa pag-instalar sa /etc/clickhouse-server/users.xml file.

Angay usab nga hinumdoman nga ang clickhouse naggamit sa daghang mga pantalan, lakip ang 9000. Kini nga pantalan gigamit usab alang sa php-fpm sa pipila nga mga distribusyon (pananglitan, centos). Kung nagamit na nimo kini nga pantalan, mahimo nimo kini usbon sa lain sa /etc/clickhouse-server/config.xml file.

grafana nga adunay plugin nga clickhouse

Human ma-install ang Grafana, gamita ang login admin ug password admin. Kung mag log in ka sa una nga higayon, hangyoon ka ni Grafana nga magbutang usa ka bag-ong password.

Sunod, adto sa "+" -> import nga menu ug ipakita ang numero sa dashboard alang sa pag-import 10011. Giandam ug gi-upload nako kini nga dashboard aron dili na nimo kini buhaton pag-usab.

Gisuportahan sa Grafana ang pagtrabaho kauban ang clickhouse pinaagi sa usa ka third-party nga plugin, apan ang Grafana walay mga alerto alang sa mga third-party nga plugins (adunay tiket alang niini sulod sa daghang mga tuig).

pinba-server

Ang pag-instalar sa protobuf ug libevent opsyonal, apan nagpauswag sa performance sa pinba-server. Kung imong gi-install ang pinba-server sa usa ka folder gawas sa /opt, nan kinahanglan nimo usab nga itul-id systemd nga script file

pinba module para sa nginx

Aron ma-compile ang usa ka module, kinahanglan nimo ang mga source code sa parehas nga bersyon sa nginx nga na-install na sa imong server, ingon man ang parehas nga mga kapilian sa pag-compile, kung dili ang pagtukod magmalampuson, apan kung magkonektar sa module, usa ka sayup ang ilabay nga "Ang module dili binary compatible." Ang mga kapilian sa pag-compile mahimong makita gamit ang nginx -V nga sugo

Mga pag-hack sa kinabuhi

Ang tanan nakong mga site nagtrabaho lamang sa https. Ang field sa schema nahimong walay kahulogan, mao nga gigamit nako kini sa pagbulag sa web/console.

Sa mga script nga ma-access gikan sa web nga akong gigamit:

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

Ug sa mga console script (pananglitan, cron script):

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

Sa akong dashboard sa Grafana adunay switch sa web/console alang sa pagtan-aw sa estadistika nga gilain.

Mahimo usab nimo ipadala ang imong mga tag sa Pinba, pananglitan:

pinba_tag_set('country', $countryCode);

Mao ra.

Palihug tubaga ang mga botohan sa ubos sa artikulo.

Sama sa naandan, gipasidan-an ko ikaw nga dili ako magtambag o motabang pinaagi sa personal nga mga mensahe sa Habr ug mga social network.

Paghimo og tiket sa Github.

Palihog usab ug suporta sa mga likes English nga bersyon niini nga artikulo sa reddit.

Ang mga rehistradong tiggamit lamang ang makaapil sa survey. Sign in, walay sapayan.

Unsa nga OS imong gigamit sa server?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • pula nga kalo

  • Fedora

  • OpenSUSE

  • TIIG

  • Unix

  • Windows

  • uban pa

114 ka tiggamit ang nagboto. 11 ka tiggamit ang nag-abstain.

Unsa nga bersyon sa php ang imong gigamit sa server?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • uban pa

105 ka tiggamit ang nagboto. 17 ka tiggamit ang nag-abstain.

Nakagamit ka na ba ug pinba?

  • oo

  • dili, pero ganahan ko

  • dili ug dili ko gusto

  • wala ug wala ako nakadungog bahin kaniya

100 ka tiggamit ang nagboto. 14 ka tiggamit ang nag-abstain.

Unsang bersyon sa Pinba server ang gusto nimong sulayan?

  • pinba_engine (mysql engine)

  • pinba2 (mysql nga makina)

  • pinboard (php + mysql)

  • olegfedoseev/pinba-server (go + OpenTSDB)

  • olegfedoseev/pinba-influxdb (go + influxdb)

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

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

  • Ako mismo ang magsulat sa akoa

  • uban pa

39 ka tiggamit ang nagboto. 47 ka tiggamit ang nag-abstain.

Source: www.habr.com

Idugang sa usa ka comment