Selles artiklis rÀÀgin, kuidas kasutada pinbat koos ClickHouse'i ja Grafana'ga, asendades pinba_engine'i ja pinboardi.
PHP-projektis on pinba tÔenÀoliselt ainus usaldusvÀÀrne viis mÔista, mis toimub jÔudlusega. TÔsi, tavaliselt rakendatakse pinbat ainult siis, kui juba on probleeme ja ei ole selge, kust alustada.
Sageli ei tea keegi, kui sageli kutsutakse kindlat skripti esile sekundis/minuutis ning optimiseerimine algab âkatseliseltâ, alustades tundlikest kohtadest.
MĂ”ni analĂŒĂŒsib nginx'i logisid, kuid teine jĂ€lgib aeglaseid pĂ€ringuid andmebaasis.
Muidugi, pinba ei oleks liialdatud, kuid on mitmeid pÔhjuseid, miks see ei ole kaugeltki igas projektis.
Esimene pÔhjus on installimine.
Kuna pinba juurutamisest mingi âtĂ”hususeâ saamiseks on vĂ€ga soovitav nĂ€ha nĂ€itajaid mitte ainult viimase minuti jooksul, vaid ka pikema aja jooksul (pĂ€evadest kuudeni).
Selleks on vajalik:
- paigaldada php jaoks laiendus (ja vÔib-olla soovite nginx'i moodulit)
- kompileerida mysql'i jaoks laiendus
- paigaldada pinboard ja seadistada cron
Kuna piiratud teavet Pinba kohta, on paljudel jÀÀnud mulje, et see töötas ainult php5 all ja jĂ€i ammu aegunuks, kuid nagu me jĂ€rgnevalt nĂ€eme â see ei ole tĂ”si.
Esimene samm on kÔige lihtsam, peate lihtsalt kÀivitama jÀrgmise kÀsu:
apt install php-pinbaTegemist on tÀiustatud laiendusega, mis on saadaval kuni php 7.3 sisse arvatud ja te ei pea midagi kompileerima.
PÀrast paigaldamiskÀsku saame kohe töötava laienduse, mis kogub ja saadab iga skripti metrikat (tÀitmise aeg, mÀlu jms) formaadis UDP-le aadressile 127.0.0.1:30002.
Praegu keegi neid UDP-pakette ei pĂŒĂŒa ega töötle, kuid see ei mĂ”juta teie PHP-skriptide kiirus ega stabiilsust.
Kuni hiljuti oli ainus rakendus, mis suutis neid UDP-pakette pĂŒĂŒda ja töödelda, . Kirjeldus â» installimine tekitab soovi seda enam mitte lugeda ega sĂŒveneda. Kilomeetrite pikkustes sĂ”ltuvuste nimekirjades on nii paketide nimed kui ka programmide nimed ning lingid nende eraldi lehtedele koos installatsioonidega, ja neil on omakorda lingid teistele sĂ”ltuvustele. Sellega tegelemiseks ei jĂ€tku kellelgi aega ega soovi.
Installimisprotsess ei muutunud .
VĂ”imalik, et kunagi saab pinba10 installida ĂŒhe vĂ”i kahe kĂ€suga, lugemata tohutut materjali, et aru saada, kuidas seda teha, kuid praegu ei ole see nii.
Kui te ikkagi installisite pinba_engine'i, siis see on alles pool tööst. Ilma peate piirduma ainult viimase mÔne minuti andmetega vÔi koguma, salvestama ja visualiseerima andmeid ise. Hea, et pinboard'i installimine on piisavalt lihtne. .
Tundub, miks peaksime seetĂ”ttu kannatama, kui kĂ”ik PHP meetrikad juba saadetakse UDP-porti Protobuf formaadis ja ainus, mis on vajalik, on kirjutada rakendus, mis neid pĂŒĂŒab ja salvestab mĂ”nda ladustamisruumi? Ilmselt need arendajad, kellele see mĂ”te tuli, asusid kohe kirjutama oma versioone, millest osa jĂ”udis GitHubi.
JĂ€rgnevalt on ĂŒlevaade neljast avatud lĂ€htekoodiga projektist, mis salvestavad meetrikad ladustamisruumidesse, millest need andmed on lihtne vĂ€lja vĂ”tta ja visualiseerida, nĂ€iteks Grafana abil.
(november 2017)
UDP server Go keeles, mis salvestab meetrikad OpenTSDB-sse. Kui OpenTSDB-d juba teie projektis kasutatakse, siis vÔib see lahendus teile sobida, muul juhul soovitan mööda minna.
(juuni 2018)
UDP server Go keeles, sama , mis seekord salvestab meetrikad InfluxDB-sse. Paljudes projektides kasutatakse juba praegu InfluxDB-d jÀlgimiseks, seega vÔib see lahendus neile hÀsti sobida.
Plussid:
- InfluxDB koondada saadud meetrikad, ja originaal kustutada mÀÀratud aja jooksul.
Miinused:
- see lahendus ei salvesta teavet ajataimerite kohta.
- InfluxDB salvestab veebilehtede aadresse siltidena ning kui teil on palju unikaalseid lehe aadresse, vÔib see viia Teatud hetkel ta "«. ()
(jaanuar 2019)
udp server go-s, mis salvestab metrikaid ClickHouse'i. See lahendus on minu sĂ”bra oma. Just pĂ€rast sellega tutvumist otsustasin, et on aeg pĂŒhenduda pinbale ja ClickHouse'ile.
Plussid:
- ClickHouse sobib selliste ĂŒlesannete jaoks ideaalselt, see vĂ”imaldab andmeid nii kokku suruda, et saate salvestada kĂ”ik toored andmed isegi ilma agregatsioonideta.
- Kui on vajadus, saate kergesti saadud meetrikaid agregatsiooni alla viia.
- Valmis ĆĄabloon Grafanale.
- Salvestab teavet ajas
Miinused:
- Puudub konfigureerimise fail, kus oleks vÔimalik seadistada andmebaasi ja tabelite nimed, serveri aadress ja port.
- Toores andmete salvestamisel kasutatakse abiteabelt sÔnastikku veebilehtede ja domeenide aadresside salvestamiseks, mis muudab edasised pÀringud keeruliseks.
- Muud pisiasjad, mis tulenevad esimesest miinusest.
(aprill 2019)
PHP-l pĂ”hinev UDP server, mis salvestab mÔÔdikud ClickHouse'i. See on minu lahendus, mis on tekkinud tutvumisest pinba, ClickHouse'i ja protobuf'iga. Kui ma sellega tegeledes proovin, siis kirjutasin "proof of concept", mis ĂŒllatas mind, kuna ei kasutanud mĂ€rkimisvÀÀrseid ressursse (30 MB RAM'i ja vĂ€hem kui 1% ĂŒheksast protsessorituumast), seetĂ”ttu otsustasin selle avalikkusega jagada.
Plussid â samad, mis eelnevas lahenduses, ja olen kasutanud tuttavaid nimetusi originaalsest pinba_engine'ist. Samuti olen lisanud konfi, mis vĂ”imaldab kĂ€ivitada mitu pinba serveri instantsi korraga, et salvestada mÔÔdikud erinevatesse tabelitesse â see on kasulik, kui soovite koguda andmeid mitte ainult PHP-st, vaid ka Nginx'ist.
Miinused â "fatiline puudus" ning vĂ€ikesed detailid, mis ei pruugi teid rahuldada, kuid minu lahendus on "lihtne nagu toss" ja koosneb vaid umbes 100 koodireast, nii et iga PHP arendaja saab mĂ”ne minutiga muuta seda, mis ei meeldi.
Tööprintsiip
Kuuldub udp-port 30002. KĂ”ik sissetulevad paketid dekodeeritakse vastavalt protobuf-skeemile ja kogutakse. Iga minuti jĂ€rel tehakse klikhausse ĂŒhe partii sisestamine tabelisse pinba.requests. (kĂ”ik parameetrid on seadistatavad )
Veidi klikhausest
Clickhouse toetab erinevaid andmete salvestamise mootorite. KÔige sagedamini kasutatav on MergeTree.
Kui te mingil hetkel otsustate hoida kogutud andmeid igavesti ja toorsed andmed ainult viimase aja jaoks, siis saate luua materialiseeritud vaate grupiga ning puhastada pĂ”hitahti pinba.requests regulaarselt, samas kui kĂ”ik andmed jÀÀvad materialiseeritud vaatesse. Veelgi enam, kui loote tabeli pinba.requests, saate mÀÀrata âengine = Nullâ, siis toored andmed ei salvestata ĂŒldse kettale, kuid need jĂ”uavad ikkagi materialiseeritud vaatesse ja salvestatakse kogutuna. Sellist skeemi kasutan nginx'i mÔÔdikute jaoks, kuna nginx'il on mul 50 korda rohkem pĂ€ringuid kui php-l.
Nii, olete lĂ€inud pika tee ja ma ei tahaks teid pooleli jĂ€tta, seega jĂ€rgneb ĂŒksikasjalik juhend minu lahenduse installimisest ja seadistamisest, samuti kĂ”ik, mis teile vajalik, ning takistused, mille pĂ€rast mitte ĂŒkski laev ei purunenud. Kogu installimisprotsess on kirjeldatud Ubuntu 18.04 LTS ja CentOS 7 jaoks, teistel distributsioonidel ja versioonidel vĂ”ib protsess veidi erineda.
Installeerimine
KÔik vajalikud kÀsud olen kokku pannud juhiste kordamise hÔlbustamiseks. Allpool on ainult takistused, millega vÔib kokku puutuda.
php-pinba
PÀrast installimist veenduge, et failis /etc/php/7.2/fpm/conf.d/20-pinba.ini on kÔik valikud avatud. MÔnes distributsioonis (nÀiteks CentOS) vÔivad need olla suletud.
extension=pinba.so
pinba.enabled=1
pinba.server=127.0.0.1:30002clickhouse
Installimise ajal kĂŒsib ClickHouse teilt parooli seadmist default kasutajale. Vaikimisi on see kasutaja kergesti ligipÀÀsetav kĂ”igilt IP-delt, seega kui teil ei ole serveris tulemĂŒĂŒri, seadke kindlasti parool. Seda on vĂ”imalik teha ka pĂ€rast installimist failis /etc/clickhouse-server/users.xml.
Tasub tÀhele panna, et clickhouse kasutab mitmeid porte, sealhulgas 9000. Seda porti kasutatakse mÔnedes distributsioonides (nÀiteks CentOS) ka php-fpm-iks. Kui see port on juba kasutusel, saate selle config.xml failis teiseks muuta.
grafana plugina jaoks clickhouse'ile
PÀrast grafana installimist kasutage kasutajanime admin ja parooli admin. Esmakordsel sisenemisel palub grafana teil mÀÀrata uus parool.
SeejĂ€rel lĂ€heme menĂŒĂŒsse â+â -> import ja nĂ€itame importimiseks dashboardi numbrit. . Olen selle dashboardi teie jaoks ette valmistanud ja ĂŒles laadinud, et te ei peaks seda uuesti ise tegema.
Grafana toetab clickhouse'iga töötamist kolmanda osapoole plugina kaudu, kuid kolmanda osapoole pluginatega ei tööta grafana hÀiret teavitused (pilet selle kohta on juba mitu aastat ootel).
pinba-server
Protobufi ja libeventi paigaldamine ei ole kohustuslik, kuid parandab pinba-serveri jÔudlust. Kui installite pinba-serveri kausta, mis on erinev /opt, tuleb teil ka systemd skripti failis muudatusi teha. faili.
pinba-modul nginx'ile
Mooduli kompileerimiseks on vajalikud sama versiooniga nginx-i allikafailid, mis on juba teie serveris, samuti samad kompileerimisvalikud, muidu lĂ€bib kogumine edukalt, kuid mooduli ĂŒhendamisel ilmneb tĂ”rge, et "moodul on binaarselt ĂŒhilduv". Kompileerimisvalikuid saab vaadata kĂ€su nginx -V abil.
Elu nipid
KĂ”ik minu saidid töötavad ainult https-reĆŸiimis. Schema vĂ€li kaotab oma tĂ€henduse, seetĂ”ttu kasutan seda web/console lahutamiseks.
Veebis saadaval olevates skriptides kasutan:
if (ini_get('pinba.enabled')) {
pinba_schema_set('web');
}
Ja konsoolis (nÀiteks cron-skriptides):
if (ini_get('pinba.enabled')) {
pinba_schema_set('console');
}Minu Grafana armatuurlaud sisaldab web/console lĂŒlitit statistika eraldi vaatamiseks.
Lisaks saab Pinbasse saata oma silte, nÀiteks:
pinba_tag_set('country', $countryCode);Sellega on kÔik.
Palun vastake artikli alla pandud kĂŒsimustele.
Traditsiooniliselt hoiatab, et ma ei anna nÔu ega aita lÀbi Habra ja sotsiaalmeedia isiklikes sÔnumites.
Esitage pilet GitHubis.
Samuti on palve toetada meeldimistega selle artikli .
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Millist operatsioonisĂŒsteemi serveris kasutate?
Ubuntu
CentOS
Debian
Gentoo
Red Hat
Fedora
OpenSUSE
SuSE
Unix
Windows
muu
HÀÀletas 114 kasutajat. 11 kasutajat jÀi erapooletuks.
Millist php versiooni te serveris kasutate?
7.3
7.2
7.1
7.0
5
muu
HÀÀletas 105 kasutajat. 17 kasutajat jÀi erapooletuks.
Kas olete kunagi pinbat kasutanud?
jah
ei, aga tahaksin
ei ja ei tahaks
ei ja ei ole sellest kuulnud
HÀÀletas 100 kasutajat. 14 kasutajat jÀi erapooletuks.
Millist pinba serveri versiooni sooviksite proovida?
pinba_engine (mysql engine)
pinba2 (mysql engine)
pinboard (php + mysql)
olegfedoseev/pinba-server (go + OpenTSDB)
olegfedoseev/pinba-influxdb (go + influxdb)
pinba-server/pinba-server (go + clickhouse)
pinba-server/pinba-server (php + clickhouse)
kirjutan enda omi
muu
HÀÀletas 39 kasutajat. 47 kasutajat jÀi erapooletuks.
Allikas: habr.com
