{"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\/fr\/blog\/administrirovanie\/statistika-i-monitoring-php-skriptov-v-realnom-vremeni-clickhouse-i-grafana-idut-na-pomoshh-k-pinba","title":{"rendered":"Statistiques et surveillance des scripts PHP en temps r\u00e9el. ClickHouse et Grafana viennent \u00e0 la rescousse de Pinba","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Dans cet article, je vais expliquer comment utiliser Pinba avec ClickHouse et Grafana au lieu de pinba_engine et pinboard.<\/p>\n<p>Dans un projet PHP, Pinba est probablement le seul moyen fiable de comprendre ce qui se passe avec les performances. En g\u00e9n\u00e9ral, Pinba est int\u00e9gr\u00e9 seulement lorsqu'il y a d\u00e9j\u00e0 des probl\u00e8mes et qu'on ne sait pas \u00ab o\u00f9 creuser \u00bb.<\/p>\n<p>Souvent, personne n'a la moindre id\u00e9e du nombre de fois par seconde\/minute qu'un script donn\u00e9 est appel\u00e9, et ils commencent \u00e0 optimiser \u00ab \u00e0 l'aveuglette \u00bb, en commen\u00e7ant par les endroits qui semblent les plus logiques.<\/p>\n<p>Certains analysent les journaux Nginx, tandis que d'autres se concentrent sur les requ\u00eates lentes dans la base de donn\u00e9es.<\/p>\n<p>Bien s\u00fbr, Pinba ne serait pas superflu, mais il y a plusieurs raisons pour lesquelles elle n'est pas pr\u00e9sente sur tous les projets.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/br\/zm\/qz\/brzmqzc8itwc2lt3gjp0q2p-kse.png\"><img decoding=\"async\" alt=\"Statistiques et surveillance des scripts PHP en temps r\u00e9el. ClickHouse et Grafana viennent \u00e0 la rescousse de 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 \/>\nLa premi\u00e8re raison en est l'installation.<\/p>\n<p>Pour obtenir quelque chose de \u00ab significatif \u00bb de l'int\u00e9gration de Pinba, il est fortement conseill\u00e9 de voir les m\u00e9triques non seulement sur les derni\u00e8res minutes, mais \u00e9galement sur une p\u00e9riode prolong\u00e9e (de jours \u00e0 mois).<\/p>\n<p>Pour cela, il faut :<\/p>\n<ul>\n<li>installer l'extension pour PHP (et \u00e9ventuellement vous souhaiteriez un module pour Nginx)<\/li>\n<li>compiler l'extension pour MySQL<\/li>\n<li>installer Pinboard et configurer Cron<\/li>\n<\/ul>\n<p>\nEn raison du faible nombre d'informations sur Pinba, beaucoup ont l'impression qu'elle ne fonctionnait que sur PHP5 et qu'elle appartient d\u00e9j\u00e0 au pass\u00e9, mais comme nous le verrons plus loin \u2014 ce n'est pas le cas.<\/p>\n<p>La premi\u00e8re \u00e9tape est la plus simple, il suffit d'ex\u00e9cuter la commande :<\/p>\n<pre><code class=\"bash\">apt install php-pinba<\/code><\/pre>\n<p>\nDans les d\u00e9p\u00f4ts, cette extension est disponible jusqu'\u00e0 PHP 7.3 inclus, et vous n'avez rien \u00e0 compiler.<\/p>\n<p>Apr\u00e8s avoir ex\u00e9cut\u00e9 la commande d'installation, nous avons imm\u00e9diatement une extension fonctionnelle qui collecte et envoie les m\u00e9triques de chaque script (dur\u00e9e d'ex\u00e9cution, m\u00e9moire, etc.) au format <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Protocol_Buffers\">protobuf<\/a><\/noindex> via UDP vers 127.0.0.1:30002.<\/p>\n<p>Ces paquets UDP ne sont pour l'instant ni capt\u00e9s ni trait\u00e9s, mais cela n'affecte pas la vitesse ou la stabilit\u00e9 de l'ex\u00e9cution de vos scripts PHP.<\/p>\n<p>Jusqu'\u00e0 r\u00e9cemment, l'application capable de capturer et de traiter ces paquets UDP n'\u00e9tait autre que <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tony2001\/pinba_engine\">pinba_engine<\/a><\/noindex>. Description &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tony2001\/pinba_engine\/wiki\/Installation\">simple et concise<\/a><\/noindex>&#187; l'installation d\u00e9courage \u00e0 jamais de le lire et de s'y plonger \u00e0 nouveau. Dans d'interminables listes de d\u00e9pendances figurent tant les noms des paquets que ceux des programmes et des liens vers des pages sp\u00e9cifiques concernant leur installation, et chacun ayant ses propres liens vers d'autres d\u00e9pendances. Personne n'a le temps ni l'envie de s'occuper de ce casse-t\u00eate.<\/p>\n<p>Processus d'installation <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/badoo\/pinba2\">pinba2<\/a><\/noindex> n'est pas devenu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/badoo\/pinba2\/blob\/master\/docs\/index.md#installation\">particuli\u00e8rement plus facile<\/a><\/noindex>.<\/p>\n<p>Peut-\u00eatre qu'un jour, pinba10 pourra \u00eatre install\u00e9 en une ou deux commandes sans avoir \u00e0 lire une tonne de mat\u00e9riel pour comprendre comment faire, mais pour l'instant, ce n'est pas le cas.<\/p>\n<p>Si vous avez quand m\u00eame install\u00e9 pinba_engine, c'est seulement la moiti\u00e9 du travail. En effet, sans <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intaro\/pinboard\">pinboard<\/a><\/noindex> , vous devrez vous contenter de donn\u00e9es uniquement pour les derni\u00e8res minutes ou agr\u00e9ger, stocker et visualiser les donn\u00e9es vous-m\u00eame. Heureusement, pinboard est assez simple \u00e0 utiliser. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/intaro\/pinboard\/wiki\/Installation\">l'installation<\/a><\/noindex>.<\/p>\n<p>On pourrait se demander pourquoi tant de difficult\u00e9s si toutes les m\u00e9triques de PHP sont d\u00e9j\u00e0 envoy\u00e9es au port UDP au format protobuf et qu'il suffit d'\u00e9crire une application qui les capture et les stocke dans une sorte de r\u00e9f\u00e9rentiel ? Manifestement, les d\u00e9veloppeurs ayant eu cette id\u00e9e sont imm\u00e9diatement pass\u00e9s \u00e0 l'\u00e9criture de leurs propres solutions, certaines d'entre elles ayant \u00e9t\u00e9 publi\u00e9es sur GitHub.<\/p>\n<p>Voici un aper\u00e7u de quatre projets open source qui stockent des m\u00e9triques dans des r\u00e9f\u00e9rentiels, \u00e0 partir desquels ces donn\u00e9es peuvent \u00eatre facilement r\u00e9cup\u00e9r\u00e9es et visualis\u00e9es, par exemple, avec Grafana.<\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-server\">olegfedoseev\/pinba-server<\/a><\/noindex> (novembre 2017) <\/h4>\n<p>\nun serveur UDP \u00e9crit en Go qui stocke des m\u00e9triques dans OpenTSDB. Si OpenTSDB est d\u00e9j\u00e0 utilis\u00e9 dans votre projet, cette solution pourrait vous convenir, sinon je recommande de passer votre chemin.<\/p>\n<h4><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-influxdb\">olegfedoseev\/pinba-influxdb<\/a><\/noindex> (juin 2018)<\/h4>\n<p>\nun serveur UDP \u00e9crit en Go, du m\u00eame auteur <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/Aryoh\/\">, qui cette fois stocke des m\u00e9triques dans InfluxDB. De nombreux projets utilisent d\u00e9j\u00e0 InfluxDB pour le monitoring, donc cette solution peut leur convenir parfaitement.<\/a><\/noindex>habrauser<\/p>\n<p>Avantages :<\/p>\n<ul>\n<li>InfluxDB <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/olegfedoseev\/pinba-influxdb#influxdb-preparation\">d'installer<\/a><\/noindex> aggr\u00e9ger les m\u00e9triques obtenues, et effacer l'original apr\u00e8s un certain temps.<\/li>\n<\/ul>\n<p>\nInconv\u00e9nients :<\/p>\n<ul>\n<li>cette solution ne conserve pas d'informations par rapport aux minuteurs.<\/li>\n<li>InfluxDB va conserver les adresses des pages du site comme des tags et si vous avez beaucoup d'adresses uniques, cela conduira \u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/449352\/#comment_20085878\">une consommation accrue<\/a><\/noindex> de m\u00e9moire vive. \u00c0 partir d'un certain moment, il &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/2v\/68\/th\/2v68thch8ajln7abt-ghsmsbxgs.png\">commencera \u00e0 consommer de la m\u00e9moire comme jamais auparavant.<\/a><\/noindex>&#171;. (<noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@valyala\/insert-benchmarks-with-inch-influxdb-vs-victoriametrics-e31a41ae2893\">source<\/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> (janvier 2019) <\/h4>\n<p>\nserveur udp en go qui conserve des m\u00e9triques dans ClickHouse. C'est une solution de mon ami. C'est apr\u00e8s m'y \u00eatre familiaris\u00e9 que j'ai d\u00e9cid\u00e9 de me pencher sur pinba et ClickHouse.<\/p>\n<p>Avantages :<\/p>\n<ul>\n<li>ClickHouse est parfaitement adapt\u00e9 \u00e0 ce genre de t\u00e2ches, il permet de compresser les donn\u00e9es au point o\u00f9 vous pouvez stocker toutes vos donn\u00e9es brutes m\u00eame sans agr\u00e9gations.<\/li>\n<li>si n\u00e9cessaire, vous pouvez facilement agr\u00e9ger les m\u00e9triques obtenues.<\/li>\n<li>mod\u00e8le pr\u00eat \u00e0 l'emploi pour Grafana.<\/li>\n<li>conserve les informations sur les minuteries.<\/li>\n<\/ul>\n<p>\nInconv\u00e9nients :<\/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\">d\u00e9faut fatal.<\/a><\/noindex><\/li>\n<li>il n'y a pas de configuration dans laquelle vous pouvez d\u00e9finir le nom de la base de donn\u00e9es et des tables, l'adresse et le port du serveur.<\/li>\n<li>lors de la conservation des donn\u00e9es brutes, une table d'aide est utilis\u00e9e pour stocker les adresses des pages et des domaines, ce qui complique ensuite les requ\u00eates.<\/li>\n<li>autres petits d\u00e9tails qui d\u00e9coulent du premier inconv\u00e9nient.<\/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> (avril 2019). <\/h4>\n<p>\nserveur udp en php qui conserve des m\u00e9triques dans ClickHouse. C'est ma solution, r\u00e9sultat de ma familiarit\u00e9 avec pinba, ClickHouse et protobuf. Pendant que je me familiarisais avec cet ensemble, j'ai \u00e9crit un \u00ab proof of concept \u00bb, qui \u00e0 ma grande surprise ne consommait pas de ressources significatives (30 Mo de m\u00e9moire vive et moins de 1 % de l'un des huit c\u0153urs du processeur), donc j'ai d\u00e9cid\u00e9 de le partager avec le public.<\/p>\n<p>Les avantages sont les m\u00eames que pour la solution pr\u00e9c\u00e9dente, j'ai aussi utilis\u00e9 des noms familiers de l'original pinba_engine. J'ai \u00e9galement ajout\u00e9 une configuration qui permet de lancer plusieurs instances du serveur pinba en m\u00eame temps pour conserver des m\u00e9triques dans diff\u00e9rentes tables \u2014 c'est utile si vous souhaitez recueillir des donn\u00e9es non seulement de php mais aussi de nginx.<br \/>\nLes inconv\u00e9nients : \u00ab d\u00e9faut fatal \u00bb et les petites choses qui ne vous conviendront pas personnellement, mais ma solution est \u00ab simple comme un chausson \u00bb et se compose d'environ 100 lignes de code, donc tout d\u00e9veloppeur php pourra changer en quelques minutes ce qui ne lui pla\u00eet pas.<\/p>\n<p><b>Principe de fonctionnement<\/b><\/p>\n<p>Le port udp 30002 est \u00e9cout\u00e9. Tous les paquets entrants sont d\u00e9cod\u00e9s selon le sch\u00e9ma protobuf et agr\u00e9g\u00e9s. Une fois par minute, un lot est ins\u00e9r\u00e9 dans ClickHouse dans la table pinba.requests. (tous les param\u00e8tres sont configurables dans <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/blob\/master\/config.json\">la configuration.<\/a><\/noindex>)<\/p>\n<p><b>Un peu sur ClickHouse.<\/b><\/p>\n<p>ClickHouse prend en charge diff\u00e9rents moteurs de stockage de donn\u00e9es. Le plus couramment utilis\u00e9 est MergeTree. <\/p>\n<p>Si \u00e0 un moment donn\u00e9, vous d\u00e9cidez de conserver des donn\u00e9es agr\u00e9g\u00e9es pour toute la dur\u00e9e et des donn\u00e9es brutes seulement pour la derni\u00e8re p\u00e9riode, vous pouvez cr\u00e9er une vue mat\u00e9rialis\u00e9e avec agr\u00e9gation, tout en nettoyant p\u00e9riodiquement la table principale pinba.requests, toutes les donn\u00e9es restant dans la vue mat\u00e9rialis\u00e9e. De plus, lors de la cr\u00e9ation de la table pinba.requests, vous pouvez sp\u00e9cifier \u00ab engine = Null \u00bb, ce qui signifie que les donn\u00e9es brutes ne seront pas du tout enregistr\u00e9es sur le disque, tout en \u00e9tant tout de m\u00eame incluses dans la vue mat\u00e9rialis\u00e9e et conserv\u00e9es sous forme agr\u00e9g\u00e9e. J'utilise ce sch\u00e9ma pour les m\u00e9triques nginx, car j'ai environ 50 fois plus de requ\u00eates sur nginx que sur php.<\/p>\n<p>Ainsi, vous avez parcouru un long chemin et je ne voudrais pas vous laisser \u00e0 mi-chemin, donc ce qui suit est une description d\u00e9taill\u00e9e de l'installation et de la configuration de ma solution et de tout ce dont vous aurez besoin, ainsi que des \u00e9cueils qui ont fait \u00e9chouer plus d'un navire. L'ensemble du processus d'installation est d\u00e9crit pour Ubuntu 18.04 LTS et Centos 7, sur d'autres distributions et versions, le processus peut varier l\u00e9g\u00e8rement.<\/p>\n<h4>Installation<\/h4>\n<p>\nToutes les commandes n\u00e9cessaires sont rassembl\u00e9es dans <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/tree\/master\/docker\">Dockerfile<\/a><\/noindex> pour faciliter la reproductibilit\u00e9 des instructions. Seuls les \u00e9cueils seront d\u00e9crits ci-dessous.<\/p>\n<p><b>php-pinba<\/b><\/p>\n<p>Apr\u00e8s l'installation, assurez-vous que dans le fichier \/etc\/php\/7.2\/fpm\/conf.d\/20-pinba.ini toutes les options sont d\u00e9comment\u00e9es. Dans certaines distributions (par exemple, centos), elles peuvent \u00eatre comment\u00e9es.<\/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>Lors de l'installation, clickhouse vous demandera de d\u00e9finir un mot de passe pour l'utilisateur default. Par d\u00e9faut, cet utilisateur est accessible depuis toutes les IP, donc si vous n'avez pas de pare-feu sur le serveur, assurez-vous de lui attribuer un mot de passe. Cela peut \u00e9galement \u00eatre fait apr\u00e8s l'installation dans le fichier \/etc\/clickhouse-server\/users.xml.<\/p>\n<p>Il convient \u00e9galement de noter que clickhouse utilise plusieurs ports, y compris le port 9000. Ce port est \u00e9galement utilis\u00e9 pour php-fpm dans certaines distributions (par exemple, centos). Si vous utilisez d\u00e9j\u00e0 ce port, vous pouvez le changer dans le fichier \/etc\/clickhouse-server\/config.xml.<\/p>\n<p><b>grafana avec le plugin pour clickhouse<\/b><\/p>\n<p>Apr\u00e8s l'installation de grafana, utilisez le nom d'utilisateur admin et le mot de passe admin. Lors de la premi\u00e8re connexion, grafana vous demandera de d\u00e9finir un nouveau mot de passe.<\/p>\n<p>Ensuite, nous allons dans le menu &#171;+&#187; -&gt; import et nous pr\u00e9cisons le num\u00e9ro du tableau de bord \u00e0 importer. <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/dashboards\/10011\">10011<\/a><\/noindex>. Ce tableau de bord a \u00e9t\u00e9 pr\u00e9par\u00e9 et t\u00e9l\u00e9charg\u00e9 pour que vous n'ayez pas \u00e0 le cr\u00e9er vous-m\u00eame \u00e0 nouveau.<\/p>\n<p>Grafana prend en charge ClickHouse via un plugin tiers, mais les alertes ne fonctionnent pas avec des plugins tiers (un ticket \u00e0 ce sujet attend depuis plusieurs ann\u00e9es).<\/p>\n<p><b>pinba-server<\/b><\/p>\n<p>Installer protobuf et libevent n'est pas obligatoire, mais cela am\u00e9liore les performances de pinba-server. Si vous installez pinba-server dans un dossier diff\u00e9rent de \/opt, vous devrez \u00e9galement ajuster <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pinba-server\/pinba-server\/blob\/master\/systemd\/pinba-server.service\">le script systemd<\/a><\/noindex> le fichier.<\/p>\n<p><b>le module pinba pour nginx<\/b><\/p>\n<p>Pour compiler le module, vous avez besoin des sources de la m\u00eame version de nginx d\u00e9j\u00e0 install\u00e9e sur votre serveur, ainsi que des m\u00eames options de compilation, sinon la compilation r\u00e9ussira, mais lors de la connexion du module une erreur indiquera que \u00ab le module n'est pas compatible \u00bb. Les options de compilation peuvent \u00eatre consult\u00e9es avec la commande nginx -V<\/p>\n<p><b>Astuces<\/b><\/p>\n<p>Tous mes sites fonctionnent uniquement via https. Le champ schema devient donc inutile, c'est pourquoi je l'utilise pour s\u00e9parer web\/console.<\/p>\n<p>Dans les scripts accessibles depuis le web, j'utilise :<\/p>\n<pre><code class=\"php\">if (ini_get('pinba.enabled')) {\n    pinba_schema_set('web');\n}\n<\/code><\/pre>\n<p>\nEt dans les scripts de console (par exemple, les scripts cron) :<\/p>\n<pre><code class=\"php\">if (ini_get('pinba.enabled')) {\n    pinba_schema_set('console');\n}<\/code><\/pre>\n<p>\nMon tableau de bord dans Grafana a un commutateur web\/console pour voir les statistiques s\u00e9par\u00e9ment.<\/p>\n<p>Vous pouvez \u00e9galement transmettre vos propres tags dans pinba, par exemple :<\/p>\n<pre><code class=\"php\">pinba_tag_set('country', $countryCode);<\/code><\/pre>\n<p>\n<b>C'est tout. <\/b><\/p>\n<p>Je vous prie de r\u00e9pondre aux enqu\u00eates sous l'article.<\/p>\n<p>Je rappelle traditionnellement que je ne consulte et n'aide pas via des messages priv\u00e9s sur Habr et les r\u00e9seaux sociaux.<\/p>\n<p>Ouvrez un ticket sur GitHub.<\/p>\n<p>Je vous demande aussi de soutenir avec des likes <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/449818\/\">la version anglaise<\/a><\/noindex> de cet article <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/PHP\/comments\/bigszu\/statistics_and_monitoring_of_php_scripts_in_real\/\">sur Reddit<\/a><\/noindex>.<\/p>\n<p class=\"for_users_only_msg\">Seuls les utilisateurs enregistr\u00e9s peuvent participer au sondage. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Connectez-vous<\/a><\/noindex>, s'il vous pla\u00eet.<\/p>\n<h2 class=\"default-block__polling-title\">Quel syst\u00e8me d'exploitation utilisez-vous sur le serveur ?<\/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>                    autre<\/p>\n<\/li>\n<\/ul>\n<p>    114 utilisateurs ont vot\u00e9. 11 utilisateurs se sont abstenus.<\/p>\n<h2 class=\"default-block__polling-title\">Quelle version de PHP utilisez-vous sur le serveur ?<\/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>                    autre<\/p>\n<\/li>\n<\/ul>\n<p>    105 utilisateurs ont vot\u00e9. 17 utilisateurs se sont abstenus.<\/p>\n<h2 class=\"default-block__polling-title\">Avez-vous d\u00e9j\u00e0 utilis\u00e9 pinba ?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    oui<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    non, mais j'aimerais<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    non et je n'en voudrais pas<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    non et je n'en ai jamais entendu parler<\/p>\n<\/li>\n<\/ul>\n<p>    100 utilisateurs ont vot\u00e9. 14 utilisateurs se sont abstenus.<\/p>\n<h2 class=\"default-block__polling-title\">Quelle version de pinba-server aimeriez-vous essayer ?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    pinba_engine (moteur mysql)<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    pinba2 (moteur 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>                    je vais \u00e9crire le mien<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    autre<\/p>\n<\/li>\n<\/ul>\n<p>    39 utilisateurs ont vot\u00e9. 47 utilisateurs se sont abstenus.<br \/>\n<br \/>Source : <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\/fr\/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=\"fr_FR\" \/>\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\/fr\/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 Statistiques et surveillance des scripts PHP en temps r\u00e9el. ClickHouse et Grafana viennent en aide \u00e0 Pinba | ProHoster","description":"Dans cet article, je vais expliquer comment utiliser Pinba en conjonction avec ClickHouse et Grafana au lieu de Pinba Engine et Pinboard. Pour un projet PHP, Pinba est sans doute le seul moyen fiable de comprendre ce qui se passe.","canonical_url":"https:\/\/prohoster.info\/fr\/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":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/32681","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=32681"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/32681\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/24468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=32681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=32681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=32681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}