ProHoster > Blog > Amministrazione > Statistiche è monitoraghju di script PHP in tempu reale. ClickHouse è Grafana vanu à l'aiutu di Pinba
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à.
È 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.
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.
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à.
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.
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
ù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.
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.
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.