ProHoster > Блог > Gudanarwa > Ƙididdiga da kulawa da rubutun PHP a cikin ainihin lokaci. ClickHouse da Grafana sun zo don taimakon Pinba
Ƙ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.
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.
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.
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.
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:
Wannan bayani baya ajiye bayanai akan masu ƙidayar lokaci.
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
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.
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.