{"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\/pt\/blog\/administrirovanie\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba","title":{"rendered":"Estat\u00edstica e monitoramento de scripts PHP em tempo real. ClickHouse e Grafana v\u00eam ajudar ao Pinba.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Neste artigo, vou explicar como usar o pinba em conjunto com o clickhouse e grafana, em vez do pinba_engine e do pinboard.<\/p>\n<p>No projeto em php, o pinba \u00e9 provavelmente a \u00fanica maneira confi\u00e1vel de entender o que est\u00e1 acontecendo com o desempenho. Na verdade, o pinba geralmente \u00e9 implementado apenas quando j\u00e1 existem problemas e n\u00e3o se sabe \"onde mexer\".<\/p>\n<p>Muitas vezes, ningu\u00e9m tem ideia de quantas vezes por segundo\/minuto um determinado script \u00e9 chamado e come\u00e7a a otimizar \"no escuro\", come\u00e7ando pelos lugares que parecem mais l\u00f3gicos.<\/p>\n<p>Algumas pessoas analisam os logs do nginx, enquanto outras verificam as consultas lentas no banco de dados.<\/p>\n<p>Claro que o pinba n\u00e3o seria desnecess\u00e1rio, mas h\u00e1 algumas raz\u00f5es pelas quais ele n\u00e3o est\u00e1 presente em todos os projetos.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/br\/zm\/qz\/brzmqzc8itwc2lt3gjp0q2p-kse.png\"><img decoding=\"async\" alt=\"Estat\u00edstica e monitoramento de scripts PHP em tempo real. ClickHouse e Grafana v\u00eam ajudar ao 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 \/>\nE a primeira raz\u00e3o \u00e9 a instala\u00e7\u00e3o.<\/p>\n<p>Para obter algum \"retorno\" ao implementar o pinba, \u00e9 desej\u00e1vel ver m\u00e9tricas n\u00e3o apenas nos \u00faltimos minutos, mas em um longo espa\u00e7o de tempo (de dias a meses).<\/p>\n<p>Para isso, \u00e9 necess\u00e1rio:<\/p>\n<ul>\n<li>instalar a extens\u00e3o para php (e talvez voc\u00ea queira o m\u00f3dulo para nginx)<\/li>\n<li>compilar a extens\u00e3o para mysql<\/li>\n<li>instalar o pinboard e configurar o cron<\/li>\n<\/ul>\n<p>\nDevido \u00e0 quantidade limitada de informa\u00e7\u00f5es sobre o pinba, muitos t\u00eam a impress\u00e3o de que ele funcionou apenas no php5 e ficou para tr\u00e1s, mas como veremos a seguir \u2014 isso n\u00e3o \u00e9 verdade.<\/p>\n<p>O primeiro passo \u2014 o mais simples, \u00e9 s\u00f3 executar o seguinte comando:<\/p>\n<pre><code class=\"bash\">apt install php-pinba<\/code><\/pre>\n<p>\nNos reposit\u00f3rios, esta extens\u00e3o est\u00e1 dispon\u00edvel at\u00e9 a vers\u00e3o php 7.3, e voc\u00ea n\u00e3o precisa compilar nada.<\/p>\n<p>Ap\u00f3s executar o comando de instala\u00e7\u00e3o, j\u00e1 obtemos uma extens\u00e3o funcional que coleta e envia m\u00e9tricas de cada script (dura\u00e7\u00e3o da execu\u00e7\u00e3o, mem\u00f3ria, etc.) no formato <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Protocol_Buffers\">protobuf<\/a><\/noindex> via udp em 127.0.0.1:30002.<\/p>\n<p>Esses pacotes udp ainda n\u00e3o est\u00e3o sendo capturados ou processados por ningu\u00e9m, mas isso n\u00e3o afeta negativamente a velocidade ou a estabilidade do funcionamento dos seus scripts em php.<\/p>\n<p>At\u00e9 recentemente, o \u00fanico aplicativo que poderia capturar e processar esses pacotes udp era o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tony2001\/pinba_engine\">pinba_engine<\/a><\/noindex>. Descri\u00e7\u00e3o &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tony2001\/pinba_engine\/wiki\/Installation\">O processo de instala\u00e7\u00e3o de<\/a><\/noindex>&#187; a instala\u00e7\u00e3o desanima qualquer um de querer ler ou entender isso novamente. Nas extensas listas de depend\u00eancias est\u00e3o tanto os nomes dos pacotes quanto os dos programas e links para p\u00e1ginas separadas com suas instala\u00e7\u00f5es, e essas p\u00e1ginas t\u00eam seus pr\u00f3prios links para outras depend\u00eancias. Ningu\u00e9m tem tempo ou vontade de lidar com esse tipo de confus\u00e3o.<\/p>\n<p>n\u00e3o foi f\u00e1cil. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/badoo\/pinba2\">V<\/a><\/noindex> b <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/badoo\/pinba2\/blob\/master\/docs\/index.md#installation\">especialmente mais f\u00e1cil<\/a><\/noindex>.<\/p>\n<p>Talvez um dia o pinba10 possa ser instalado com um ou dois comandos, sem precisar ler uma tonelada de material para entender como faz\u00ea-lo, mas at\u00e9 agora n\u00e3o \u00e9 assim.<\/p>\n<p>Se voc\u00ea realmente instalou o pinba_engine, isso \u00e9 apenas metade do trabalho. Afinal, sem <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intaro\/pinboard\">pinboard<\/a><\/noindex> , voc\u00ea ter\u00e1 que se limitar a dados apenas dos \u00faltimos minutos ou agregar, armazenar e visualizar os dados manualmente. Felizmente, o pinboard \u00e9 bastante simples de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intaro\/pinboard\/wiki\/Installation\">instala\u00e7\u00e3o<\/a><\/noindex>.<\/p>\n<p>\u00c0 primeira vista, pode parecer desnecess\u00e1rio passar por esses desafios, j\u00e1 que todas as m\u00e9tricas do PHP j\u00e1 v\u00e3o para uma porta UDP no formato protobuf, e tudo o que \u00e9 preciso \u00e9 escrever um aplicativo que as capture e as armazene em algum reposit\u00f3rio? Provavelmente, os desenvolvedores que tiveram essa ideia logo come\u00e7aram a escrever suas pr\u00f3prias vers\u00f5es, algumas das quais acabaram no GitHub.<\/p>\n<p>A seguir, uma vis\u00e3o geral de quatro projetos de c\u00f3digo aberto que armazenam m\u00e9tricas em reposit\u00f3rios, de onde esses dados podem ser facilmente recuperados e visualizados, por exemplo, com o Grafana.<\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-server\">olegfedoseev\/pinba-server<\/a><\/noindex> (novembro de 2017) <\/h4>\n<p>\nservidor UDP em Go, que armazena m\u00e9tricas no OpenTSDB. Se o OpenTSDB j\u00e1 est\u00e1 sendo usado no seu projeto, essa solu\u00e7\u00e3o pode ser adequada, caso contr\u00e1rio, recomendo passar longe.<\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-influxdb\">olegfedoseev\/pinba-influxdb<\/a><\/noindex> (junho de 2018)<\/h4>\n<p>\nservidor UDP em Go, do mesmo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/Aryoh\/\">usu\u00e1rio do Habr<\/a><\/noindex>, que desta vez armazena m\u00e9tricas no InfluxDB. Em muitos projetos, o InfluxDB j\u00e1 est\u00e1 sendo utilizado para monitoramento, ent\u00e3o essa solu\u00e7\u00e3o pode funcionar muito bem para eles.<\/p>\n<p>Acesso direto aos sistemas de cabos transpac\u00edficos. Ping m\u00ednimo para a China, Jap\u00e3o, Austr\u00e1lia e costa oeste dos EUA.<\/p>\n<ul>\n<li>InfluxDB <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-influxdb#influxdb-preparation\">permite<\/a><\/noindex> agregar as m\u00e9tricas obtidas e deletar o original ap\u00f3s um determinado per\u00edodo.<\/li>\n<\/ul>\n<p>\nPontos negativos:<\/p>\n<ul>\n<li>essa solu\u00e7\u00e3o n\u00e3o armazena informa\u00e7\u00f5es sobre temporizadores.<\/li>\n<li>O InfluxDB armazenar\u00e1 os endere\u00e7os das p\u00e1ginas do site como tags, e se voc\u00ea tiver muitos endere\u00e7os \u00fanicos, isso levar\u00e1 a <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/449352\/#comment_20085878\">um aumento do consumo<\/a><\/noindex> mem\u00f3ria RAM. A partir de certo momento, ele &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/2v\/68\/th\/2v68thch8ajln7abt-ghsmsbxgs.png\">ClickHouse-Ninja\/Proton<\/a><\/noindex>&#171;. (<noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@valyala\/insert-benchmarks-with-inch-influxdb-vs-victoriametrics-e31a41ae2893\">fonte<\/a><\/noindex>)<\/li>\n<\/ul>\n<p><\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ClickHouse-Ninja\/Proton\">(janeiro de 2019)<\/a><\/noindex> servidor UDP em Go, que armazena m\u00e9tricas no ClickHouse. Essa solu\u00e7\u00e3o \u00e9 do meu amigo. Foi depois de me familiarizar com ela que decidi que era hora de trabalhar com pinba e ClickHouse. <\/h4>\n<p>\nClickHouse \u00e9 perfeito para essas tarefas, ele permite compactar os dados tanto que voc\u00ea pode armazenar todos os dados brutos mesmo sem agrega\u00e7\u00f5es.<\/p>\n<p>Acesso direto aos sistemas de cabos transpac\u00edficos. Ping m\u00ednimo para a China, Jap\u00e3o, Austr\u00e1lia e costa oeste dos EUA.<\/p>\n<ul>\n<li>se necess\u00e1rio, voc\u00ea pode agregar facilmente as m\u00e9tricas obtidas.<\/li>\n<li>modelo pronto para o Grafana<\/li>\n<li>armazena informa\u00e7\u00f5es sobre temporizadores<\/li>\n<li>um defeito fatal<\/li>\n<\/ul>\n<p>\nPontos negativos:<\/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<\/a><\/noindex><\/li>\n<li>n\u00e3o h\u00e1 uma configura\u00e7\u00e3o que permita o ajuste do nome do banco de dados e das tabelas, do endere\u00e7o e da porta do servidor.<\/li>\n<li>ao salvar dados brutos, uma tabela de dicion\u00e1rio auxiliar \u00e9 utilizada para armazenar endere\u00e7os de p\u00e1ginas e dom\u00ednios, o que posteriormente complica as consultas.<\/li>\n<li>outras pequenas nuances que derivam do primeiro ponto negativo.<\/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> (abril de 2019) <\/h4>\n<p>\nservidor UDP em PHP que armazena m\u00e9tricas no ClickHouse. Esta \u00e9 a minha solu\u00e7\u00e3o, resultado do meu contato com pinba, ClickHouse e protobuf. Enquanto eu me familiarizei com toda essa tecnologia, escrevi um 'proof of concept', que inesperadamente n\u00e3o consumiu recursos significativos (30 MB de mem\u00f3ria RAM e menos de 1% de um dos oito n\u00facleos do processador), ent\u00e3o decidi compartilh\u00e1-lo com o p\u00fablico.<\/p>\n<p>As vantagens s\u00e3o as mesmas da solu\u00e7\u00e3o anterior, tamb\u00e9m usei nomes familiares da pinba_engine original. Al\u00e9m disso, adicionei uma configura\u00e7\u00e3o que permite iniciar v\u00e1rias inst\u00e2ncias do servidor pinba, para armazenar m\u00e9tricas em diferentes tabelas \u2014 isso \u00e9 \u00fatil se voc\u00ea quiser coletar dados n\u00e3o apenas do PHP, mas tamb\u00e9m do Nginx.<br \/>\nDesvantagens \u2014 um 'defeito fatal' e algumas pequenas quest\u00f5es que podem n\u00e3o agradar voc\u00ea pessoalmente, mas minha solu\u00e7\u00e3o \u00e9 'simples como um chinelo' e consiste em cerca de 100 linhas de c\u00f3digo, ent\u00e3o qualquer desenvolvedor PHP pode facilmente alterar o que n\u00e3o gostar em poucos minutos.<\/p>\n<p><b>Princ\u00edpio de funcionamento<\/b><\/p>\n<p>O porto UDP 30002 est\u00e1 sendo escutado. Todos os pacotes recebidos s\u00e3o decodificados de acordo com o esquema protobuf e agregados. Uma vez por minuto, um lote \u00e9 inserido no ClickHouse na tabela pinba.requests. (todos os par\u00e2metros podem ser configurados em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/blob\/master\/config.json\">configura\u00e7\u00e3o<\/a><\/noindex>)<\/p>\n<p><b>Um pouco sobre o ClickHouse<\/b><\/p>\n<p>O ClickHouse suporta diferentes motores de armazenamento de dados. O mais frequentemente utilizado \u00e9 o MergeTree. <\/p>\n<p>Se em algum momento voc\u00ea decidir armazenar dados agregados ao longo do tempo e dados brutos apenas dos \u00faltimos, voc\u00ea pode criar uma view materializada com agrupamento, e limpar periodicamente a tabela principal pinba.requests, fazendo com que todos os dados permane\u00e7am na view materializada. Al\u00e9m disso, ao criar a tabela pinba.requests, voc\u00ea pode especificar 'engine = Null', fazendo com que os dados brutos n\u00e3o sejam salvos no disco, mas ainda assim sejam retornados para a view materializada e armazenados de forma agregada. Eu uso esse esquema para m\u00e9tricas do Nginx, pois no Nginx recebo 50 vezes mais requisi\u00e7\u00f5es do que no PHP.<\/p>\n<p>Ent\u00e3o, voc\u00ea percorreu um longo caminho e eu n\u00e3o gostaria de deix\u00e1-lo pela metade, por isso a seguir estar\u00e1 uma descri\u00e7\u00e3o detalhada da instala\u00e7\u00e3o e configura\u00e7\u00e3o da minha solu\u00e7\u00e3o e tudo o que voc\u00ea precisar\u00e1, bem como as armadilhas em que muitos j\u00e1 trope\u00e7aram. Todo o processo de instala\u00e7\u00e3o \u00e9 descrito para Ubuntu 18.04 LTS e CentOS 7, em outras distribui\u00e7\u00f5es e vers\u00f5es o processo pode ser ligeiramente diferente.<\/p>\n<h4>Instala\u00e7\u00e3o<\/h4>\n<p>\nTodos os comandos necess\u00e1rios est\u00e3o listados em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/tree\/master\/docker\">Dockerfile<\/a><\/noindex> para facilitar a reprodutibilidade das instru\u00e7\u00f5es. Abaixo ser\u00e3o descritas apenas as armadilhas.<\/p>\n<p><b>php-pinba<\/b><\/p>\n<p>Ap\u00f3s a instala\u00e7\u00e3o, certifique-se de que no arquivo \/etc\/php\/7.2\/fpm\/conf.d\/20-pinba.ini todas as op\u00e7\u00f5es est\u00e3o descomentadas. Em algumas distribui\u00e7\u00f5es (por exemplo, CentOS), elas podem estar comentadas.<\/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>Durante a instala\u00e7\u00e3o, o ClickHouse solicitar\u00e1 que voc\u00ea defina uma senha para o usu\u00e1rio default. Por padr\u00e3o, este usu\u00e1rio est\u00e1 dispon\u00edvel de todos os IPs, portanto, se voc\u00ea n\u00e3o tiver um firewall no servidor, certifique-se de definir uma senha. Isso tamb\u00e9m pode ser feito j\u00e1 ap\u00f3s a instala\u00e7\u00e3o no arquivo \/etc\/clickhouse-server\/users.xml.<\/p>\n<p>Vale ressaltar que o ClickHouse utiliza v\u00e1rias portas, incluindo a 9000. Esta porta tamb\u00e9m \u00e9 utilizada pelo php-fpm em algumas distribui\u00e7\u00f5es (por exemplo, CentOS). Se essa porta j\u00e1 estiver em uso, voc\u00ea poder\u00e1 alter\u00e1-la para outra no arquivo \/etc\/clickhouse-server\/config.xml.<\/p>\n<p><b>grafana com plugin para clickhouse<\/b><\/p>\n<p>Ap\u00f3s a instala\u00e7\u00e3o do Grafana, use o login admin e a senha admin. No primeiro acesso, o Grafana solicitar\u00e1 que voc\u00ea defina uma nova senha.<\/p>\n<p>Depois, vamos no menu &#171;+&#187; -&gt; importar e indicamos o n\u00famero do dashboard para importa\u00e7\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/dashboards\/10011\">10011<\/a><\/noindex>. Este dashboard eu preparei e enviei para voc\u00ea n\u00e3o precisar recri\u00e1-lo.<\/p>\n<p>O Grafana suporta o uso do ClickHouse atrav\u00e9s de um plugin de terceiros, mas para plugins de terceiros, os alertas do Grafana n\u00e3o funcionam (h\u00e1 um ticket sobre isso que j\u00e1 est\u00e1 pendente h\u00e1 v\u00e1rios anos).<\/p>\n<p><b>pinba-server<\/b><\/p>\n<p>A instala\u00e7\u00e3o do protobuf e libevent n\u00e3o \u00e9 obrigat\u00f3ria, mas melhora o desempenho do pinba-server. Se voc\u00ea instalar o pinba-server em uma pasta diferente de \/opt, voc\u00ea tamb\u00e9m precisar\u00e1 ajustar o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/blob\/master\/systemd\/pinba-server.service\">script systemd<\/a><\/noindex> do arquivo.<\/p>\n<p><b>m\u00f3dulo pinba para nginx<\/b><\/p>\n<p>Para compilar o m\u00f3dulo, s\u00e3o necess\u00e1rios os fontes da mesma vers\u00e3o do nginx que j\u00e1 est\u00e1 instalada no seu servidor, assim como as mesmas op\u00e7\u00f5es de compila\u00e7\u00e3o; caso contr\u00e1rio, a constru\u00e7\u00e3o ser\u00e1 bem-sucedida, mas ao conectar o m\u00f3dulo ocorrer\u00e1 um erro informando que \"o m\u00f3dulo \u00e9 binariamente incompat\u00edvel\". As op\u00e7\u00f5es de compila\u00e7\u00e3o podem ser visualizadas com o comando nginx -V<\/p>\n<p><b>Dicas<\/b><\/p>\n<p>Todos os meus sites funcionam apenas com https. O campo schema se torna sem sentido, por isso o utilizo para separar web\/console.<\/p>\n<p>Nos scripts que est\u00e3o dispon\u00edveis na web, eu uso:<\/p>\n<pre><code class=\"php\">if (ini_get('pinba.enabled')) {\n    pinba_schema_set('web');\n}\n<\/code><\/pre>\n<p>\nE nos scripts de console (por exemplo, scripts cron):<\/p>\n<pre><code class=\"php\">if (ini_get('pinba.enabled')) {\n    pinba_schema_set('console');\n}<\/code><\/pre>\n<p>\nNo meu painel do Grafana, h\u00e1 um interruptor web\/console para visualizar as estat\u00edsticas separadamente.<\/p>\n<p>Al\u00e9m disso, \u00e9 poss\u00edvel passar suas pr\u00f3prias tags para o Pinba, por exemplo:<\/p>\n<pre><code class=\"php\">pinba_tag_set('country', $countryCode);<\/code><\/pre>\n<p>\n<b>Isso \u00e9 tudo. <\/b><\/p>\n<p>Por favor, responda \u00e0s pesquisas sob o artigo.<\/p>\n<p>Tradicionalmente, aviso que n\u00e3o consulto nem ajudo atrav\u00e9s de mensagens pessoais do Habr e redes sociais.<\/p>\n<p>Abra um ticket no GitHub.<\/p>\n<p>Al\u00e9m disso, por favor, apoie com curtidas <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/449818\/\">na vers\u00e3o em ingl\u00eas<\/a><\/noindex> este artigo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/PHP\/comments\/bigszu\/statistics_and_monitoring_of_php_scripts_in_real\/\">no Reddit<\/a><\/noindex>.<\/p>\n<p class=\"for_users_only_msg\">Apenas usu\u00e1rios registrados podem participar da pesquisa. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Entre<\/a><\/noindex>, por favor.<\/p>\n<h2 class=\"default-block__polling-title\">Qual sistema operacional voc\u00ea usa no servidor?<\/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>                    OpenSUSE<\/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>                    outro<\/p>\n<\/li>\n<\/ul>\n<p>    114 usu\u00e1rios votaram. 11 usu\u00e1rios se abstiveram.<\/p>\n<h2 class=\"default-block__polling-title\">Qual vers\u00e3o do PHP voc\u00ea utiliza no servidor?<\/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>                    outro<\/p>\n<\/li>\n<\/ul>\n<p>    105 usu\u00e1rios votaram. 17 usu\u00e1rios se abstiveram.<\/p>\n<h2 class=\"default-block__polling-title\">Voc\u00ea j\u00e1 usou o Pinba?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    sim<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    n\u00e3o, mas gostaria<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    n\u00e3o e n\u00e3o gostaria<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    n\u00e3o e nunca ouvi falar dele<\/p>\n<\/li>\n<\/ul>\n<p>    100 usu\u00e1rios votaram. 14 usu\u00e1rios se abstiveram.<\/p>\n<h2 class=\"default-block__polling-title\">Qual vers\u00e3o do servidor Pinba voc\u00ea gostaria de experimentar?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    pinba_engine (motor mysql)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    pinba2 (motor mysql)<\/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>                    escreverei o meu pr\u00f3prio<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    outro<\/p>\n<\/li>\n<\/ul>\n<p>    39 usu\u00e1rios votaram. 47 usu\u00e1rios se abstiveram.<br \/>\n<br \/>Fonte: <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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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\udd47Estat\u00edsticas e monitoramento de scripts PHP em tempo real. ClickHouse e Grafana v\u00eam em aux\u00edlio do Pinba | ProHoster","description":"Neste artigo, falarei sobre como usar o Pinba junto com ClickHouse e Grafana em vez de pinba_engine e pinboard. No projeto PHP, o Pinba \u00e9 provavelmente a \u00fanica maneira confi\u00e1vel de entender o que est\u00e1 acontecendo.","canonical_url":"https:\/\/prohoster.info\/pt\/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":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/32681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=32681"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/32681\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/24468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=32681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=32681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=32681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}