Ziwerengero ndi kuwunikira zolemba za PHP munthawi yeniyeni. ClickHouse ndi Grafana amabwera kudzathandiza Pinba

M'nkhaniyi ndikuuzani momwe mungagwiritsire ntchito pinba ndi clickhouse ndi grafana m'malo mwa pinba_engine ndi pinboard.

Pa pulojekiti ya PHP, pinba mwina ndiyo njira yokhayo yodalirika yomvetsetsa zomwe zikuchitika ndi magwiridwe antchito. Zowona, pinba kaŵirikaŵiri imagwiritsiridwa ntchito kokha pamene mavuto awonedwa kale ndipo sizikudziŵika bwino “kokumbirira” kumene.

Nthawi zambiri palibe amene amadziwa kuti kangati pa sekondi/mphindi iyi kapena script imatchedwa ndipo amayamba kukhathamiritsa "pokhudza", kuyambira malo omwe amawoneka omveka bwino.

Ena amasanthula zipika za nginx, pomwe ena amasanthula mafunso ocheperako.

Zachidziwikire, pinba sangakhale wopambana, koma pali zifukwa zingapo zomwe si polojekiti iliyonse ili nayo.

Ziwerengero ndi kuwunikira zolemba za PHP munthawi yeniyeni. ClickHouse ndi Grafana amabwera kudzathandiza Pinba

Ndipo chifukwa choyamba ndi kukhazikitsa.

Kuti muthe kupeza "kutha" kwamtundu wina kuchokera pakukhazikitsidwa kwa Pinba, ndizofunikira kwambiri kuwona ma metrics osati mphindi zomaliza zokha, komanso kwa nthawi yayitali (kuyambira masiku mpaka miyezi).

Kuti muchite izi, muyenera:

  • yonjezerani php (ndipo mungafune gawo la nginx)
  • phatikiza zowonjezera za mysql
  • khazikitsa pinboard ndikusintha cron

Chifukwa cha chidziwitso chaching'ono chokhudza Pinba, anthu ambiri ali ndi malingaliro kuti adangogwira ntchito pa PHP5 ndipo wakhala akudziwika kale, koma monga momwe tidzaonera pambuyo pake, izi siziri choncho.

Gawo loyamba ndilosavuta, zomwe muyenera kuchita ndikuyendetsa lamulo:

apt install php-pinba

Kukula uku kumapezeka m'malo osungira mpaka kuphatikiza php 7.3 ndipo simuyenera kupanga chilichonse.

Pambuyo pokhazikitsa lamulo lokhazikitsa, nthawi yomweyo timalandira zowonjezera zogwira ntchito zomwe zimasonkhanitsa ndi kutumiza ma metrics pa script iliyonse (nthawi yothamanga, kukumbukira, ndi zina zotero) mumtundu. protobuf kudzera udp mpaka 127.0.0.1:30002.

Pakadali pano palibe amene wagwira kapena kukonza mapaketi awa a UDP, koma izi sizimakhudza mwanjira iliyonse liwiro kapena kukhazikika kwa zolemba zanu za PHP.

Mpaka posachedwa, ntchito yokhayo yomwe ingagwire ndikukonza mapaketi a UDP awa pinba_engine. Kufotokozera "yosavuta komanso yachidule"Kukhazikitsa kumachepetsa chikhumbo chofuna kuwerenga ndikuwunikanso. Mndandanda wamakilomita wamtali wa zodalira uli ndi mayina a phukusi ndi mayina a mapulogalamu ndi maulalo amasamba omwe ali ndi kuyika kwawo, ndipo omwe ali ndi maulalo awoawo odalira ena. Palibe amene ali ndi nthawi kapena chikhumbo chothana ndi vuto ili.

Ndondomeko ya kuyika pinba2 sanatero makamaka mosavuta.

Mwina tsiku lina kudzakhala kotheka kukhazikitsa pinba10 ndi lamulo limodzi kapena awiri ndipo osawerengera zinthu zambiri kuti mumvetsetse momwe mungachitire, koma pakadali pano sizili choncho.

Ngati muyika pinba_engine, ndiye kuti ili ndi theka lankhondo. Pambuyo pake, popanda pinboard muyenera kudzichepetsera ku data kuchokera mphindi zingapo zapitazi, kapena muyenera kusonkhanitsa, kusunga, ndikuwonera nokha detayo. Ndibwino kuti pinboard ndi yosavuta kugwiritsa ntchito kuyika.

Zikuwoneka, chifukwa chiyani kuzunzika kotereku ngati ma metric onse ochokera ku php atumizidwa kale ku doko la udp mumtundu wa protobuf ndipo zomwe mukufunikira ndikulemba pulogalamu yomwe ingawagwire ndikuyiyika mumtundu wina wosungira? Mwachiwonekere, opanga omwe adabwera ndi lingaliro ili nthawi yomweyo adakhala pansi kuti alembe malingaliro awo, ena omwe adathera pa GitHub.

Zotsatirazi ndizofotokozera mwachidule mapulojekiti anayi otsegula omwe amasunga ma metrics posungira, momwe deta iyi ingatengedwe mosavuta ndikuwonetsedweratu, mwachitsanzo, pogwiritsa ntchito grafana.

olegfedoseev/pinba-server (November 2017)

udp seva popita yomwe imasunga ma metrics ku OpenTSDB. Mwina ngati mukugwiritsa ntchito OpenTSDB pulojekiti yanu, ndiye kuti yankho ili likugwirizana ndi inu, apo ayi ndikupangira kuti mudutse.

olegfedoseev/pinba-influxdb (June 2018)

udp seva popita, kuchokera momwemo habrowser, yomwe nthawi ino imasunga ma metrics mu InfluxDB. Ma projekiti ambiri akugwiritsa ntchito kale InfluxDB pakuwunikira, kotero yankholi litha kukhala labwino kwa iwo.

Zotsatira:

  • InfluxDB timatha phatikiza ma metric omwe mwalandira, ndikuchotsa choyambirira pakapita nthawi yodziwika.

Wotsatsa:

ClickHouse-Ninja/Proton (Januware 2019)

udp seva popita, yomwe imasunga ma metrics mu ClickHouse. Ili ndiye yankho la mnzanga. Nditazolowerana nazo pomwe ndidaganiza kuti inali nthawi yoti nditenge Pinbu ndi Clickhouse.

Zotsatira:

  • Clickhouse ndiyabwino pantchito zotere; imakupatsani mwayi wotsitsa deta kwambiri kuti mutha kusunga zonse zosaphika ngakhale popanda kuphatikiza.
  • ngati pangafunike, mutha kuphatikizira mosavuta ma metric omwe atsatira
  • okonzeka template ya grafana
  • imasunga zambiri pazowerengera nthawi

Wotsatsa:

  • chilema choopsa
  • palibe config momwe mungakhazikitsire dzina la database ndi matebulo, adilesi ndi doko la seva.
  • posunga zidziwitso, tebulo lothandizira la mtanthauzira mawu limagwiritsidwa ntchito kusunga masamba ndi maadiresi a domeni, zomwe zimasokoneza mafunso otsatirawa.
  • zinthu zina zazing'ono zomwe zimatsatira kuchokera kuchotsera koyamba

pinba-server/pinba-server (Epulo 2019)

udp seva mu php, yomwe imasunga ma metrics mu ClickHouse. Ili ndiye yankho langa, lomwe ndi chifukwa chodziwa pinba, ClickHouse ndi protobuf. Pamene ndinali kukonza gulu lonseli, ndinalemba "umboni wa lingaliro", lomwe, mosayembekezereka kwa ine, silinadye zinthu zofunika kwambiri (30 MB ya RAM ndi zosakwana 1% mwa imodzi mwa ma processor cores asanu ndi atatu), kotero ine adaganiza zogawana ndi anthu.

Ubwino ndi wofanana ndi yankho lapitalo, ndidagwiritsanso ntchito mayina anthawi zonse kuchokera ku pinba_engine yoyambirira. Ndidawonjezeranso makonzedwe omwe amakulolani kuti mutsegule ma seva angapo a pinbase nthawi imodzi kuti musunge ma metric pamatebulo osiyanasiyana - izi ndizothandiza ngati mukufuna kusonkhanitsa deta osati kuchokera ku php, komanso kuchokera ku nginx.
Zoipa - "cholakwika choopsa" ndi zinthu zazing'ono zomwe sizingagwirizane ndi inu nokha, koma yankho langa ndi "losavuta ngati slipper" ndipo lili ndi mizere pafupifupi 100 ya code, kotero wopanga PHP akhoza kusintha zomwe sakonda. mumphindi zingapo.

Momwe ntchito

UDP port 30002 imamvedwa. Mapaketi onse omwe akubwera amasankhidwa molingana ndi dongosolo la protobuf ndikuphatikizidwa. Kamodzi pa miniti, paketi imayikidwa mu clickhouse mu pinba.requests tebulo. (ma parameter onse amapangidwa mu config)

Zambiri za clickhouse

Clickhouse imathandizira makina osungira deta osiyanasiyana. Chomwe chimagwiritsidwa ntchito kwambiri ndi MergeTree.

Ngati nthawi ina mwaganiza zosunga deta yophatikizika nthawi zonse, ndi data yaiwisi yokha yomaliza, ndiye kuti mutha kupanga mawonekedwe owoneka ndi magulu, ndikuyeretsa nthawi ndi nthawi patebulo lalikulu la pinba.requests, pomwe deta yonse ikhalabe mu mawonekedwe athupi. Kuphatikiza apo, popanga tebulo la pinba.requests, mutha kufotokozera "injini = Null", ndiye kuti data yaiwisi sidzasungidwa ku diski konse, ndipo nthawi yomweyo idzakhalabe mu mawonekedwe owoneka bwino ndikusungidwa mophatikiza. . Ndimagwiritsa ntchito chiwembu ichi pamakina a nginx, chifukwa pa nginx ndili ndi zopempha zambiri za 50 kuposa pa php.

Chifukwa chake, mwafika patali ndipo sindikufuna kukusiyani theka, ndiye chotsatirachi ndikufotokozera mwatsatanetsatane kukhazikitsa ndi kukonza yankho langa ndi zonse zomwe mukufunikira, komanso misampha yomwe yayambitsa sitima imodzi. kugwa. Njira yonse yoyikamo ikufotokozedwa za Ubuntu 18.04 LTS ndi Centos 7; njirayo imatha kusiyana pang'ono pamagawidwe ena ndi mitundu.

kolowera

Ndayikamo malamulo onse ofunikira Dockerfile kuti atsogolere kubwereza kwa malangizo. Ndi mbuna zokha zomwe zidzafotokozedwe pansipa.

php-pansi

Pambuyo poika, onetsetsani kuti mu fayilo /etc/php/7.2/fpm/conf.d/20-pinba.ini mwasiya zonse zomwe mungasankhe. Pa magawo ena (monga centos) atha kuperekedwanso ndemanga.

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

clickhouse

Pakuyika, clickhouse idzakufunsani kuti muyike mawu achinsinsi kwa wogwiritsa ntchito. Mwachikhazikitso, wogwiritsa ntchitoyu akupezeka kuchokera ku ma IP onse, kotero ngati mulibe chowotcha moto pa seva yanu, onetsetsani kuti mwakhazikitsa mawu achinsinsi. Izi zitha kuchitikanso mukakhazikitsa fayilo /etc/clickhouse-server/users.xml.

Ndizofunikanso kudziwa kuti clickhouse imagwiritsa ntchito madoko angapo, kuphatikizapo 9000. Dokoli limagwiritsidwanso ntchito pa php-fpm mu magawo ena (mwachitsanzo, centos). Ngati mumagwiritsa ntchito kale dokoli, mutha kulisintha kukhala lina mu fayilo /etc/clickhouse-server/config.xml.

grafana yokhala ndi pulogalamu yowonjezera ya clickhouse

Mukakhazikitsa Grafana, gwiritsani ntchito admin wolowera ndi password admin. Mukalowa kwa nthawi yoyamba, Grafana adzakufunsani kuti muyike mawu achinsinsi atsopano.

Kenako, pitani ku "+" -> menyu yolowera ndikuwonetsa nambala ya dashboard yoti mutenge 10011. Ndinakonzekera ndikuyika bolodi ili kuti musadzipange nokha.

Grafana imathandizira kugwira ntchito ndi clickhouse kudzera pulogalamu yowonjezera ya chipani chachitatu, koma Grafana alibe zidziwitso za mapulagini a chipani chachitatu (pakhala tikiti ya izi kwa zaka zingapo).

pinba-server

Kuyika protobuf ndi libevent ndizosankha, koma zimathandizira magwiridwe antchito a pinba-server. Ngati muyika pinba-server mu foda ina osati / opt, ndiye kuti mudzafunikanso kukonza systemd script fayilo.

pinba module ya nginx

Kuti mupange gawo, mufunika ma code amtundu womwewo wa nginx omwe adayikidwa kale pa seva yanu, komanso zosankha zomwezo zophatikiza, apo ayi kumangako kudzakhala kopambana, koma polumikiza gawolo, cholakwika chidzaponyedwa. "moduleyi sigwirizana ndi binary." Zosankha zophatikizira zitha kuwonedwa pogwiritsa ntchito lamulo la nginx -V

Mahaki amoyo

Masamba anga onse amagwira ntchito pa https. Gawo la schema limakhala lopanda tanthauzo, chifukwa chake ndimagwiritsa ntchito kulekanitsa intaneti / console.

M'malemba omwe amapezeka pa intaneti ndimagwiritsa ntchito:

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

Ndipo muzolemba za console (mwachitsanzo, zolemba za cron):

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

Mu dashboard yanga ku Grafana pali chosinthira pa intaneti/chowongolera kuti muwonere ziwerengero padera.

Mutha kutumizanso ma tag anu ku Pinba, mwachitsanzo:

pinba_tag_set('country', $countryCode);

Ndizomwezo.

Chonde yankhani zisankho zomwe zili pansipa.

Monga mwachizolowezi, ndimakuchenjezani kuti sindikulangizani kapena kuthandizira kudzera pa mauthenga aumwini pa Habr ndi malo ochezera a pa Intaneti.

Pangani tikiti pa Github.

Komanso chonde thandizirani ndi zokonda Chingelezi Baibulo Nkhani iyi pa reddit.

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Ndi OS yanji yomwe mukugwiritsa ntchito pa seva?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • Tsegulani

  • SWITZERLAND

  • Unix

  • Windows

  • zina

Ogwiritsa 114 adavota. Ogwiritsa ntchito 11 adakana.

Ndi mtundu wanji wa php womwe mukugwiritsa ntchito pa seva?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • zina

Ogwiritsa 105 adavota. Ogwiritsa ntchito 17 adakana.

Kodi mudagwiritsapo ntchito pinba?

  • inde

  • ayi, koma ndikanafuna

  • ayi ndipo sindikanafuna

  • ayi ndipo sindinamvepo za iye

Ogwiritsa 100 adavota. Ogwiritsa ntchito 14 adakana.

Ndi mtundu wanji wa seva ya Pinba womwe mungafune kuyesa?

  • pinba_engine (mysql engine)

  • pinba2 (mysql injini)

  • pinboard (php + mysql)

  • olegfedoseev/pinba-server (pitani + OpenTSDB)

  • olegfedoseev/pinba-influxdb (pitani + influxdb)

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

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

  • Ndilemba ndekha

  • zina

Ogwiritsa 39 adavota. Ogwiritsa ntchito 47 adakana.

Source: www.habr.com

Kuwonjezera ndemanga