{"id":32681,"date":"2019-10-31T21:48:22","date_gmt":"2019-10-31T18:48:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba\/"},"modified":"2019-10-31T21:48:22","modified_gmt":"2019-10-31T18:48:22","slug":"statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba","title":{"rendered":"Statistik og overv\u00e5gning af PHP-scripts i realtid. ClickHouse og Grafana st\u00e5r klar til at hj\u00e6lpe med Pinba.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>I denne artikel vil jeg fort\u00e6lle, hvordan man bruger pinba sammen med clickhouse og grafana i stedet for pinba_engine og pinboard.<\/p>\n<p>P\u00e5 et PHP-projekt er pinba m\u00e5ske den eneste p\u00e5lidelige m\u00e5de at forst\u00e5, hvad der sker med ydeevnen. Dog implementeres pinba normalt kun, n\u00e5r der allerede er observeret problemer, og det er uklart, \"hvor man skal grave\".<\/p>\n<p>Ofte har ingen nogen id\u00e9 om, hvor mange gange per sekund\/minut et bestemt script kaldes, og man begynder at optimere \"i blinde\", startende med de steder, der virker mest logiske.<\/p>\n<p>Nogen analyserer logs fra nginx, mens andre ser p\u00e5 langsomme databaseforesp\u00f8rgsler.<\/p>\n<p>Selvf\u00f8lgelig ville pinba ikke v\u00e6re overfl\u00f8dig, men der er flere grunde til, at det ikke findes p\u00e5 hvert projekt.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/br\/zm\/qz\/brzmqzc8itwc2lt3gjp0q2p-kse.png\"><img decoding=\"async\" alt=\"Statistik og overv\u00e5gning af PHP-scripts i realtid. ClickHouse og Grafana st\u00e5r klar til at hj\u00e6lpe med Pinba.\" src=\"\/wp-content\/uploads\/2019\/04\/cdf2dc9af2a131d1f9aaef6bbde9b914.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDen f\u00f8rste grund er installationen.<\/p>\n<p>For at f\u00e5 en nogenlunde \"udbytte\" fra implementeringen af pinba er det meget \u00f8nskeligt at se metrics ikke kun for de seneste minutter, men over en l\u00e6ngere periode (fra dage til m\u00e5neder).<\/p>\n<p>Til dette skal du:<\/p>\n<ul>\n<li>installere en extension til php (og muligvis vil du have en modul til nginx)<\/li>\n<li>kompilere extension til mysql<\/li>\n<li>installere pinboard og konfigurere cron<\/li>\n<\/ul>\n<p>\nP\u00e5 grund af den begr\u00e6nsede information om pinba har mange f\u00e5et det indtryk, at det kun fungerede p\u00e5 php5 og er for l\u00e6nge siden blevet for\u00e6ldet, men som vi vil se senere \u2014 det er ikke sandt.<\/p>\n<p>Det f\u00f8rste trin er det enkleste, det kr\u00e6ver kun at udf\u00f8re kommandoen:<\/p>\n<pre><code class=\"bash\">apt install php-pinba<\/code><\/pre>\n<p>\nI repositories er denne extension tilg\u00e6ngelig op til php 7.3 inklusiv, og du skal ikke kompilere noget.<\/p>\n<p>Efter udf\u00f8relsen af installationskommandoen f\u00e5r vi straks en fungerende extension, der indsamler og sender metrics for hvert script (k\u00f8revarighed, hukommelse osv.) i formatet <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Protocol_Buffers\">protobuf<\/a><\/noindex> over udp til 127.0.0.1:30002.<\/p>\n<p>Disse udp-pakker bliver endnu ikke fanget eller behandlet af nogen, men det p\u00e5virker p\u00e5 ingen m\u00e5de hastigheden eller stabiliteten for dine php-scripts.<\/p>\n<p>Indtil for nylig var den eneste applikation, der kunne fange og behandle disse udp-pakker, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tony2001\/pinba_engine\">pinba_engine<\/a><\/noindex>. Beskrivelse &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tony2001\/pinba_engine\/wiki\/Installation\">simpel og kortfattet<\/a><\/noindex>&#187; installation afskyr enhver lyst til at l\u00e6se det igen og forst\u00e5 det. I de kilometerlange lister over afh\u00e6ngigheder findes b\u00e5de pakker og programnavne samt links til de enkelte sider med deres installation, og de har deres egne links til andre afh\u00e6ngigheder. Ingen har hverken tid eller lyst til at forst\u00e5 det her rod.<\/p>\n<p>Installationsprocessen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/badoo\/pinba2\">pinba2<\/a><\/noindex> blev ikke nemmere <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/badoo\/pinba2\/blob\/master\/docs\/index.md#installation\">is\u00e6r lettere<\/a><\/noindex>.<\/p>\n<p>M\u00e5ske engang kan pinba10 installeres med en eller to kommandoer uden at skulle l\u00e6se en masse materiale for at forst\u00e5, hvordan det g\u00f8res, men indtil videre er det ikke tilf\u00e6ldet.<\/p>\n<p>Hvis du alligevel har installeret pinba_engine, er det kun halvdelen af arbejdet. For uden <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intaro\/pinboard\">pinboard<\/a><\/noindex> bliver du n\u00f8dt til at begr\u00e6nse dig til dataene kun for de sidste par minutter, eller selv at aggregere, gemme og visualisere dataene. Heldigvis er pinboard ganske let at <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intaro\/pinboard\/wiki\/Installation\">installationen<\/a><\/noindex>.<\/p>\n<p>Det kan virke un\u00f8dvendigt at gennemg\u00e5 s\u00e5 meget, n\u00e5r alle m\u00e5linger fra php allerede sendes til udp-porten i protobuf-format, og alt hvad der kr\u00e6ves, er at skrive en applikation, der fanger dem og gemmer dem i et eller andet lager? Det ser ud til, at de udviklere, som fik denne tanke, straks gik i gang med at skrive deres egne l\u00f8sninger, hvoraf nogle er endt p\u00e5 GitHub.<\/p>\n<p>Dern\u00e6st f\u00f8lger en oversigt over fire open source-projekter, der gemmer m\u00e5linger i lagre, hvorfra disse data nemt kan hentes og visualiseres, for eksempel med grafana.<\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-server\">olegfedoseev\/pinba-server<\/a><\/noindex> (november 2017) <\/h4>\n<p>\nudp-server i Go, der gemmer m\u00e5linger i OpenTSDB. Hvis OpenTSDB allerede bruges i dit projekt, kan denne l\u00f8sning v\u00e6re passende, ellers anbefaler jeg at g\u00e5 forbi.<\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-influxdb\">olegfedoseev\/pinba-influxdb<\/a><\/noindex> (juni 2018)<\/h4>\n<p>\nudp-server i Go, fra den samme <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/Aryoh\/\">habrauser<\/a><\/noindex>, som denne gang gemmer m\u00e5linger i InfluxDB. Mange projekter bruger allerede InfluxDB til overv\u00e5gning, s\u00e5 denne l\u00f8sning kan v\u00e6re ideel for dem.<\/p>\n<p>Fordele:<\/p>\n<ul>\n<li>InfluxDB <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-influxdb#influxdb-preparation\">det muligt<\/a><\/noindex> aggregere de indsamlede m\u00e5linger, og originalen slette efter en angiven tid.<\/li>\n<\/ul>\n<p>\nUlemper:<\/p>\n<ul>\n<li>denne l\u00f8sning gemmer ikke information om tidtagere.<\/li>\n<li>InfluxDB vil gemme websidernes adresser som tags, og hvis du har mange unikke webadresser, vil det f\u00f8re til <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/449352\/#comment_20085878\">for\u00f8get forbrug<\/a><\/noindex> RAM. Fra et bestemt tidspunkt &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/2v\/68\/th\/2v68thch8ajln7abt-ghsmsbxgs.png\">begynde at spise hukommelse som en vanvittig<\/a><\/noindex>&#171;. (<noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@valyala\/insert-benchmarks-with-inch-influxdb-vs-victoriametrics-e31a41ae2893\">kilde<\/a><\/noindex>)<\/li>\n<\/ul>\n<p><\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ClickHouse-Ninja\/Proton\">ClickHouse-Ninja\/Proton<\/a><\/noindex> (januar 2019) <\/h4>\n<p>\nudp-server i Go, der gemmer m\u00e5linger i ClickHouse. Denne l\u00f8sning tilh\u00f8rer min ven. Det var efter at have set denne, at jeg besluttede, at det var tid til at tage fat p\u00e5 pinba og ClickHouse.<\/p>\n<p>Fordele:<\/p>\n<ul>\n<li>ClickHouse er perfekt til s\u00e5danne opgaver, det tillader at komprimere data s\u00e5 meget, at du kan gemme alle r\u00e5 data selv uden aggregation<\/li>\n<li>hvis n\u00f8dvendigt, s\u00e5 kan du nemt aggregere de indsamlede m\u00e5linger<\/li>\n<li>f\u00e6rdig skabelon til grafana<\/li>\n<li>gemmer information om tidtagere<\/li>\n<\/ul>\n<p>\nUlemper:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/lurkmore.to\/%D0%A4%D0%B0%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D1%82%D0%BE%D0%BA\">fatal mangel<\/a><\/noindex><\/li>\n<li>der er ingen konfiguration, hvor du kan indstille navnet p\u00e5 databasen og tabellerne, adressen og porten til serveren.<\/li>\n<li>ved gemmelse af r\u00e5 data anvendes en hj\u00e6lpeordbogstabel til at gemme webadresser og dom\u00e6ner, hvilket komplicerer foresp\u00f8rgslerne bagefter.<\/li>\n<li>andre sm\u00e5ting, der f\u00f8lger af den f\u00f8rste ulempe.<\/li>\n<\/ul>\n<p><\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\">pinba-server\/pinba-server<\/a><\/noindex> (april 2019) <\/h4>\n<p>\nen udp-server p\u00e5 php, som gemmer metrikker i ClickHouse. Dette er min l\u00f8sning, resultatet af at have stiftet bekendtskab med pinba, ClickHouse og protobuf. Mens jeg arbejdede med hele denne ops\u00e6tning skrev jeg et 'proof of concept', som i overraskelse for mig ikke kr\u00e6vede signifikante ressourcer (30 MB RAM og mindre end 1% af en af de otte CPU-kerner), s\u00e5 jeg besluttede at dele det med offentligheden.<\/p>\n<p>Fordele \u2014 de samme som i den tidligere l\u00f8sning, og jeg har ogs\u00e5 brugt velkendte betegnelser fra den oprindelige pinba_engine. Jeg har desuden tilf\u00f8jet en konfiguration, der g\u00f8r det muligt at starte flere instanser af pinba-serveren, s\u00e5 metrikkerne kan gemmes i forskellige tabeller \u2014 dette er nyttigt, hvis du \u00f8nsker at indsamle data ikke kun fra php, men ogs\u00e5 fra nginx.<br \/>\nUlemper \u2014 'fatal mangel' og de sm\u00e5ting, som ikke vil tilfredsstille dig personligt, men min l\u00f8sning er 's\u00e5 simpelt som en sandal' og best\u00e5r kun af cirka 100 linjer kode, s\u00e5 enhver php-udvikler kan \u00e6ndre det, han ikke er tilfreds med, p\u00e5 et par minutter.<\/p>\n<p><b>Arbejdets princip<\/b><\/p>\n<p>udp-port 30002 lyttes til. Alle indkommende pakker dekodes i henhold til protobuf-schemaet og aggregeres. En gang i minuttet inds\u00e6ttes en pakke i ClickHouse i tabellen pinba.requests. (alle parametre kan indstilles i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/blob\/master\/config.json\">konfigurationen<\/a><\/noindex>)<\/p>\n<p><b>Lidt om ClickHouse<\/b><\/p>\n<p>ClickHouse underst\u00f8tter forskellige datalagringsteknologier. Den mest anvendte er MergeTree. <\/p>\n<p>Hvis du p\u00e5 et tidspunkt beslutter at gemme aggregerede data over tid og r\u00e5 data kun over den seneste periode, kan du oprette en materialized view med gruppering, og den prim\u00e6re tabel pinba.requests kan reng\u00f8res periodisk, mens alle data forbliver i materialized view. Desuden, n\u00e5r du opretter tabellen pinba.requests, kan du angive 'engine = Null', s\u00e5 r\u00e5 data slet ikke gemmes p\u00e5 disk, men de vil stadig komme ind i materialized view og gemmes aggregeret. Jeg bruger denne ops\u00e6tning til metrics fra nginx, fordi jeg har 50 gange flere anmodninger p\u00e5 nginx end p\u00e5 php.<\/p>\n<p>S\u00e5, du har gjort en lang rejse, og jeg vil ikke forlade dig halvmidts, s\u00e5 her er en detaljeret beskrivelse af installationen og konfigurationen af min l\u00f8sning, samt alt hvad du f\u00e5r brug for, og de faldgruber, som ikke \u00e9n skib har ramt. Hele installationsprocessen er beskrevet for Ubuntu 18.04 LTS og Centos 7, og processen kan variere en smule p\u00e5 andre distributioner og versioner.<\/p>\n<h4>Installation<\/h4>\n<p>\nAlle n\u00f8dvendige kommandoer har jeg samlet i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/tree\/master\/docker\">Dockerfile<\/a><\/noindex> for at lette reproducerbarheden af instruktionerne. Nedenfor vil jeg kun beskrive faldgruberne.<\/p>\n<p><b>php-pinba<\/b><\/p>\n<p>Efter installationen skal du sikre dig, at alle indstillinger i filen \/etc\/php\/7.2\/fpm\/conf.d\/20-pinba.ini er udkommenteret. I nogle distributioner (for eksempel centos) kan de v\u00e6re kommenteret.<\/p>\n<pre><code class=\"plaintext\">extension=pinba.so\npinba.enabled=1\npinba.server=127.0.0.1:30002<\/code><\/pre>\n<p>\n<b>clickhouse<\/b><\/p>\n<p>Under installationen vil clickhouse bede dig om at angive en adgangskode til brugeren default. Som standard er denne bruger tilg\u00e6ngelig fra alle ip'er, s\u00e5 hvis du ikke har en firewall p\u00e5 serveren, s\u00e5 s\u00f8rg for at angive en adgangskode. Dette kan ogs\u00e5 g\u00f8res efter installationen i filen \/etc\/clickhouse-server\/users.xml.<\/p>\n<p>Det er ogs\u00e5 vigtigt at bem\u00e6rke, at clickhouse bruger flere porte, herunder 9000. Denne port bruges ogs\u00e5 af php-fpm i nogle distributioner (for eksempel centos). Hvis denne port allerede er i brug, kan du \u00e6ndre den til en anden i filen \/etc\/clickhouse-server\/config.xml.<\/p>\n<p><b>grafana med plugin til clickhouse<\/b><\/p>\n<p>Efter installeringen af grafana skal du bruge login admin og adgangskode admin. Ved f\u00f8rste login vil grafana bede dig om at angive en ny adgangskode.<\/p>\n<p>G\u00e5 derefter ind i menuen &#171;+&#187; -&gt; import og angiv nummeret p\u00e5 dashbordet til import. <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/dashboards\/10011\">10011<\/a><\/noindex>. Dette dashboard har jeg forberedt og uploadet, s\u00e5 du ikke skal g\u00f8re det selv igen.<\/p>\n<p>Grafana underst\u00f8tter integration med clickhouse via et tredjepartsplugin, men advarsler fungerer ikke for tredjepartsplugins i grafana (en ticket om dette har v\u00e6ret \u00e5ben i flere \u00e5r).<\/p>\n<p><b>pinba-server<\/b><\/p>\n<p>Installation af protobuf og libevent er ikke obligatorisk, men forbedrer ydeevnen for pinba-server. Hvis du installerer pinba-server i en anden mappe end \/opt, skal du ogs\u00e5 justere <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/blob\/master\/systemd\/pinba-server.service\">systemd script<\/a><\/noindex> filen.<\/p>\n<p><b>pinba-modul til nginx<\/b><\/p>\n<p>For compiling the module, you need the source files of the same nginx version that is already installed on your server, as well as the same compilation options; otherwise, the build will succeed, but connecting the module will result in an error stating that \"the module is not binary compatible.\" You can check the compilation options using the command nginx -V<\/p>\n<p><b>Livstips<\/b><\/p>\n<p>All my websites operate solely over https. The schema field becomes meaningless, so I use it to differentiate between web\/console.<\/p>\n<p>In the scripts that are accessible from the web, I use:<\/p>\n<pre><code class=\"php\">if (ini_get('pinba.enabled')) {\n    pinba_schema_set('web');\n}\n<\/code><\/pre>\n<p>\nAnd in console scripts (for example, cron scripts):<\/p>\n<pre><code class=\"php\">if (ini_get('pinba.enabled')) {\n    pinba_schema_set('console');\n}<\/code><\/pre>\n<p>\nIn my Grafana dashboard, there is a web\/console switch for viewing statistics separately.<\/p>\n<p>You can also pass your own tags to pinba, for example:<\/p>\n<pre><code class=\"php\">pinba_tag_set('country', $countryCode);<\/code><\/pre>\n<p>\n<b>Det var alt. <\/b><\/p>\n<p>Please respond to the surveys under the article.<\/p>\n<p>Traditionally, I warn that I do not consult or help through personal messages on Habr and social networks.<\/p>\n<p>Create a ticket on GitHub.<\/p>\n<p>Please also support with likes the <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/449818\/\">English version<\/a><\/noindex> denne artikel <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/PHP\/comments\/bigszu\/statistics_and_monitoring_of_php_scripts_in_real\/\">on Reddit.<\/a><\/noindex>.<\/p>\n<p class=\"for_users_only_msg\">Kun registrerede brugere kan deltage i unders\u00f8gelsen. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Log ind<\/a><\/noindex>, please.<\/p>\n<h2 class=\"default-block__polling-title\">What OS are you using on the server?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Ubuntu<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    CentOS<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Debian<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Gentoo<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Red Hat<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Fedora<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Den f\u00f8rste version af Archify-scriptet er tilg\u00e6ngelig, hvilket g\u00f8r det muligt at skifte til Arch Linux fra andre distributioner, mens brugere, indholdet af kataloget \/home og monteringspunkter bevares.<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    SuSE<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Unix<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Windows<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    andet<\/p>\n<\/li>\n<\/ul>\n<p>    114 users voted. 11 users abstained.<\/p>\n<h2 class=\"default-block__polling-title\">Which version of PHP are you using on the server?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    7.3<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    7.2<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    7.1<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    7.0<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    5<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    andet<\/p>\n<\/li>\n<\/ul>\n<p>    105 users voted. 17 users abstained.<\/p>\n<h2 class=\"default-block__polling-title\">Have you ever used pinba?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    ja<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    no, but I would like to<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    no, and I wouldn\u2019t want to<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    no, and I haven't heard of it<\/p>\n<\/li>\n<\/ul>\n<p>    100 users voted. 14 users abstained.<\/p>\n<h2 class=\"default-block__polling-title\">Which version of the pinba server would you like to try?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    pinba_engine (mysql engine)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    pinba2 (mysql engine)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    pinboard (php + mysql)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    olegfedoseev\/pinba-server (go + OpenTSDB)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    olegfedoseev\/pinba-influxdb (go + influxdb)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    pinba-server\/pinba-server (go + clickhouse)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    pinba-server\/pinba-server (php + clickhouse)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    I'll write my own<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    andet<\/p>\n<\/li>\n<\/ul>\n<p>    39 users voted. 47 users abstained.<br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444610\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c pinba \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 clickhouse \u0438 grafana \u0432\u043c\u0435\u0441\u0442\u043e pinba_engine \u0438 pinboard. \u041d\u0430 php-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 pinba \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e. \u041f\u0440\u0430\u0432\u0434\u0430 \u043e\u0431\u044b\u0447\u043d\u043e pinba \u0432\u043d\u0435\u0434\u0440\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0443\u0436\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u043d\u0435 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u00ab\u0433\u0434\u0435 \u043a\u043e\u043f\u0430\u0442\u044c\u00bb. \u0427\u0430\u0441\u0442\u043e \u043d\u0438\u043a\u0442\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443\/\u043c\u0438\u043d\u0443\u0442\u0443 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24468,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32681","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c pinba \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 clickhouse \u0438 grafana \u0432\u043c\u0435\u0441\u0442\u043e pinba_engine \u0438 pinboard. \u041d\u0430 php-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 pinba \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 PHP \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. ClickHouse \u0438 Grafana \u0438\u0434\u0443\u0442 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043a Pinba | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c pinba \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 clickhouse \u0438 grafana \u0432\u043c\u0435\u0441\u0442\u043e pinba_engine \u0438 pinboard. \u041d\u0430 php-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 pinba \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:48:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:48:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Statistics and monitoring of PHP scripts in real time. ClickHouse and Grafana come to the rescue of Pinba | ProHoster","description":"In this article, I will explain how to use pinba in conjunction with clickhouse and grafana instead of pinba_engine and pinboard. On a php project, pinba is probably the only reliable way to understand what is happening with.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 PHP \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. ClickHouse \u0438 Grafana \u0438\u0434\u0443\u0442 \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u043a Pinba | ProHoster","og:description":"\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c pinba \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 clickhouse \u0438 grafana \u0432\u043c\u0435\u0441\u0442\u043e pinba_engine \u0438 pinboard. \u041d\u0430 php-\u043f\u0440\u043e\u0435\u043a\u0442\u0435 pinba \u2014 \u043f\u043e\u0436\u0430\u043b\u0443\u0439 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441.","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:48:22+00:00","article:modified_time":"2019-10-31T18:48:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32681","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 12:02:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:54:26","updated":"2026-01-21 12:02:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/32681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=32681"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/32681\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/24468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=32681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=32681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=32681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}