ProHoster > Pūnaewele > Nā Administration > Ka helu helu a me ka nānā ʻana i nā palapala PHP i ka manawa maoli. Hele mai ʻo ClickHouse a me Grafana e kōkua iā Pinba
Ka helu helu a me ka nānā ʻana i nā palapala PHP i ka manawa maoli. Hele mai ʻo ClickHouse a me Grafana e kōkua iā Pinba
Ma kēia ʻatikala e haʻi wau iā ʻoe pehea e hoʻohana ai i ka pinba me ka clickhouse a me ka grafana ma kahi o ka pinba_engine a me ka pinboard.
Ma kahi papahana PHP, ʻo pinba wale nō ke ala hilinaʻi e hoʻomaopopo i ka mea e hana nei me ka hana. ʻOiaʻiʻo, hoʻokō pinepine ʻia ka pinba inā ʻike ʻia nā pilikia a ʻaʻole maopopo "kahi e ʻeli ai."
ʻO ka manawa pinepine ʻaʻohe mea i manaʻo i ka nui o nā manawa i kēlā me kēia kekona/minuke i kapa ʻia ai kēia a i ʻole kēlā palapala a hoʻomaka lākou e koho "ma ka paʻi", e hoʻomaka ana mai kēlā mau wahi i ʻoi aku ke kūpono.
Hoʻopili kekahi i nā log nginx, a ʻo nā mea ʻē aʻe e nānā i nā nīnau ʻikepili lohi.
ʻOiaʻiʻo, ʻaʻole nui ka pinba, akā aia kekahi mau kumu no ka loaʻa ʻole o kēlā me kēia papahana.
A ʻo ke kumu mua ke kau ʻana.
No ka loaʻa ʻana o kekahi ʻano "exhaust" mai ka hoʻokō ʻana iā Pinba, makemake nui ʻia e ʻike i nā metric ʻaʻole wale no nā minuke hope loa, akā no ka manawa lōʻihi (mai nā lā a hiki i nā mahina).
No kēia mea e pono anaʻoe:
e hoʻouka i ka extension no php (a makemake paha ʻoe i kahi module no nginx)
hoʻopili i ka hoʻonui no mysql
e hoʻokomo i ka pinboard a hoʻonohonoho i ka cron
Ma muli o ka liʻiliʻi o ka ʻike e pili ana iā Pinba, nui ka poʻe i manaʻo he hana wale ia ma PHP5 a ua lōʻihi ka manawa i hala, akā e like me kā mākou e ʻike ai ma hope, ʻaʻole kēia ka hihia.
ʻO ka hana mua ka mea maʻalahi, ʻo nā mea āpau āu e hana ai ʻo ka holo ʻana i ke kauoha:
apt install php-pinba
Loaʻa kēia hoʻonui i nā waihona a hiki i ka php 7.3 a ʻaʻole pono ʻoe e hōʻuluʻulu i kekahi mea.
Ma hope o ka hoʻokō ʻana i ke kauoha hoʻonohonoho, loaʻa koke iā mākou kahi hoʻonui hana e hōʻiliʻili a hoʻouna i nā metric no kēlā me kēia palapala (manawa holo, hoʻomanaʻo, etc.) i ke ʻano. protobuf ma o udp i 127.0.0.1:30002.
I kēia manawa, ʻaʻohe mea i hopu a hoʻoponopono paha i kēia mau ʻeke UDP, akā ʻaʻole pili kēia i ka wikiwiki a i ʻole ka paʻa o kāu mau palapala PHP.
A hiki i kēia manawa, ʻo ka noi wale nō i hiki ke hopu a hoʻoponopono i kēia mau ʻeke UDP pinba_engine. wehewehe "maʻalahi a pōkole"Hoʻopau ka hoʻonohonoho ʻana i ka makemake e heluhelu a huli hou i loko. Aia i loko o ka papa inoa o nā mea hilinaʻi ka lōʻihi o ka kilomika nā inoa o nā pūʻolo a me nā inoa o nā papahana a me nā loulou i nā ʻaoʻao pākahi me kā lākou hoʻokomo ʻana, a loaʻa iā lākou nā loulou ponoʻī i nā hilinaʻi ʻē aʻe. ʻAʻohe kanaka i loaʻa ka manawa a i ʻole makemake e hana i kēia palaka.
Malia paha i kekahi lā hiki ke hoʻokomo i ka pinba10 me hoʻokahi a ʻelua mau kauoha a ʻaʻole pono e heluhelu i kahi pūʻulu mea e hoʻomaopopo ai pehea e hana ai, akā i kēia manawa ʻaʻole kēia ka hihia.
Inā ʻoe e hoʻokomo i ka pinba_engine, a laila ʻo ka hapalua wale nō kēia o ke kaua. Ma hope o nā mea a pau, me ka ʻole papa kuhikuhi pono ʻoe e kaupalena iā ʻoe iho i ka ʻikepili mai nā minuke hope loa, a i ʻole ʻoe e hōʻuluʻulu, mālama, a nānā pono i ka ʻikepili iā ʻoe iho. Maikaʻi ka maʻalahi o ka pinboard e hoʻohana mea hoʻonoho.
Me he mea lā, no ke aha e ʻeha ai inā ua hoʻouna mua ʻia nā metric āpau mai php i ke awa udp ma ke ʻano protobuf a ʻo nā mea a pau āu e pono ai ke kākau i kahi noi e hopu ai iā lākou a waiho iā lākou i loko o kekahi ʻano waihona? Me he mea lā, ua noho koke kēlā mau mea hoʻomohala i kēia manaʻo e kākau i ko lākou mau manaʻo ponoʻī, a ua pau kekahi o lākou ma GitHub.
Aia ma lalo iho kahi hiʻohiʻona o nā papahana open source ʻehā e mālama ai i nā metric i ka waiho ʻana, kahi e hiki ai ke kiʻi a ʻike maʻalahi i kēia ʻikepili, no ka laʻana, me ka hoʻohana ʻana i ka grafana.
udp server ma ka hele e mālama i nā metric i OpenTSDB. Malia paha inā ʻoe e hoʻohana nei i ka OpenTSDB i kāu papahana, a laila e kūpono kēia hopena iā ʻoe, inā ʻaʻole wau e manaʻo e hele.
udp server ma ka hele, mai ka mea like habrowser, i kēia manawa e mālama i nā metric ma InfluxDB. Ke hoʻohana nei nā papahana he nui i ka InfluxDB no ka nānā ʻana, no laila kūpono paha kēia hopena no lākou.
Kākoʻo:
InfluxDB Ua apono e hōʻuluʻulu i nā ana i loaʻa, a holoi i ka mea kumu ma hope o ka manawa i ʻōlelo ʻia.
udp server ma ka hele, e mālama ana i nā metric ma ClickHouse. ʻO kēia ka hopena o koʻu hoaaloha. Ma hope o koʻu ʻike ʻana iā ia ua hoʻoholo wau ʻo ia ka manawa e lawe ai iā Pinbu a me Clickhouse.
Kākoʻo:
He kūpono ʻo Clickhouse no ia mau hana; hiki iā ʻoe ke hoʻopaʻa i ka ʻikepili i hiki iā ʻoe ke mālama i nā ʻikepili maka āpau ʻoiai me ka ʻole o ka hui ʻana.
inā makemake ʻia, hiki iā ʻoe ke hōʻuluʻulu maʻalahi i nā metric hopena
ʻaʻohe config e hiki ai iā ʻoe ke hoʻonohonoho i ka inoa o ka waihona a me nā papa, ka helu a me ke awa o ke kikowaena.
i ka wā e mālama ai i ka ʻikepili maka, hoʻohana ʻia kahi papa wehewehe wehewehe kōkua no ka mālama ʻana i nā ʻaoʻao a me nā helu wahi, kahi e hoʻopiʻi ai i nā nīnau ma hope.
nā mea liʻiliʻi ʻē aʻe e pili ana mai ka hoʻemi mua
udp server ma php, nāna e mālama i nā metric ma ClickHouse. ʻO kēia kaʻu hopena, ʻo ia ka hopena o ka ʻike ʻana iā pinba, ClickHouse a me protobuf. ʻOiai wau e hoʻokaʻawale ana i kēia pūʻulu holoʻokoʻa, ua kākau wau i kahi "hōʻoia o ka manaʻo", ka mea, me ka manaʻo ʻole iaʻu, ʻaʻole i hoʻopau i nā kumuwaiwai koʻikoʻi (30 MB o RAM a ma lalo o 1% o kekahi o nā cores processor ʻewalu), no laila au. ua hoʻoholo e kaʻana like me ka lehulehu.
Ua like nā mea maikaʻi me ka hopena mua, ua hoʻohana pū wau i nā inoa maʻamau mai ka pinba_engine kumu. Ua hoʻohui pū wau i kahi config e hiki ai iā ʻoe ke hoʻomaka i nā manawa kikowaena pinbase i ka manawa hoʻokahi i mea e mālama ai i nā metric i nā papa ʻokoʻa - pono kēia inā makemake ʻoe e hōʻiliʻili i ka ʻikepili ʻaʻole wale mai php, akā mai nginx pū kekahi.
Nā pōʻino - "fatal flaw" a me kēlā mau mea liʻiliʻi i kūpono ʻole iā ʻoe iho, akā ʻo kaʻu hopena he "maʻalahi e like me ka slipper" a aia ma kahi o 100 mau laina code, no laila hiki i kekahi mea hoʻomohala PHP ke hoʻololi i kāna mea makemake ʻole. i kekahi mau minuke.
Pehea ia hana
Hoʻolohe ʻia ka UDP port 30002. Hoʻololi ʻia nā ʻeke komo a pau e like me ka protobuf scheme a hōʻuluʻulu ʻia. I hoʻokahi minuke, hoʻokomo ʻia kahi ʻeke i loko o ka clickhouse i ka papaʻaina pinba.requests. (ua hoʻonohonoho ʻia nā ʻāpana āpau ma config)
He wahi liʻiliʻi e pili ana i ka clickhouse
Kākoʻo ʻo Clickhouse i nā ʻenekini mālama ʻikepili like ʻole. ʻO ka mea maʻamau i hoʻohana ʻia ʻo MergeTree.
Inā ma kekahi manawa e hoʻoholo ai e mālama i ka ʻikepili aggregated no nā manawa a pau, a me ka ʻikepili maka wale no ka manawa hope loa, a laila hiki iā ʻoe ke hana i kahi manaʻo materialized me ka hui pū ʻana, a hoʻomaʻemaʻe i kēlā me kēia manawa i ka papa kuhikuhi pinba.requests, ʻoiai nā ʻikepili āpau e noho i ka ʻike maka. Eia kekahi, i ka hana ʻana i ka papaʻaina pinba.requests, hiki iā ʻoe ke kuhikuhi i ka "engine = Null", a laila ʻaʻole e mālama ʻia ka ʻikepili maka i ka disk, a i ka manawa like e hoʻopau ʻia i ka ʻike materialized a mālama ʻia i ka hui ʻia. . Hoʻohana wau i kēia hoʻolālā no nā metric nginx, no ka mea ma ka nginx he 50 mau manawa ʻoi aku ka nui o nā noi ma mua o php.
No laila, ua hele mai ʻoe i kahi ala lōʻihi a ʻaʻole wau makemake e haʻalele iā ʻoe i ka hapalua, no laila ʻo ka wehewehe kikoʻī o ka hoʻonohonoho ʻana a me ka hoʻonohonoho ʻana o kaʻu hoʻonā a me nā mea āpau āu e pono ai, a me nā pitfalls i hoʻokumu ʻia ma mua o hoʻokahi moku. e hāʻule. Ua wehewehe ʻia ke kaʻina hana holoʻokoʻa no Ubuntu 18.04 LTS a me Centos 7; ʻokoʻa iki paha ke kaʻina hana ma nā māhele ʻē aʻe a me nā mana.
Kāu Mau Koho Paʻamau
Hoʻokomo wau i nā kauoha a pau e pono ai dockerfile e maʻalahi i ka reproducibility o nā kuhikuhi. ʻO nā pilikia wale nō e wehewehe ʻia ma lalo nei.
php-pinba
Ma hope o ka hoʻokomo ʻana, e hōʻoia ʻoe i loko o ka faila /etc/php/7.2/fpm/conf.d/20-pinba.ini ua kāpae ʻoe i nā koho āpau. Ma kekahi mahele (eg centos) hiki ke ʻōlelo ʻia.
I ka wā o ka hoʻouka ʻana, e noi ʻo clickhouse iā ʻoe e hoʻonohonoho i kahi ʻōlelo huna no ka mea hoʻohana paʻamau. Ma ka maʻamau, hiki ke ʻike ʻia kēia mea hoʻohana mai nā IP āpau, no laila inā ʻaʻole ʻoe i kahi pā ahi ma kāu kikowaena, e hōʻoia e hoʻonohonoho i kahi ʻōlelo huna no ia. Hiki ke hana ʻia kēia ma hope o ka hoʻokomo ʻana i ka faila /etc/clickhouse-server/users.xml.
He mea kūpono hoʻi e hoʻomaopopo i ka hoʻohana ʻana o clickhouse i kekahi mau awa, me 9000. Hoʻohana pū ʻia kēia awa no php-fpm i kekahi mau māhele (e laʻa, centos). Inā hoʻohana mua ʻoe i kēia awa, hiki iā ʻoe ke hoʻololi iā ia i kekahi ma ka faila /etc/clickhouse-server/config.xml.
grafana me ka plugin clickhouse
Ma hope o ka hoʻokomo ʻana iā Grafana, e hoʻohana i ka admin login a me ka admin password. Ke komo ʻoe no ka manawa mua, e noi ʻo Grafana iā ʻoe e hoʻonoho i kahi ʻōlelo huna hou.
A laila, e hele i ka "+" -> menu import a kuhikuhi i ka helu dashboard no ka lawe ʻana mai 10011. Ua hoʻomākaukau a hoʻouka wau i kēia dashboard i ʻole ʻoe e hana hou iā ʻoe iho.
Kākoʻo ʻo Grafana i ka hana ʻana me ka clickhouse ma o kahi plugin ʻaoʻao ʻekolu, akā ʻaʻole loaʻa iā Grafana nā māka no nā plugins ʻaoʻao ʻekolu (ua loaʻa kahi tiketi no kēia no kekahi mau makahiki).
pinba-server
He koho ke kau ʻana i ka protobuf a me ka libevent, akā hoʻomaikaʻi i ka hana pinba-server. Inā ʻoe e hoʻokomo i ka pinba-server i loko o kahi waihona ma waho o / opt, a laila pono ʻoe e hoʻoponopono palapala systemd faila
pinba module no nginx
No ka hōʻuluʻulu ʻana i kahi module, pono ʻoe i nā code kumu o ka ʻano like o ka nginx i kau ʻia ma kāu kikowaena, a me nā koho compilation like, inā ʻaʻole e kūleʻa ke kūkulu ʻana, akā i ka hoʻopili ʻana i ka module, e hoʻolei ʻia kahi hewa. "ʻAʻole kūpono ka modula." Hiki ke nānā ʻia nā koho hōʻuluʻulu me ka hoʻohana ʻana i ke kauoha nginx -V
Hacks ke ola
Ke hana wale nei kaʻu mau pūnaewele ma https. He mea ʻole ke kahua schema, no laila ke hoʻohana nei au iā ia e hoʻokaʻawale i ka pūnaewele/console.
Ma nā palapala i hiki ke loaʻa mai ka pūnaewele aʻu e hoʻohana ai:
if (ini_get('pinba.enabled')) {
pinba_schema_set('web');
}
A ma nā palapala hōʻoluʻolu (no ka laʻana, cron scripts):
if (ini_get('pinba.enabled')) {
pinba_schema_set('console');
}
Aia i loko o koʻu papa kuhikuhi ma Grafana kahi hoʻololi pūnaewele/console no ka nānā ʻana i nā helu ʻokoʻa.
Hiki iā ʻoe ke hoʻouna i kāu mau hōʻailona iā Pinba, no ka laʻana:
pinba_tag_set('country', $countryCode);
ʻo ia wale nō.
E ʻoluʻolu e pane i nā koho ma lalo o ka ʻatikala.
E like me ka mea maʻamau, ke aʻo aku nei au iā ʻoe ʻaʻole wau e aʻo a kōkua paha ma o nā leka pilikino ma Habr a me nā ʻoihana pūnaewele.