Ƙididdiga da kulawa da rubutun PHP a cikin ainihin lokaci. ClickHouse da Grafana sun zo don taimakon Pinba

A cikin wannan labarin zan gaya muku yadda ake amfani da pinba tare da dannawa da grafana maimakon pinba_engine da pinboard.

A kan aikin PHP, pinba ita ce hanya mafi aminci don fahimtar abin da ke faruwa tare da aiki. Gaskiya ne, ana aiwatar da pinba ne kawai lokacin da aka riga an lura da matsaloli kuma ba a bayyana "inda za a tono ba."

Sau da yawa babu wanda ke da ra'ayin sau nawa a cikin sakan daya/minti ana kiran wannan ko wannan rubutun kuma suna fara haɓaka "ta taɓawa", suna farawa daga wuraren da suke da ma'ana.

Wasu suna nazarin rajistan ayyukan nginx, yayin da wasu ke nazarin jinkirin tambayoyin bayanai.

Tabbas, pinba ba zai zama abin ban mamaki ba, amma akwai dalilai da yawa da ya sa ba kowane aikin yake da shi ba.

Ƙididdiga da kulawa da rubutun PHP a cikin ainihin lokaci. ClickHouse da Grafana sun zo don taimakon Pinba

Kuma dalili na farko shine shigarwa.

Don ƙarin ko žasa samun wani nau'i na "share" daga aiwatar da Pinba, yana da matukar sha'awar ganin ma'auni ba kawai na minti na ƙarshe ba, amma har tsawon lokaci (daga kwanaki zuwa watanni).

Don yin wannan, kuna buƙatar:

  • shigar da tsawo don php (kuma kuna iya son tsarin nginx)
  • tara tsawo don mysql
  • shigar da allo kuma saita cron

Saboda ƙananan bayanai game da Pinba, mutane da yawa suna tunanin cewa yana aiki akan PHP5 ne kawai kuma ya daɗe ya zama al'ada, amma kamar yadda za mu gani daga baya, wannan ba haka ba ne.

Mataki na farko shine mafi sauƙi, duk abin da kuke buƙatar yi shine gudanar da umarni:

apt install php-pinba

Wannan tsawo yana samuwa a cikin ma'ajin ajiya har zuwa php 7.3 kuma ba kwa buƙatar tattara wani abu.

Bayan aiwatar da umarnin shigarwa, nan da nan muna karɓar tsawo na aiki wanda ke tattarawa da aika awo don kowane rubutun (lokacin gudu, ƙwaƙwalwar ajiya, da sauransu) a cikin tsari. protobuf ta hanyar udp zuwa 127.0.0.1:30002.

Ya zuwa yanzu babu wanda ya kama ko sarrafa waɗannan fakitin UDP, amma wannan ba ta kowace hanya ya yi mummunan tasiri ga sauri ko kwanciyar hankalin rubutun ku na PHP.

Har zuwa kwanan nan, kawai aikace-aikacen da zai iya kamawa da sarrafa waɗannan fakitin UDP shine inji. Bayani"mai sauki kuma a takaice" shigarwa yana hana sha'awar sake karantawa kuma a sake shiga ciki. Jerin abubuwan dogaro na tsawon kilomita sun ƙunshi duka sunayen fakiti da sunayen shirye-shirye da hanyoyin haɗin yanar gizo guda ɗaya tare da shigar da su, kuma waɗannan suna da nasu hanyoyin haɗin gwiwa zuwa wasu abubuwan dogaro. Babu wanda ke da lokaci ko sha'awar magance wannan abin banza.

Tsarin shigarwa pinba2 bai yi ba musamman sauki.

Wataƙila wata rana za a iya shigar da pinba10 tare da umarni ɗaya ko biyu kuma ba dole ba ne ka karanta ɗimbin abubuwa don fahimtar yadda ake yin shi, amma a yanzu ba haka lamarin yake ba.

Idan kun shigar da pinba_engine, to wannan shine rabin yaƙin. Bayan haka, ba tare da allo dole ne ka iyakance kanka ga bayanai daga ƴan mintuna kaɗan kawai, ko kuma dole ne ka tara, adana, da hango bayanan da kanka. Yana da kyau cewa allo yana da sauƙin amfani shigarwa.

Zai zama alama, me yasa irin wannan wahala idan duk matakan daga php an riga an aika zuwa tashar tashar udp a cikin tsarin protobuf kuma duk abin da kuke buƙata shine rubuta aikace-aikacen da zai kama su kuma sanya su a cikin wani nau'i na ajiya? A bayyane yake, waɗannan masu haɓakawa waɗanda suka fito da wannan ra'ayi nan da nan suka zauna don rubuta nasu ra'ayoyin, wasu daga cikinsu sun ƙare akan GitHub.

Mai zuwa shine bayyani na ayyukan buɗaɗɗen tushe guda huɗu waɗanda ke adana ma'auni a cikin ma'adana, waɗanda za'a iya samun wannan bayanan cikin sauƙi da gani, misali, ta amfani da grafana.

olegfedoseev/pinba-uwar garken (Nuwamba 2017)

udp uwar garken yana tafiya wanda ke adana awo zuwa OpenTSDB. Wataƙila idan kun riga kun kasance kuna amfani da OpenTSDB a cikin aikinku, to wannan maganin zai dace da ku, in ba haka ba ina ba da shawarar wuce ta.

olegfedoseev/pinba-influxdb (Yuni 2018)

udp uwar garken yana tafiya, daga guda habrowser, wanda wannan lokacin yana adana ma'auni a cikin InfluxDB. Yawancin ayyuka sun riga sun yi amfani da InfluxDB don saka idanu, don haka wannan maganin na iya zama cikakke a gare su.

Sakamakon:

  • InfluxDB Yana da damar tara ma'aunin da aka karɓa, kuma share ainihin bayan ƙayyadadden lokaci.

Fursunoni:

ClickHouse-Ninja/Proton (Janairu 2019)

udp uwar garken yana tafiya, wanda ke adana awo a ClickHouse. Wannan shine mafita abokina. Bayan na saba da shi ne na yanke shawarar cewa lokaci ya yi da zan dauki Pinbu da Clickhouse.

Sakamakon:

  • Clickhouse yana da kyau don irin waɗannan ayyuka; yana ba ku damar damfara bayanai ta yadda zaku iya adana duk ɗanyen bayanan koda ba tare da tarawa ba.
  • idan an buƙata, zaku iya haɗa ma'aunin da aka samu cikin sauƙi
  • samfurin da aka shirya don grafana
  • yana adana bayanai akan masu ƙidayar lokaci

Fursunoni:

  • m aibi
  • babu wani tsari wanda zaku iya saita sunan ma'ajin bayanai da tebur, adireshin da tashar jiragen ruwa na uwar garken.
  • lokacin adana danyen bayanai, ana amfani da tebur na ƙamus don adana shafi da adiresoshin yanki, wanda ke dagula tambayoyin gaba.
  • sauran kananan abubuwa da ke biyo baya daga ragi na farko

pinba-uwar garken/pinba-uwar garken (Afrilu 2019)

udp uwar garken a cikin php, wanda ke adana awo a ClickHouse. Wannan shine mafita na, wanda shine sakamakon sanin pinba, ClickHouse da protobuf. Yayin da nake warware wannan duka, na rubuta "tabbacin ra'ayi", wanda, ba zato ba tsammani a gare ni, bai cinye manyan albarkatu ba (30 MB na RAM da ƙasa da 1% na ɗayan nau'ikan na'urori takwas), don haka na yanke shawarar raba shi da jama'a.

Abubuwan amfani iri ɗaya ne da mafita na baya, Na kuma yi amfani da sunayen da aka saba daga ainihin pinba_engine. Na kuma ƙara saiti wanda ke ba ku damar ƙaddamar da misalai na uwar garken pinbase da yawa lokaci ɗaya don adana awo a cikin tebur daban-daban - wannan yana da amfani idan kuna son tattara bayanai ba kawai daga php ba, har ma daga nginx.
Rashin hasara - "aibi mai mutuwa" da waɗannan ƙananan abubuwan da ba za su dace da kai ba, amma mafitata ita ce "mai sauƙi kamar silifa" kuma ta ƙunshi kusan layi na 100 kawai, don haka duk wani mai haɓaka PHP zai iya canza abin da ba ya so. cikin mintuna biyu.

Yadda yake aiki

Ana sauraren tashar tashar jiragen ruwa ta UDP 30002. Duk fakiti masu shigowa an tsara su bisa ga tsarin protobuf kuma an haɗa su. Sau ɗaya a minti ɗaya, ana saka fakiti a cikin gidan dannawa a cikin tebur ɗin pinba.requests. (an saita duk sigogi a ciki saita)

Kadan game da clickhouse

Clickhouse yana goyan bayan injunan ajiyar bayanai daban-daban. Wanda akafi amfani dashi shine MergeTree.

Idan a wani lokaci kun yanke shawarar adana bayanan da aka tattara don kowane lokaci, da ɗanyen bayanai kawai don na ƙarshe, to zaku iya ƙirƙirar ra'ayi mai ma'ana tare da haɗawa, kuma lokaci-lokaci tsaftace babban tebur na pinba.requests, yayin da duk bayanan za su kasance a cikin kallon abin duniya. Bugu da ƙari, lokacin ƙirƙirar tebur na pinba.requests, za ka iya ƙayyade "injini = Null", to, ba za a adana albarkatun da aka adana zuwa faifai kwata-kwata ba, kuma a lokaci guda har yanzu zai ƙare a cikin ra'ayi na kayan aiki kuma za a adana tari. . Ina amfani da wannan makirci don ma'aunin nginx, saboda akan nginx Ina da buƙatun sau 50 fiye da na php.

Don haka kun yi nisa kuma ba zan so in bar ku da rabi ba, don haka abin da ke biyo baya shine cikakken bayani game da shigarwa da daidaitawar maganina da duk abin da kuke bukata, da kuma matsalolin da suka haifar da jirgi fiye da ɗaya. yi karo. An kwatanta dukkan tsarin shigarwa don Ubuntu 18.04 LTS da Centos 7; tsarin na iya bambanta dan kadan akan sauran rarrabawa da sigogin.

saitin

Na sanya duk umarnin da suka dace a ciki Dockerfile don sauƙaƙe reproducibility na umarni. Matsalolin kawai za a bayyana a ƙasa.

php-pinba

Bayan shigarwa, tabbatar cewa a cikin /etc/php/7.2/fpm/conf.d/20-pinba.ini fayil ba ku da cikakken bayani game da duk zaɓuɓɓukan. A kan wasu rabawa (misali centos) ana iya yin sharhi.

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

danna gidan

Yayin shigarwa, gidan dannawa zai tambaye ku don saita kalmar sirri don mai amfani da tsoho. Ta hanyar tsoho, ana iya samun wannan mai amfani daga duk IPs, don haka idan ba ku da Tacewar zaɓi akan sabar ku, tabbatar da saita kalmar wucewa don shi. Hakanan ana iya yin wannan bayan shigarwa a cikin /etc/clickhouse-server/users.xml fayil.

Hakanan yana da mahimmanci a lura cewa dannawa yana amfani da tashar jiragen ruwa da yawa, gami da 9000. Hakanan ana amfani da wannan tashar don php-fpm a wasu rarraba (misali, centos). Idan kun riga kun yi amfani da wannan tashar jiragen ruwa, zaku iya canza ta zuwa wani a cikin fayil /etc/clickhouse-server/config.xml.

grafana tare da plugin gidan yanar gizo

Bayan shigar da Grafana, yi amfani da admin na shiga da kalmar sirri. Lokacin da ka shiga a karon farko, Grafana zai tambaye ka ka saita sabon kalmar sirri.

Na gaba, je zuwa "+" -> shigo da menu kuma nuna lambar dashboard don shigo da kaya 10011. Na shirya kuma na loda wannan dashboard don kada ku sake yin shi da kanku.

Grafana yana goyan bayan aiki tare da gidan dannawa ta hanyar plugin ɗin ɓangare na uku, amma Grafana ba shi da faɗakarwa don plugins na ɓangare na uku (akwai tikitin wannan na shekaru da yawa).

pinba-uwar garken

Shigar da protobuf da libervent na zaɓi ne, amma yana haɓaka aikin uwar garken pinba. Idan kun shigar da uwar garken pinba a cikin babban fayil banda /opt, to kuna buƙatar gyara rubutun tsarin fayil.

pinba module don nginx

Don tattara tsarin, kuna buƙatar lambobin tushe na nau'in nginx iri ɗaya waɗanda aka riga aka shigar akan sabar ku, da kuma zaɓuɓɓukan haɗawa iri ɗaya, in ba haka ba ginin zai yi nasara, amma lokacin haɗa tsarin, za a jefa kuskuren hakan. "Module din bai dace da binary ba." Za a iya duba zaɓuɓɓukan tattarawa ta amfani da umarnin nginx -V

Rayuwa masu fashin baki

Duk rukunin yanar gizona suna aiki akan https kawai. Filin makirci ya zama mara ma'ana, don haka ina amfani da shi don raba gidan yanar gizo/console.

A cikin rubutun da ake samun dama daga gidan yanar gizon da nake amfani da su:

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

Kuma a cikin rubutun na'ura (misali, rubutun cron):

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

A cikin dashboard dina a Grafana akwai maɓalli na gidan yanar gizo/console don kididdigar kallo daban.

Hakanan zaka iya aika alamun ku zuwa Pinba, misali:

pinba_tag_set('country', $countryCode);

Shi ke nan.

Da fatan za a amsa kuri'un da ke ƙasa labarin.

Kamar yadda na saba, ina gargadin ku cewa ba na ba da shawara ko taimako ta hanyar sakonni na sirri a Habr da shafukan sada zumunta.

Ƙirƙiri tikiti akan Github.

Hakanan don Allah a tallafa da likes Harshen Turanci wannan labarin na reddit.

Masu amfani da rajista kawai za su iya shiga cikin binciken. Shigadon Allah.

Wane OS kuke amfani da shi akan uwar garken?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • Fedora

  • OpenSUSE

  • SUSE

  • Unix

  • Windows

  • wasu

Masu amfani 114 sun kada kuri'a. Masu amfani 11 sun kaurace.

Wane nau'in php kuke amfani da shi akan sabar?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • wasu

Masu amfani 105 sun kada kuri'a. Masu amfani 17 sun kaurace.

Shin kun taɓa amfani da pinba?

  • a

  • a'a, amma ina so

  • a'a kuma ba zan so ba

  • a'a kuma ban ji labarinta ba

Masu amfani 100 sun kada kuri'a. Masu amfani 14 sun kaurace.

Wane sigar uwar garken Pinba kuke so ku gwada?

  • pinba_engine (injin mysql)

  • pinba2 (injin mysql)

  • pinboard (php + mysql)

  • olegfedoseev/pinba-uwar garken (tafi + OpenTSDB)

  • olegfedoseev/pinba-influxdb (tafi + influxdb)

  • pinba-uwar garken/pinba-uwar garken (tafi + danna gidan)

  • pinba-uwar garken/pinba-uwar garken (php + clickhouse)

  • Zan rubuta nawa da kaina

  • wasu

Masu amfani 39 sun kada kuri'a. Masu amfani 47 sun kaurace.

source: www.habr.com

Add a comment