Awọn iṣiro ati ibojuwo ti awọn iwe afọwọkọ PHP ni akoko gidi. ClickHouse ati Grafana wa si iranlọwọ ti Pinba

Ninu nkan yii Emi yoo sọ fun ọ bi o ṣe le lo pinba pẹlu ile-iṣẹ tẹ ati grafana dipo pinba_engine ati pinboard.

Lori iṣẹ akanṣe PHP kan, pinba jẹ boya ọna igbẹkẹle nikan lati loye ohun ti n ṣẹlẹ pẹlu iṣẹ ṣiṣe. Lootọ, pinba nigbagbogbo ni imuse nikan nigbati awọn iṣoro ba ti ṣakiyesi tẹlẹ ati pe ko ṣe afihan “ibi ti lati walẹ.”

Nigbagbogbo ko si ẹnikan ti o ni imọran iye igba fun iṣẹju kan / iṣẹju yii tabi iwe afọwọkọ yẹn ati pe wọn bẹrẹ lati mu dara si “nipasẹ ifọwọkan”, bẹrẹ lati awọn aaye wọnyẹn ti o dabi ọgbọn diẹ sii.

Diẹ ninu ṣe itupalẹ awọn akọọlẹ nginx, lakoko ti awọn miiran ṣe itupalẹ awọn ibeere data data lọra.

Nitoribẹẹ, pinba kii yoo jẹ superfluous, ṣugbọn awọn idi pupọ lo wa ti kii ṣe gbogbo iṣẹ akanṣe ni.

Awọn iṣiro ati ibojuwo ti awọn iwe afọwọkọ PHP ni akoko gidi. ClickHouse ati Grafana wa si iranlọwọ ti Pinba

Ati idi akọkọ ni fifi sori ẹrọ.

Ni ibere lati gba diẹ sii tabi kere si diẹ ninu awọn iru "igbẹ" lati imuse ti Pinba, o jẹ wuni pupọ lati wo awọn metiriki kii ṣe fun awọn iṣẹju to kẹhin nikan, ṣugbọn tun ni igba pipẹ (lati awọn ọjọ si awọn osu).

Fun eyi o nilo:

  • fi sori ẹrọ itẹsiwaju fun php (ati pe o le fẹ module kan fun nginx)
  • ṣajọ itẹsiwaju fun mysql
  • fi sori ẹrọ pinboard ati tunto cron

Nitori iye kekere ti alaye nipa Pinba, ọpọlọpọ awọn eniyan ni imọran pe o ṣiṣẹ nikan lori PHP5 ati pe o ti pẹ ti o ti kọja, ṣugbọn bi a ti rii nigbamii, eyi kii ṣe ọran naa.

Igbesẹ akọkọ ni o rọrun julọ, gbogbo ohun ti o nilo lati ṣe ni ṣiṣe aṣẹ naa:

apt install php-pinba

Ifaagun yii wa ninu awọn ibi ipamọ ti o to ati pẹlu php 7.3 ati pe iwọ ko nilo lati ṣajọ ohunkohun.

Lẹhin ṣiṣe pipaṣẹ fifi sori ẹrọ, a gba itẹsiwaju ṣiṣẹ lẹsẹkẹsẹ ti o gba ati firanṣẹ awọn metiriki fun iwe afọwọkọ kọọkan (akoko ṣiṣe, iranti, ati bẹbẹ lọ) ni ọna kika protobuf nipasẹ udp to 127.0.0.1:30002.

Nitorinaa ko si ẹnikan ti o mu tabi ṣe ilana awọn apo-iwe UDP wọnyi, ṣugbọn eyi kii ṣe ni eyikeyi ọna ni odi ni ipa lori iyara tabi iduroṣinṣin ti awọn iwe afọwọkọ PHP rẹ.

Titi di aipẹ, ohun elo kan ṣoṣo ti o le mu ati ilana awọn apo-iwe UDP wọnyi jẹ pinba_engine. Apejuwe"o rọrun ati ṣoki ti"Fififi sori ẹrọ ṣe irẹwẹsi ifẹ lati ka lailai ki o tun wa sinu rẹ lẹẹkansi. Awọn atokọ gigun-kilomita ti awọn igbẹkẹle ni awọn orukọ awọn idii mejeeji ati awọn orukọ awọn eto ati awọn ọna asopọ si awọn oju-iwe kọọkan pẹlu fifi sori wọn, ati pe awọn ni awọn ọna asopọ tiwọn si awọn igbẹkẹle miiran. Ko si ẹnikan ti o ni akoko tabi ifẹ lati koju inira yii.

Ilana fifi sori ẹrọ pinba2 ko ṣe paapa rọrun.

Boya ni ọjọ kan o yoo ṣee ṣe lati fi sori ẹrọ pinba10 pẹlu awọn aṣẹ kan tabi meji ati pe ko ni lati ka opo ohun elo lati loye bi o ṣe le ṣe, ṣugbọn fun bayi eyi kii ṣe ọran naa.

Ti o ba fi pinba_engine sori ẹrọ, lẹhinna eyi jẹ idaji ogun nikan. Lẹhinna, laisi pinboard iwọ yoo ni lati fi opin si ararẹ si data lati awọn iṣẹju diẹ to kẹhin, tabi iwọ yoo ni lati ṣajọpọ, fipamọ, ati foju inu wo data naa funrararẹ. O dara pe pinboard jẹ ohun rọrun lati lo fifi sori.

Yoo dabi pe, kilode ti iru ijiya ti gbogbo awọn metiriki lati php ti firanṣẹ tẹlẹ si ibudo udp ni ọna kika protobuf ati gbogbo ohun ti o nilo ni lati kọ ohun elo kan ti yoo mu wọn ki o fi wọn sinu iru ibi ipamọ kan? O han ni, awọn olupilẹṣẹ ti o wa pẹlu imọran yii lẹsẹkẹsẹ joko lati kọ awọn imọran tiwọn, diẹ ninu eyiti o pari lori GitHub.

Atẹle jẹ awotẹlẹ ti awọn iṣẹ akanṣe orisun ṣiṣi mẹrin ti o ṣafipamọ awọn metiriki ni ibi ipamọ, lati inu eyiti data yii le ni irọrun gba pada ati wiwo, fun apẹẹrẹ, ni lilo grafana.

olegfedoseev / pinba-server (Oṣu kọkanla ọdun 2017)

olupin udp ti n lọ ti o fipamọ awọn metiriki si OpenTSDB. Boya ti o ba ti lo OpenTSDB tẹlẹ ninu iṣẹ akanṣe rẹ, lẹhinna ojutu yii yoo baamu fun ọ, bibẹẹkọ Mo ṣeduro gbigbe nipasẹ rẹ.

olegfedoseev / pinba-influxdb (Oṣu kẹfa ọdun 2018)

udp olupin lori lọ, lati kanna habrowser, eyiti akoko yii tọju awọn metiriki ni InfluxDB. Ọpọlọpọ awọn iṣẹ akanṣe ti nlo InfluxDB tẹlẹ fun ibojuwo, nitorinaa ojutu yii le jẹ pipe fun wọn.

Aleebu:

  • InfluxDB ti o faye gba ṣajọpọ awọn metiriki ti o gba, ki o paarẹ atilẹba rẹ lẹhin akoko kan pato.

Konsi:

ClickHouse-Ninja/Proton (Oṣu Kini Ọdun 2019)

olupin udp ti n lọ, eyiti o fipamọ awọn metiriki ni ClickHouse. Eyi ni ojutu ọrẹ mi. O je lẹhin nini acquainted pẹlu rẹ ti mo ti pinnu wipe o je akoko lati ya lori Pinbu ati Clickhouse.

Aleebu:

  • Clickhouse jẹ apẹrẹ fun iru awọn iṣẹ-ṣiṣe; o gba ọ laaye lati compress data pupọ ti o le fipamọ gbogbo data aise paapaa laisi awọn akojọpọ
  • ti o ba nilo, o le ni rọọrun ṣajọpọ awọn metiriki Abajade
  • setan-ṣe awoṣe fun grafana
  • fipamọ alaye lori awọn aago

Konsi:

  • buburu abawọn
  • ko si atunto ninu eyiti o le tunto orukọ data data ati awọn tabili, adirẹsi ati ibudo olupin naa.
  • nigbati o ba tọju data aise, tabili iwe-itumọ oluranlọwọ ni a lo lati fipamọ oju-iwe ati awọn adirẹsi agbegbe, eyiti o diju awọn ibeere atẹle
  • awọn ohun kekere miiran ti o tẹle lati iyokuro akọkọ

pinba-server / pinba-server (Oṣu Kẹrin ọdun 2019)

olupin udp ni php, eyiti o fipamọ awọn metiriki ni ClickHouse. Eyi ni ojutu mi, eyiti o jẹ abajade ti nini lati mọ pinba, ClickHouse ati protobuf. Lakoko ti Mo n ṣe yiyan gbogbo opo yii, Mo kọ “ẹri ti imọran”, eyiti, lairotẹlẹ fun mi, ko jẹ awọn orisun pataki (30 MB ti Ramu ati pe o kere ju 1% ti ọkan ninu awọn ohun kohun ero isise mẹjọ), nitorinaa MO pinnu lati pin pẹlu gbogbo eniyan.

Awọn anfani jẹ kanna bi ojutu ti tẹlẹ, Mo tun lo awọn orukọ deede lati atilẹba pinba_engine. Mo tun ṣafikun atunto kan ti o fun ọ laaye lati ṣe ifilọlẹ ọpọlọpọ awọn apẹẹrẹ olupin pinbase ni ẹẹkan lati ṣafipamọ awọn metiriki ni awọn tabili oriṣiriṣi - eyi wulo ti o ba fẹ gba data kii ṣe lati php nikan, ṣugbọn tun lati nginx.
Awọn aila-nfani - “aṣiṣe apaniyan” ati awọn nkan kekere yẹn ti kii yoo ba ọ fun tikalararẹ, ṣugbọn ojutu mi jẹ “o rọrun bi slipper” ati pe o ni awọn laini koodu 100 nikan, nitorinaa eyikeyi olupilẹṣẹ PHP le yipada ohun ti ko fẹran ni a tọkọtaya ti iseju.

Bi o ti ṣiṣẹ

UDP ibudo 30002 ti wa ni tẹtisi si Gbogbo awọn apo-iwe ti nwọle ti wa ni iyipada ni ibamu si ilana ilana ati akojọpọ. Lẹẹkan ni iṣẹju kan, a fi soso kan sinu ile tẹ sinu tabili pinba.requests. (gbogbo awọn paramita ti wa ni tunto ni atunto)

Diẹ diẹ nipa ile-iṣẹ clickhouse

Clickhouse ṣe atilẹyin awọn ẹrọ ipamọ data oriṣiriṣi. Ọkan ti o wọpọ julọ ni MergeTree.

Ti o ba ti ni diẹ ninu awọn ojuami pinnu lati fi awọn akojo data fun gbogbo akoko, ati aise data nikan fun awọn ti o kẹhin akoko, ki o si le ṣẹda kan materialized wiwo pẹlu kikojọpọ, ati ki o lorekore nu akọkọ pinba.requests tabili, nigba ti gbogbo awọn data yoo wa nibe ninu awọn. materialized wiwo. Pẹlupẹlu, nigbati o ba ṣẹda tabili pinba.requests, o le pato “engine = Null”, lẹhinna data aise kii yoo wa ni fipamọ si disk rara, ati ni akoko kanna yoo tun pari ni wiwo ohun elo ati ki o fipamọ ni akojọpọ. . Mo lo ero yii fun awọn metiriki nginx, nitori lori nginx Mo ni awọn ibeere 50 diẹ sii ju lori php.

Nitorinaa, o ti wa ọna pipẹ ati pe Emi kii yoo fẹ lati fi ọ silẹ ni agbedemeji, nitorinaa ohun ti o tẹle ni alaye alaye ti fifi sori ẹrọ ati iṣeto ni ojutu mi ati ohun gbogbo ti o nilo, ati awọn ọfin ti o fa diẹ sii ju ọkan lọ. lati jamba. Gbogbo ilana fifi sori ẹrọ ni a ṣapejuwe fun Ubuntu 18.04 LTS ati Centos 7; ilana naa le yatọ diẹ lori awọn ipinpinpin ati awọn ẹya miiran.

eto

Mo fi gbogbo awọn ofin pataki sinu dockerfile lati dẹrọ reproducibility ti awọn ilana. Nikan awọn pitfalls yoo wa ni apejuwe ni isalẹ.

php-pinba

Lẹhin fifi sori ẹrọ, rii daju pe ninu faili /etc/php/7.2/fpm/conf.d/20-pinba.ini faili ti o ni uncommented gbogbo awọn aṣayan. Lori diẹ ninu awọn pinpin (fun apẹẹrẹ centos) wọn le ṣe asọye.

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

tẹ ile

Lakoko fifi sori ẹrọ, tẹ ile yoo beere lọwọ rẹ lati ṣeto ọrọ igbaniwọle kan fun olumulo aiyipada. Nipa aiyipada, olumulo yii wa lati gbogbo awọn IP, nitorina ti o ko ba ni ogiriina lori olupin rẹ, rii daju pe o ṣeto ọrọ igbaniwọle kan fun rẹ. Eyi tun le ṣee ṣe lẹhin fifi sori ẹrọ ni faili /etc/clickhouse-server/users.xml.

O tun ye ki a kiyesi wipe clickhouse nlo orisirisi awọn ebute oko, pẹlu 9000. Eleyi ibudo ti wa ni tun lo fun php-fpm ni diẹ ninu awọn pinpin (fun apẹẹrẹ, centos). Ti o ba ti lo ibudo yii tẹlẹ, o le yipada si omiiran ninu faili /etc/clickhouse-server/config.xml.

grafana pẹlu clickhouse itanna

Lẹhin fifi Grafana sori ẹrọ, lo abojuto iwọle ati abojuto ọrọ igbaniwọle. Nigbati o ba wọle fun igba akọkọ, Grafana yoo beere lọwọ rẹ lati ṣeto ọrọ igbaniwọle tuntun kan.

Nigbamii, lọ si “+” -> akowọle agbewọle ati tọka nọmba dasibodu fun gbigbe wọle 10011. Mo mura ati gbe dasibodu yii sori ẹrọ ki o maṣe ni lati tun ṣe funrararẹ.

Grafana ṣe atilẹyin ṣiṣẹ pẹlu ile titẹ nipasẹ ohun itanna ẹni-kẹta, ṣugbọn Grafana ko ni awọn itaniji fun awọn afikun ẹni-kẹta (tiketi kan wa fun eyi fun ọpọlọpọ ọdun).

pinba-olupin

Fifi protobuf ati libervent jẹ iyan, ṣugbọn mu pinba-server išẹ. Ti o ba fi pinba-server sinu folda miiran yatọ si / ijade, lẹhinna o yoo tun nilo lati ṣe atunṣe systemd akosile faili.

pinba module fun nginx

Lati ṣajọ module kan, o nilo awọn koodu orisun ti ẹya kanna ti nginx ti o ti fi sii tẹlẹ lori olupin rẹ, ati awọn aṣayan akopọ kanna, bibẹẹkọ kọ yoo ṣaṣeyọri, ṣugbọn nigbati o ba so module pọ, aṣiṣe yoo jabọ pe. "Module naa ko ni ibaramu alakomeji." Awọn aṣayan akopọ le ṣee wo ni lilo pipaṣẹ nginx -V

Awọn gige aye

Gbogbo awọn aaye mi ṣiṣẹ nikan lori https. Aaye ero naa di asan, nitorina ni mo ṣe lo lati ya wẹẹbu/console ya sọtọ.

Ninu awọn iwe afọwọkọ ti o wa lati oju opo wẹẹbu Mo lo:

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

Ati ninu awọn iwe afọwọkọ console (fun apẹẹrẹ, awọn iwe afọwọkọ cron):

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

Ninu dasibodu mi ni Grafana oju opo wẹẹbu/console yipada wa fun awọn iṣiro wiwo lọtọ.

O tun le fi awọn afi rẹ ranṣẹ si Pinba, fun apẹẹrẹ:

pinba_tag_set('country', $countryCode);

Gbogbo ẹ niyẹn.

Jọwọ dahun awọn idibo ni isalẹ nkan naa.

Gẹgẹbi igbagbogbo, Mo kilọ fun ọ pe Emi ko ni imọran tabi ṣe iranlọwọ nipasẹ awọn ifiranṣẹ ti ara ẹni lori Habr ati awọn nẹtiwọọki awujọ.

Ṣẹda tikẹti lori Github.

Tun jọwọ ṣe atilẹyin pẹlu awọn ayanfẹ English version Arokọ yi lori reddit.

Awọn olumulo ti o forukọsilẹ nikan le kopa ninu iwadi naa. wọle, Jowo.

OS wo ni o nlo lori olupin naa?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • OpenSUSE

  • SUSE

  • UNIX

  • Windows

  • omiiran

114 olumulo dibo. 11 olumulo abstained.

Ẹya php wo ni o nlo lori olupin naa?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • omiiran

105 olumulo dibo. 17 olumulo abstained.

Njẹ o ti lo pinba lailai?

  • bẹẹni

  • rara, ṣugbọn Emi yoo fẹ

  • rara ati pe Emi kii yoo fẹ

  • ko si ti ko si ti gbọ ti rẹ

100 olumulo dibo. 14 olumulo abstained.

Iru olupin Pinba wo ni iwọ yoo fẹ lati gbiyanju?

  • pinba_engine (ẹnjini mysql)

  • pinba2 (ẹnjini mysql)

  • pinboard (php + mysql)

  • olegfedoseev/pinba-server (lọ + OpenTSDB)

  • olegfedoseev/pinba-influxdb (lọ + influxdb)

  • pinba-server/pinba-server (lọ + tẹ ile)

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

  • Emi yoo kọ temi funrararẹ

  • omiiran

39 olumulo dibo. 47 olumulo abstained.

orisun: www.habr.com

Fi ọrọìwòye kun