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.

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

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.

ʻO ke kaʻina hana pinba2 ʻaʻole ʻoi aku ka maʻalahi.

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.

olegfedoseev/pinba-server (Nowemapa 2017)

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.

olegfedoseev/pinba-influxdb (Iune 2018)

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.

ʻAla:

ClickHouse-Ninja/Proton (Ianuali 2019)

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
  • i hoʻomākaukau ʻia no ka grafana
  • mālama i ka ʻike ma nā timers

ʻAla:

  • hala make
  • ʻ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

pinba-server/pinba-server (ʻApelila 2019)

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.

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

hale kaomi

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.

E hana i kahi tikiki ma Github.

E ʻoluʻolu e kākoʻo me nā makemake ʻŌlelo Pelekania keia 'atikala ma reddit.

Hiki i nā mea hoʻohana i hoʻopaʻa inoa ʻia ke komo i ka noiʻi. Eʻe, e 'oluʻolu.

He aha kāu OS e hoʻohana nei ma ke kikowaena?

  • Ubuntu

  • CentOS

  • Debian

  • Gentoo

  • Red Hat

  • ʻO Fedora

  • OpenSUSE

  • ʻSElelo SuSE

  • Unix

  • Windows

  • kekahi'ē aʻe

114 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 11.

He aha ka mana o php āu e hoʻohana nei ma ke kikowaena?

  • 7.3

  • 7.2

  • 7.1

  • 7.0

  • 5

  • kekahi'ē aʻe

105 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 17.

Ua hoʻohana paha ʻoe i ka pinba?

  • ʻo ia

  • ʻaʻole, akā makemake wau

  • ʻaʻole a ʻaʻole wau makemake

  • ʻaʻole a lohe ʻole iā ia

100 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 14.

ʻO ka mana o ke kikowaena Pinba āu e makemake ai e hoʻāʻo?

  • pinba_engine (mysql engine)

  • pinba2 (mysql engine)

  • papa kuhikuhi (php + mysql)

  • olegfedoseev/pinba-server (hele + OpenTSDB)

  • olegfedoseev/pinba-influxdb (hele + influxdb)

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

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

  • Naʻu nō e kākau i kaʻu

  • kekahi'ē aʻe

39 mea hoʻohana i koho. Ua hōʻole nā ​​mea hoʻohana 47.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka