{"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\/es\/blog\/administrirovanie\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba","title":{"rendered":"Estad\u00edsticas y monitoreo de scripts PHP en tiempo real. ClickHouse y Grafana est\u00e1n aqu\u00ed para ayudar a Pinba","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>En este art\u00edculo, explicar\u00e9 c\u00f3mo usar Pinba junto con ClickHouse y Grafana en lugar de pinba_engine y pinboard.<\/p>\n<p>En un proyecto PHP, Pinba es quiz\u00e1s la forma m\u00e1s confiable de entender qu\u00e9 est\u00e1 sucediendo con el rendimiento. Sin embargo, generalmente, Pinba se implementa solo cuando ya se observan problemas y no se sabe \"d\u00f3nde investigar\".<\/p>\n<p>A menudo, nadie tiene idea de cu\u00e1ntas veces por segundo\/minuto se llama a un script y comienzan a optimizar \"a ciegas\", comenzando por los lugares que parecen m\u00e1s l\u00f3gicos.<\/p>\n<p>Alguien analiza los registros de nginx, mientras que otros estudian las consultas lentas en la base de datos.<\/p>\n<p>Por supuesto, Pinba no estar\u00eda de m\u00e1s, pero hay varias razones por las que no est\u00e1 presente en cada proyecto.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/br\/zm\/qz\/brzmqzc8itwc2lt3gjp0q2p-kse.png\"><img decoding=\"async\" alt=\"Estad\u00edsticas y monitoreo de scripts PHP en tiempo real. ClickHouse y Grafana est\u00e1n aqu\u00ed para ayudar a 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 \/>\nY la primera raz\u00f3n es la instalaci\u00f3n.<\/p>\n<p>Para obtener algo de \"resultado\" de la implementaci\u00f3n de Pinba, es muy deseable ver m\u00e9tricas no solo por los \u00faltimos minutos, sino en un intervalo de tiempo m\u00e1s largo (desde d\u00edas hasta meses).<\/p>\n<p>Para esto se necesita:<\/p>\n<ul>\n<li>instalar la extensi\u00f3n para PHP (y quiz\u00e1s desee el m\u00f3dulo para nginx)<\/li>\n<li>compilar la extensi\u00f3n para MySQL<\/li>\n<li>instalar Pinboard y configurar cron<\/li>\n<\/ul>\n<p>\nDebido a la escasa informaci\u00f3n sobre Pinba, muchos han llegado a la impresi\u00f3n de que solo funcionaba en PHP 5 y ha quedado en el pasado, pero como veremos m\u00e1s adelante, no es as\u00ed.<\/p>\n<p>El primer paso es el m\u00e1s f\u00e1cil, solo necesita ejecutar el comando:<\/p>\n<pre><code class=\"bash\">apt install php-pinba<\/code><\/pre>\n<p>\nEn los repositorios, esta extensi\u00f3n est\u00e1 disponible hasta PHP 7.3 incluido y no necesita compilar nada.<\/p>\n<p>Despu\u00e9s de ejecutar el comando de instalaci\u00f3n, ya obtenemos la extensi\u00f3n funcionando, que recolecta y env\u00eda m\u00e9tricas de cada script (duraci\u00f3n de la ejecuci\u00f3n, memoria, etc.) en formato <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Protocol_Buffers\">protobuf<\/a><\/noindex> por UDP en 127.0.0.1:30002.<\/p>\n<p>Estos paquetes UDP a\u00fan nadie los atrapa y los procesa, pero eso no afecta la velocidad ni la estabilidad de sus scripts PHP.<\/p>\n<p>Hasta hace poco, la \u00fanica aplicaci\u00f3n que pod\u00eda atrapar y procesar estos paquetes UDP era <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tony2001\/pinba_engine\">pinba_engine<\/a><\/noindex>. Descripci\u00f3n &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tony2001\/pinba_engine\/wiki\/Installation\">simple y concisa<\/a><\/noindex>&#187; la instalaci\u00f3n desmotiva a querer leer y profundizar en ello nuevamente. En las kilom\u00e9tricas listas de dependencias hay tanto nombres de paquetes como nombres de programas y enlaces a p\u00e1ginas individuales para su instalaci\u00f3n, y esos tienen sus propios enlaces a otras dependencias. Nadie tiene tiempo ni ganas para lidiar con este l\u00edo.<\/p>\n<p>El proceso de instalaci\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/badoo\/pinba2\">pinba2<\/a><\/noindex> no se hizo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/badoo\/pinba2\/blob\/master\/docs\/index.md#installation\">especialmente m\u00e1s f\u00e1cil<\/a><\/noindex>.<\/p>\n<p>Quiz\u00e1s alg\u00fan d\u00eda pinba10 se podr\u00e1 instalar con uno o dos comandos sin tener que leer una gran cantidad de material para entender c\u00f3mo hacerlo, pero por ahora eso no es as\u00ed.<\/p>\n<p>Si aun as\u00ed instalaste pinba_engine, es solo la mitad del trabajo. Porque sin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intaro\/pinboard\">pinboard<\/a><\/noindex> tendr\u00e1s que limitarte a los datos de solo los \u00faltimos minutos o agregar, almacenar y visualizar los datos por tu cuenta. Bien, que pinboard es bastante simple en <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intaro\/pinboard\/wiki\/Installation\">instalaci\u00f3n<\/a><\/noindex>.<\/p>\n<p>Aparentemente, \u00bfpor qu\u00e9 sufrir tanto si todas las m\u00e9tricas de php ya van a un puerto udp en formato protobuf y lo \u00fanico que necesitas es escribir una aplicaci\u00f3n que las capture y las almacene en alg\u00fan lugar? Al parecer, a esos desarrolladores a quienes se les ocurri\u00f3 esta idea, les dio por ponerse a escribir sus propias bicicletas, y algunas de ellas terminaron en GitHub.<\/p>\n<p>A continuaci\u00f3n, se presenta una revisi\u00f3n de cuatro proyectos de c\u00f3digo abierto que almacenan m\u00e9tricas en almacenes de los que estos datos se pueden extraer y visualizer f\u00e1cilmente, por ejemplo, con grafana.<\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-server\">olegfedoseev\/pinba-server<\/a><\/noindex> (noviembre de 2017) <\/h4>\n<p>\nservidor udp en go, que guarda m\u00e9tricas en OpenTSDB. Tal vez si OpenTSDB ya se utiliza en tu proyecto, esta soluci\u00f3n te convenga, de lo contrario, te recomiendo que pases de largo.<\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-influxdb\">olegfedoseev\/pinba-influxdb<\/a><\/noindex> (junio de 2018)<\/h4>\n<p>\nservidor udp en go, del mismo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/Aryoh\/\">habrayuser<\/a><\/noindex>, que esta vez guarda m\u00e9tricas en InfluxDB. En muchos proyectos ya se usa InfluxDB para monitoreo, por lo que esta soluci\u00f3n podr\u00eda ser muy adecuada para ellos.<\/p>\n<p>Pros:<\/p>\n<ul>\n<li>InfluxDB <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-influxdb#influxdb-preparation\">permite<\/a><\/noindex> agregar las m\u00e9tricas obtenidas y eliminar el original despu\u00e9s de un tiempo determinado.<\/li>\n<\/ul>\n<p>\nDesventajas:<\/p>\n<ul>\n<li>esta soluci\u00f3n no almacena informaci\u00f3n por temporizadores.<\/li>\n<li>InfluxDB almacenar\u00e1 las direcciones de las p\u00e1ginas del sitio como etiquetas y si tienes muchas direcciones \u00fanicas de p\u00e1ginas, esto provocar\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/449352\/#comment_20085878\">un mayor consumo<\/a><\/noindex> memoria RAM. A partir de un cierto momento, \u00e9l &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/2v\/68\/th\/2v68thch8ajln7abt-ghsmsbxgs.png\">comenzar\u00e1 a consumir memoria descontroladamente<\/a><\/noindex>&#171;. (<noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@valyala\/insert-benchmarks-with-inch-influxdb-vs-victoriametrics-e31a41ae2893\">fuente<\/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> (enero de 2019) <\/h4>\n<p>\nServidor UDP en Go que guarda m\u00e9tricas en ClickHouse. Esta es una soluci\u00f3n de un amigo m\u00edo. Fue despu\u00e9s de conocerla que decid\u00ed que era hora de ponerme a trabajar en Pinba y ClickHouse.<\/p>\n<p>Pros:<\/p>\n<ul>\n<li>ClickHouse es perfecto para estas tareas, permite comprimir datos de tal manera que puedes almacenar todos los datos sin procesar incluso sin agregaciones.<\/li>\n<li>Si es necesario, puedes agregar las m\u00e9tricas obtenidas f\u00e1cilmente.<\/li>\n<li>Plantilla lista para Grafana.<\/li>\n<li>Guarda informaci\u00f3n por temporizadores.<\/li>\n<\/ul>\n<p>\nDesventajas:<\/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\">Defecto fatal.<\/a><\/noindex><\/li>\n<li>No hay una configuraci\u00f3n donde se pueda establecer el nombre de la base de datos y las tablas, as\u00ed como la direcci\u00f3n y el puerto del servidor.<\/li>\n<li>Al guardar datos sin procesar, se utiliza una tabla de diccionario auxiliar para almacenar las direcciones de las p\u00e1ginas y los dominios, lo que complica posteriormente las consultas.<\/li>\n<li>Otros peque\u00f1os detalles que derivan de la primera desventaja.<\/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 en PHP que guarda m\u00e9tricas en ClickHouse. Esta es mi soluci\u00f3n, resultado de mi experiencia con Pinba, ClickHouse y Protobuf. Mientras trataba de entender todo este conjunto, escrib\u00ed un 'proof of concept', que inesperadamente para m\u00ed no consum\u00eda recursos significativos (30 MB de RAM y menos del 1% de uno de los ocho n\u00facleos del procesador), por lo que decid\u00ed compartirlo con el p\u00fablico.<\/p>\n<p>Ventajas: las mismas que en la soluci\u00f3n anterior, adem\u00e1s us\u00e9 nombres familiares del Pinba original. Tambi\u00e9n a\u00f1ad\u00ed una configuraci\u00f3n que permite iniciar varias instancias del servidor Pinba, para guardar m\u00e9tricas en diferentes tablas, lo cual es \u00fatil si deseas recopilar datos no solo de PHP, sino tambi\u00e9n de Nginx.<br \/>\nDesventajas: 'defecto fatal' y esos peque\u00f1os detalles que no te gustar\u00e1n personalmente, pero mi soluci\u00f3n es 'tan simple como una chancleta' y consiste en alrededor de 100 l\u00edneas de c\u00f3digo, as\u00ed que cualquier desarrollador PHP podr\u00e1 modificar lo que no le guste en unos minutos.<\/p>\n<p><b>Principio de funcionamiento.<\/b><\/p>\n<p>Se escucha el puerto UDP 30002. Todos los paquetes entrantes se decodifican seg\u00fan el esquema Protobuf y se agregan. Cada minuto se inserta un lote en ClickHouse en la tabla pinba.requests. (todos los par\u00e1metros se configuran en <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/blob\/master\/config.json\">la configuraci\u00f3n.<\/a><\/noindex>)<\/p>\n<p><b>Un poco sobre ClickHouse.<\/b><\/p>\n<p>ClickHouse soporta diferentes motores de almacenamiento de datos. El m\u00e1s utilizado es MergeTree. <\/p>\n<p>Si en alg\u00fan momento decides almacenar datos agregados a lo largo del tiempo y mantener solo los datos en bruto del \u00faltimo per\u00edodo, puedes crear una vista materializada con agrupaci\u00f3n y limpiar peri\u00f3dicamente la tabla principal pinba.requests; todos los datos permanecer\u00e1n en la vista materializada. Adem\u00e1s, al crear la tabla pinba.requests, puedes especificar \"engine = Null\"; de este modo, los datos en bruto no se guardar\u00e1n en el disco y, sin embargo, seguir\u00e1n apareciendo en la vista materializada y se guardar\u00e1n de manera agregada. Utilizo este esquema para las m\u00e9tricas de nginx, ya que en nginx tengo 50 veces m\u00e1s solicitudes que en php.<\/p>\n<p>As\u00ed que has recorrido un largo camino y no quiero dejarte a medias, as\u00ed que a continuaci\u00f3n encontrar\u00e1s una descripci\u00f3n detallada de la instalaci\u00f3n y configuraci\u00f3n de mi soluci\u00f3n y todo lo que necesitar\u00e1s, as\u00ed como los escollos en los que se han estrellado m\u00e1s de un barco. Todo el proceso de instalaci\u00f3n se describe para Ubuntu 18.04 LTS y Centos 7; en otras distribuciones y versiones, el proceso puede variar ligeramente.<\/p>\n<h4>Instalaci\u00f3n<\/h4>\n<p>\nHe recopilado todos los comandos necesarios en <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/tree\/master\/docker\">Dockerfile<\/a><\/noindex> para facilitar la reproducibilidad de las instrucciones. A continuaci\u00f3n, solo se describir\u00e1n los escollos.<\/p>\n<p><b>php-pinba<\/b><\/p>\n<p>Despu\u00e9s de la instalaci\u00f3n, aseg\u00farate de que en el archivo \/etc\/php\/7.2\/fpm\/conf.d\/20-pinba.ini todas las opciones est\u00e9n descomentadas. En algunas distribuciones (como centos) pueden 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 la instalaci\u00f3n, clickhouse te pedir\u00e1 que establezcas una contrase\u00f1a para el usuario default. Por defecto, este usuario es accesible desde todas las IP, as\u00ed que si no tienes un firewall en el servidor, aseg\u00farate de establecerle una contrase\u00f1a. Esto tambi\u00e9n se puede hacer despu\u00e9s de la instalaci\u00f3n en el archivo \/etc\/clickhouse-server\/users.xml.<\/p>\n<p>Tambi\u00e9n es importante notar que clickhouse utiliza varios puertos, incluido el 9000. Este puerto tambi\u00e9n es utilizado por php-fpm en algunas distribuciones (como centos). Si este puerto ya est\u00e1 en uso, puedes cambiarlo en el archivo \/etc\/clickhouse-server\/config.xml.<\/p>\n<p><b>grafana con plugin para clickhouse<\/b><\/p>\n<p>Despu\u00e9s de instalar grafana, utiliza el usuario admin y la contrase\u00f1a admin. En el primer inicio de sesi\u00f3n, grafana te pedir\u00e1 que establezcas una nueva contrase\u00f1a.<\/p>\n<p>Luego, accedemos al men\u00fa &#171;+&#187; -&gt; importar y especificamos el n\u00famero del tablero para importar <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/dashboards\/10011\">10011<\/a><\/noindex>. Este dashboard lo he preparado y subido para que no tengas que crearlo t\u00fa mismo una vez m\u00e1s.<\/p>\n<p>Grafana es compatible con ClickHouse a trav\u00e9s de un complemento de terceros, pero las alertas no funcionan para los complementos de terceros (el ticket ha estado abierto durante varios a\u00f1os).<\/p>\n<p><b>pinba-server<\/b><\/p>\n<p>La instalaci\u00f3n de protobuf y libevent no es obligatoria, pero mejora el rendimiento de pinba-server. Si instala pinba-server en un directorio diferente a \/opt, tambi\u00e9n deber\u00e1 ajustarlo. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/blob\/master\/systemd\/pinba-server.service\">script de systemd<\/a><\/noindex> archivo.<\/p>\n<p><b>m\u00f3dulo pinba para nginx<\/b><\/p>\n<p>Para compilar el m\u00f3dulo se necesitan las fuentes de la misma versi\u00f3n de nginx que ya est\u00e1 instalada en su servidor, as\u00ed como las mismas opciones de compilaci\u00f3n; de lo contrario, la compilaci\u00f3n ser\u00e1 exitosa, pero al conectar el m\u00f3dulo se mostrar\u00e1 un error de \"m\u00f3dulo no compatible binariamente\". Las opciones de compilaci\u00f3n se pueden ver con el comando nginx -V.<\/p>\n<p><b>Consejos \u00fatiles<\/b><\/p>\n<p>Todos mis sitios funcionan solo por https. El campo schema se vuelve irrelevante, por lo que lo uso para diferenciar web\/console.<\/p>\n<p>En los scripts accesibles desde la web uso:<\/p>\n<pre><code class=\"php\">if (ini_get('pinba.enabled')) {\n    pinba_schema_set('web');\n}\n<\/code><\/pre>\n<p>\nY en los de consola (por ejemplo, scripts de cron):<\/p>\n<pre><code class=\"php\">if (ini_get('pinba.enabled')) {\n    pinba_schema_set('console');\n}<\/code><\/pre>\n<p>\nEn mi panel de Grafana hay un interruptor web\/console para ver estad\u00edsticas por separado.<\/p>\n<p>Tambi\u00e9n en Pinba se pueden pasar sus propias etiquetas, por ejemplo:<\/p>\n<pre><code class=\"php\">pinba_tag_set('country', $countryCode);<\/code><\/pre>\n<p>\n<b>Eso es todo. <\/b><\/p>\n<p>Les agradecer\u00eda que respondieran las encuestas debajo del art\u00edculo.<\/p>\n<p>Tradicionalmente, aviso que no consulto ni ayudo a trav\u00e9s de mensajes personales en Habr y redes sociales.<\/p>\n<p>Abra un ticket en GitHub.<\/p>\n<p>Tambi\u00e9n, por favor, apoyen con me gusta <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/449818\/\">la versi\u00f3n en ingl\u00e9s<\/a><\/noindex> de este art\u00edculo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/PHP\/comments\/bigszu\/statistics_and_monitoring_of_php_scripts_in_real\/\">en Reddit<\/a><\/noindex>.<\/p>\n<p class=\"for_users_only_msg\">Solo los usuarios registrados pueden participar en la encuesta. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Inicie sesi\u00f3n<\/a><\/noindex>, por favor.<\/p>\n<h2 class=\"default-block__polling-title\">\u00bfQu\u00e9 sistema operativo utiliza en el 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>                    otro<\/p>\n<\/li>\n<\/ul>\n<p>    114 usuarios votaron. 11 usuarios se abstuvieron.<\/p>\n<h2 class=\"default-block__polling-title\">\u00bfQu\u00e9 versi\u00f3n de PHP utiliza en el 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>                    otro<\/p>\n<\/li>\n<\/ul>\n<p>    105 usuarios votaron. 17 usuarios se abstuvieron.<\/p>\n<h2 class=\"default-block__polling-title\">\u00bfAlguna vez ha usado Pinba?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    s\u00ed<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    no, pero me gustar\u00eda<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    no y no me gustar\u00eda<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    no y nunca he o\u00eddo hablar de ella<\/p>\n<\/li>\n<\/ul>\n<p>    100 usuarios votaron. 14 usuarios se abstuvieron.<\/p>\n<h2 class=\"default-block__polling-title\">\u00bfQu\u00e9 versi\u00f3n de pinba-server le gustar\u00eda probar?<\/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>                    escribir\u00e9 el m\u00edo<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    otro<\/p>\n<\/li>\n<\/ul>\n<p>    39 usuarios votaron. 47 usuarios se abstuvieron.<br \/>\n<br \/>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47 Estad\u00edsticas y monitoreo de scripts PHP en tiempo real. ClickHouse y Grafana vienen al rescate de Pinba | ProHoster","description":"En este art\u00edculo, te contar\u00e9 c\u00f3mo utilizar Pinba junto con ClickHouse y Grafana en lugar de Pinba Engine y Pinboard. En proyectos PHP, Pinba es probablemente la \u00fanica forma confiable de entender qu\u00e9 est\u00e1 sucediendo.","canonical_url":"https:\/\/prohoster.info\/es\/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":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/32681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=32681"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/32681\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/24468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=32681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=32681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=32681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}