Statistiche è monitoraghju di script PHP in tempu reale. ClickHouse è Grafana vanu à l'aiutu di Pinba

In questu articulu vi dicu cumu utilizà pinba cù clickhouse è grafana invece di pinba_engine è pinboard.

In un prughjettu PHP, pinba hè forsi l'unicu modu affidabile per capisce ciò chì succede cù u rendiment. Hè veru, pinba hè generalmente implementatu solu quandu i prublemi sò digià osservati è ùn hè micca chjaru "induve scavà".

Spessu nimu ùn hà micca idea di quante volte per seconda / minutu questu o quellu script hè chjamatu è cumincianu à ottimisà "per toccu", partendu da quelli lochi chì parenu più lògichi.

Certi analizanu i logs nginx, mentre chì altri analizanu e dumande di basa di dati lente.

Di sicuru, pinba ùn saria micca superfluu, ma ci sò parechji ragiuni perchè micca ogni prughjettu hà.

Statistiche è monitoraghju di script PHP in tempu reale. ClickHouse è Grafana vanu à l'aiutu di Pinba

È u primu mutivu hè a stallazione.

Per ottene più o menu un tipu di "exhaust" da l'implementazione di Pinba, hè assai desideratu per vede metriche micca solu per l'ultimi minuti, ma ancu per un longu periodu di tempu (da ghjorni à mesi).

Per ciò chì avete bisognu:

  • installate l'estensione per php (è pudete vulete un modulu per nginx)
  • compile l'estensione per mysql
  • installate pinboard è cunfigurà cron

A causa di a piccula quantità di infurmazione nantu à Pinba, assai persone anu l'impressione chì hà travagliatu solu nantu à PHP5 è hè stata longa una cosa di u passatu, ma cum'è avemu vistu dopu, questu ùn hè micca u casu.

U primu passu hè u più simplice, tuttu ciò chì duvete fà hè eseguisce u cumandamentu:

apt install php-pinba

Questa estensione hè dispunibule in i repositori finu à u php 7.3 inclusi è ùn avete micca bisognu di cumpilà nunda.

Dopu avè eseguitu u cumandimu di stallazione, ricevemu immediatamente una estensione di travagliu chì recullà è manda metriche per ogni script (tempu di esecuzione, memoria, etc.) in u formatu. protobuf via udp à 127.0.0.1:30002.

Finu a ora nimu hà pigliatu o processatu questi pacchetti UDP, ma questu ùn hà micca in alcun modu affettanu negativamente a velocità o stabilità di i vostri script PHP.

Finu à pocu tempu, l'unica applicazione chì puderia catturà è processà questi pacchetti UDP era pinba_engine. Descrizzione "simplice è cuncisu" L'installazione scoraggia u desideriu di leghje è di sfondate di novu. I listi di u chilometru di dependenzii cuntenenu i nomi di i pacchetti è i nomi di i prugrammi è i ligami à e pagine individuali cù a so installazione, è quelli chì anu i so ligami à l'altri dependenzii. Nimu ùn hà u tempu o u desideriu di trattà cù sta merda.

Prucessu di installazione pinba2 ùn hà micca soprattuttu più faciule.

Forsi un ghjornu serà pussibule installà pinba10 cù unu o dui cumandamenti è ùn deve micca leghje una mansa di materiale per capisce cumu fà, ma per avà ùn hè micca u casu.

Se installate pinba_engine, questu hè solu a mità di a battaglia. Dopu tuttu, senza pinboard vi Mulateri Di L'hannu à limità à i dati da appena l'ultimi minuti, o vi tuccherà à aggregate, almacenà, è visualize i dati sè stessu. Hè bonu chì u pinboard hè abbastanza simplice d'utilizà stallazione.

Sembra, perchè tali soffrenu si tutte e metriche da php sò digià mandate à u portu udp in u formatu protobuf è tuttu ciò chì avete bisognu hè di scrive una applicazione chì li catturà è mette in un certu tipu di almacenamiento? Apparentemente, quelli sviluppatori chì sò venuti cù questa idea si sò immediatamente pusati per scrive e so idee, alcune di e quali anu finitu in GitHub.

A seguita hè una panoramica di quattru prughjetti open source chì salvanu metriche in u almacenamentu, da quale sta dati pò esse facilmente recuperati è visualizati, per esempiu, cù grafana.

olegfedoseev/pinba-server (nuvembre 2017)

udp server on go chì salva metriche à OpenTSDB. Forsi sè vo site digià aduprà OpenTSDB in u vostru prughjettu, allora sta suluzione vi cunvene, altrimenti vi cunsigliu di passà.

olegfedoseev/pinba-influxdb (ghjugnu 2018)

udp server on go, da u listessu navigatore, chì sta volta guarda a metrica in InfluxDB. Parechji prughjetti sò digià utilizatu InfluxDB per u monitoraghju, cusì sta suluzione pò esse perfetta per elli.

Pros:

  • InfluxDB si permette di aggregate i metrici ricevuti, è sguassate l'uriginale dopu un tempu specificatu.

Cons:

Clicca House-Ninja/Proton (ghjennaghju 2019)

udp server on go, chì salva metriche in ClickHouse. Questa hè a suluzione di u mo amicu. Hè dopu avè cunnisciutu cun ellu chì aghju decisu chì era ora di piglià Pinbu è Clickhouse.

Pros:

  • Clickhouse hè l'ideale per tali compiti; permette di cumpressà e dati tantu chì pudete almacenà tutte e dati crudi ancu senza aggregazioni.
  • se necessariu, pudete facilmente aggregate e metriche resultanti
  • mudellu prontu per grafana
  • salva l'infurmazioni nantu à i timers

Cons:

  • difettu fatale
  • ùn ci hè micca cunfigurazione in quale pudete cunfigurà u nome di a basa di dati è e tavule, l'indirizzu è u portu di u servitore.
  • quandu si almacenanu dati crudi, una tavola di dizziunariu ausiliaria hè aduprata per almacenà l'indirizzi di pagine è di duminiu, chì complica e dumande sussegwenti.
  • altre petite cose chì seguitanu da u primu minus

pinba-server/pinba-server (aprile 2019)

udp server in php, chì salva metriche in ClickHouse. Questa hè a mo suluzione, chì hè u risultatu di cunnosce pinba, ClickHouse è protobuf. Mentre stava sguassate tuttu questu, aghju scrittu una "prova di cuncettu", chì, inaspettatamente per mè, ùn hà micca cunsumatu risorse significativu (30 MB di RAM è menu di 1% di unu di l'ottu core di processore), cusì aghju. decisu di sparte cù u publicu.

I vantaghji sò listessi cum'è a suluzione precedente, aghju utilizatu ancu i nomi di solitu da u pinba_engine originale. Aghju aghjustatu ancu una cunfigurazione chì permette di lancià parechje istanze di u servitore di pinbase à una volta per salvà metriche in diverse tavule - questu hè utile se vulete cullà dati micca solu da php, ma ancu da nginx.
Svantaghji - "difettu fatale" è quelli picculi cosi chì ùn vi cunvene micca personalmente, ma a mo suluzione hè "semplice cum'è una pantofole" è hè custituita da solu circa 100 linee di codice, cusì ogni sviluppatore PHP pò cambià ciò chì ùn li piace micca. in un paru di minuti.

Come si travaglia

Hè intesu u portu UDP 30002. Tutti i pacchetti entranti sò decodificati secondu u schema protobuf è aggregati. Una volta un minutu, un pacchettu hè inseritu in u clickhouse in a tavola pinba.requests. (tutti i paràmetri sò cunfigurati in cunfig)

Un pocu di Clickhouse

Clickhouse supporta diversi motori di almacenamiento di dati. U più cumunimenti usatu hè MergeTree.

Se in un certu puntu decide di almacenà dati aggregati per tutti i tempi, è dati prima solu per l'ultimu, pudete creà una vista materializzata cù raggruppamentu, è periodicamente pulisce a tavola pinba.requests principale, mentre chì tutti i dati restanu in u tavulinu. vista materializzata. Inoltre, quandu creanu a tavola pinba.requests, pudete specificà "engine = Null", allora i dati crudi ùn saranu micca salvati à u discu, è à u stessu tempu si finiscinu sempre in a vista materializzata è esse salvatu aggregated. . Aghju utilizatu stu schema per nginx metrics, perchè nantu à nginx aghju 50 volte più richieste chè in php.

Dunque, avete fattu una longa strada è ùn vogliu micca lascià a mità di strada, cusì ciò chì seguita hè una descrizzione dettagliata di a stallazione è a cunfigurazione di a mo suluzione è di tuttu ciò chì avete bisognu, è ancu di e trappule chì anu causatu più di una nave. à crash. Tuttu u prucessu di stallazione hè descrittu per Ubuntu 18.04 LTS è Centos 7; u prucessu pò differisce ligeramente in altre distribuzioni è versioni.

rimarchevuli

Aghju messu tutti i cumandamenti necessarii dockerfile per facilità a riproducibilità di l'istruzzioni. Solu i trappule seranu descritti quì sottu.

php-pinba

Dopu a stallazione, assicuratevi chì in u schedariu /etc/php/7.2/fpm/conf.d/20-pinba.ini avete uncommented tutte l'opzioni. In certi distribuzioni (per esempiu centos) ponu esse cummentati.

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

clickhouse

Durante a stallazione, Clickhouse vi dumandarà di stabilisce una password per l'utilizatore predeterminatu. Per automaticamente, questu utilizatore hè accessibile da tutti l'IP, perchè se ùn avete micca un firewall in u vostru servitore, assicuratevi di stabilisce una password per questu. Questu pò ancu esse fattu dopu a stallazione in u schedariu /etc/clickhouse-server/users.xml.

Hè nutate ancu chì clickhouse usa parechji porti, cumpresu 9000. Stu portu hè ancu usatu per php-fpm in certi distribuzioni (per esempiu, centos). Sè avete digià utilizatu stu portu, pudete cambià à un altru in u schedariu /etc/clickhouse-server/config.xml.

grafana cù u plugin clickhouse

Dopu avè installatu Grafana, utilizate l'amministratore di login è l'amministratore di password. Quandu accede per a prima volta, Grafana vi dumandarà di stabilisce una nova password.

In seguitu, andate à u "+" -> menù d'importazione è indicà u numeru di u dashboard per l'importazione 10011. Aghju preparatu è caricatu stu dashboard in modu chì ùn avete micca da fà di novu.

Grafana supporta u travagliu cù clickhouse attraversu un plugin di terzu, ma Grafana ùn hà micca avvisi per i plugins di terzu (ci hè statu un bigliettu per questu per parechji anni).

pinba-server

L'installazione di protobuf è libevent hè opzionale, ma migliurà u rendiment di u servitore pinba. Se installate pinba-server in un cartulare altru ch'è / opt, allora vi tuccherà à curregà script systemd schedariu.

modulu pinba per nginx

Per cumpilà un modulu, avete bisognu di codici fonte di a listessa versione di nginx chì hè digià stallata nantu à u vostru servitore, è ancu di e stesse opzioni di compilazione, altrimenti a custruzzione serà successu, ma quandu cunnetta u modulu, un errore serà ghjittatu chì "U modulu ùn hè micca compatibile binari". L'opzioni di compilazione ponu esse vistu cù u cumandimu nginx -V

Hacks di vita

Tutti i mo siti funzionanu solu in https. U campu di schema diventa senza significatu, cusì l'aghju utilizatu per separà web / cunsola.

In scripts chì sò accessibili da u web aghju utilizatu:

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

È in script di cunsola (per esempiu, script cron):

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

In u mo dashboard in Grafana ci hè un switch web / console per vede statistiche separatamente.

Pudete ancu mandà i vostri tag à Pinba, per esempiu:

pinba_tag_set('country', $countryCode);

Eccu tuttu.

Per piacè risponde à i sondaggi sottu à l'articulu.

Comu di solitu, vi avvistu chì ùn aghju micca cunsigliatu o aiutu per mezu di missaghji persunali nantu à Habr è e rete suciale.

Crea un bigliettu nantu à Github.

Per piacè ancu sustene cù Mi piace versione inglese stu articulu nantu à reddit.

Solu l'utilizatori registrati ponu participà à l'indagine. Firmà lu, per piacè.

Chì sistema operativu aduprate nantu à u servitore?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • OpenSUSE

  • SUSE

  • Unix

  • Windows

  • altru

114 utilizatori anu vutatu. 11 utilizatori si sò astenuti.

Chì versione di php aduprate nantu à u servitore?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • altru

105 utilizatori anu vutatu. 17 utilizatori si sò astenuti.

Avete mai usatu pinba?

  • nò, ma mi piacerebbe

  • nò è ùn vogliu micca

  • nò è ùn aghju micca intesu parlà d'ella

100 utilizatori anu vutatu. 14 utilizatori si sò astenuti.

Chì versione di u servitore Pinba vulete pruvà?

  • pinba_engine (motore mysql)

  • pinba2 (mutore mysql)

  • pinboard (php + mysql)

  • olegfedoseev/pinba-server (vai + OpenTSDB)

  • olegfedoseev/pinba-influxdb (vai + influxdb)

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

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

  • Scriveraghju u mio stessu

  • altru

39 utilizatori anu vutatu. 47 utilizatori si sò astenuti.

Source: www.habr.com

Add a comment