E nānā mākou i ka hana ʻana o Zabbix me ka waihona TimescaleDB ma ke ʻano he hope. E hōʻike mākou iā ʻoe pehea e hoʻomaka ai mai ka ʻōpala a pehea e neʻe ai mai PostgreSQL. E hāʻawi pū mākou i nā hoʻokolohua hoʻohālikelike o nā hoʻonohonoho ʻelua.
HighLoad++ Siberia 2019. Hale Hōʻikeʻike ʻo Tomsk. Iune 24, 16:00. Theses and
Andrey Gushchin (ma hope aku - AG): - He ʻenehana kākoʻo ʻenehana ZABBIX au (i kapa ʻia ʻo "Zabbix"), he mea hoʻomaʻamaʻa. Ua hana au ma ke kākoʻo ʻenehana no nā makahiki ʻoi aku ma mua o 6 a ua loaʻa iaʻu kahi ʻike pololei me ka hana. I kēia lā, e kamaʻilio wau e pili ana i ka hana a TimescaleDB e hāʻawi ai ke hoʻohālikelike ʻia me PostgreSQL 10 maʻamau.
ʻO nā pilikia ʻoi loa o ka huahana: mai ka hōʻiliʻili ʻikepili a hiki i ka hoʻomaʻemaʻe ʻikepili
I ka hoʻomaka ʻana, aia kekahi mau pilikia hana e kū nei i kēlā me kēia ʻōnaehana nānā. ʻO ka luʻu huahana mua ka hōʻiliʻili a me ka hoʻoili ʻana i ka ʻikepili wikiwiki.
Pono ka ʻōnaehana nānā maikaʻi i ka wikiwiki, loaʻa i ka manawa kūpono nā ʻikepili āpau, kaʻina hana e like me ka trigger expressions, ʻo ia hoʻi, kaʻina hana ia e like me kekahi mau loina (ʻokoʻa kēia i nā ʻōnaehana like ʻole) a mālama iā ia i loko o kahi waihona i mea e hoʻohana ai i kēia ʻikepili i ka e hiki mai ana.
ʻO ka lua o ka hoʻokō ʻana ʻo ka mālama moʻolelo. E kūʻai pinepine i loko o kahi waihona a loaʻa ka wikiwiki a me ka maʻalahi i kēia mau ana i hōʻiliʻili ʻia i kekahi manawa. ʻO ka mea nui, ʻo ia ka maʻalahi o ka loaʻa ʻana o kēia ʻikepili, hoʻohana iā ia i nā hōʻike, nā kiʻi, nā mea hoʻoulu, i kekahi mau waiwai paepae, no nā makaʻala, etc.
ʻO ke kolu o ka hoʻokō ʻana ʻo ka hoʻomaʻemaʻe moʻolelo, ʻo ia hoʻi, ke hiki ʻoe i kahi ʻaʻole pono ʻoe e mālama i nā ana kikoʻī i hōʻiliʻili ʻia ma luna o 5 mau makahiki (ʻo nā mahina a ʻelua paha mahina). Ua holoi ʻia kekahi mau node pūnaewele, a i ʻole kekahi mau pūʻali, ʻaʻole pono nā metric no ka mea ua kahiko lākou a ʻaʻole i hōʻiliʻili hou ʻia. Pono e hoʻomaʻemaʻe ʻia kēia mau mea a pau i ʻole e ulu nui kāu waihona. Ma keʻano laulā, ʻo ka hoʻomaʻemaʻe ʻana i ka mōʻaukala he hoʻāʻo koʻikoʻi no ka mālama ʻana - he hopena ikaika loa ia i ka hana.
Pehea e hoʻoponopono ai i nā pilikia cache?
E kamaʻilio kūikawā wau e pili ana iā Zabbix. Ma Zabbix, hoʻopau ʻia nā kelepona mua a me ka lua me ka hoʻohana ʻana i ka caching.
ʻOhi ʻikepili a me ka hana ʻana - Hoʻohana mākou i ka RAM e mālama i kēia ʻikepili āpau. E kūkākūkā hou ʻia kēia mau ʻikepili i kēia manawa.
Aia kekahi ma ka ʻaoʻao waihona waihona no nā koho nui - no nā kiʻi a me nā mea ʻē aʻe.
Hoʻopili ma ka ʻaoʻao o ka kikowaena Zabbix ponoʻī: loaʻa iā mākou ConfigurationCache, ValueCache, HistoryCache, TrendsCache. He aha ia?
ʻO ConfigurationCache ka hūnā nui kahi e mālama ai mākou i nā metrics, hosts, data items, triggers; ʻO nā mea a pau āu e pono ai e hoʻoponopono i ka preprocessing, e hōʻiliʻili i ka ʻikepili, kahi e hōʻiliʻili ai nā pūʻali, me ka pinepine. Mālama ʻia kēia mau mea a pau ma ConfigurationCache i ʻole e hele i ka waihona a hana i nā nīnau pono ʻole. Ma hope o ka hoʻomaka ʻana o ke kikowaena, hoʻomaikaʻi mākou i kēia cache (hana iā ia) a hoʻonui iā ia i kēlā me kēia manawa (e pili ana i nā hoʻonohonoho hoʻonohonoho).
Hoʻokomo ʻia ma Zabbix. ʻOhi ʻikepili
Eia ka nui o ke kii:
ʻO nā mea nui i ka papahana kēia mau mea hōʻiliʻili:
ʻO kēia nā kaʻina hana hui ponoʻī, nā "pollers" like ʻole i kuleana no nā ʻano hui like ʻole. E hōʻiliʻili lākou i ka ʻikepili ma o ka icmp, ipmi, a me nā protocols like ʻole a hoʻololi i nā mea āpau i ka preprocessing.
PreProcessing HistoryCache
Eia kekahi, inā ua helu mākou i nā mea ʻikepili (ʻike ka poʻe i kamaʻāina iā Zabbix), ʻo ia hoʻi, helu ʻia, aggregation data element, lawe pololei mākou iā lākou mai ValueCache. E haʻi aku au iā ʻoe pehea i hoʻopiha ʻia ma hope. Hoʻohana kēia mau ʻohi a pau i ka ConfigurationCache e loaʻa i kā lākou mau hana a laila e hāʻawi iā lākou i ka preprocessing.
Hoʻohana pū ʻo Preprocessing i ka ConfigurationCache e kiʻi i nā ʻanuʻu preprocessing a hana i kēia ʻikepili ma nā ʻano like ʻole. E hoʻomaka ana mai ka mana 4.2, ua hoʻoneʻe mākou iā ia i kahi koho. He mea maʻalahi kēia, no ka mea he hana paʻakikī ka preprocessing iā ia iho. A inā loaʻa iā ʻoe kahi Zabbix nui loa, me ka nui o nā mea ʻikepili a me ke alapine hōʻiliʻili kiʻekiʻe, a laila e maʻalahi kēia i ka hana.
No laila, ma hope o ka hoʻoponopono ʻana i kēia ʻikepili ma kekahi ʻano me ka hoʻohana ʻana i ka preprocessing, mālama mākou iā ia ma HistoryCache i mea e hana hou ai. Hoʻopau kēia i ka hōʻiliʻili ʻikepili. Hele mākou i ke kaʻina hana nui.
Ka hana a ka mea hoʻoponopono mōʻaukala
ʻO ke kaʻina hana nui ma Zabbix (no ka mea he hale hoʻolālā monolithic) ʻo ka History syncer. ʻO kēia ke kaʻina hana nui e pili pono ana i ka hana atomika o kēlā me kēia mea ʻikepili, ʻo ia hoʻi, kēlā me kēia waiwai:
- hiki mai ka waiwai (lawe ia mai HistoryCache);
- nānā i ka Configuration syncer: inā he mau mea hoʻomaka no ka helu ʻana - helu iā lākou;
inā loaʻa - hana i nā hanana, hana i ka piʻi ʻana i mea e hana ai i kahi makaʻala, inā pono e like me ka hoʻonohonoho; - hoʻopaʻa moʻolelo i nā kumu no ka hoʻoili ʻana ma hope, hoʻohui; inā ʻoe e hōʻuluʻulu i ka hola hope a pēlā aku, hoʻomanaʻo ʻia kēia waiwai e ValueCache i ʻole e hele i ka papa mōʻaukala; No laila, ua hoʻopiha ʻia ka ValueCache me nā ʻikepili kūpono e pono ai e helu i nā mea hoʻoiho, nā mea i helu ʻia, etc.;
- a laila kākau ʻo History syncer i nā ʻikepili āpau i ka waihona;
- kākau ka waihona iā lākou i ka disk - ʻo ia kahi e pau ai ke kaʻina hana.
waihona waihona. Ke kāʻei ʻana
Ma ka ʻaoʻao waihona, inā makemake ʻoe e nānā i nā kiʻi a i ʻole kekahi mau hōʻike e pili ana i nā hanana, aia nā ʻano huna. Akā ma kēia hōʻike ʻaʻole wau e kamaʻilio e pili ana iā lākou.
No MySQL aia ʻo Innodb_buffer_pool, a he pūʻulu o nā huna huna ʻē aʻe i hiki ke hoʻonohonoho ʻia.
Akā ʻo kēia nā mea nui:
- shared_buffers;
- ka nui_cache_size;
- puna_kaulike.
No nā ʻikepili āpau, ua ʻōlelo wau aia kekahi mau huna e ʻae iā ʻoe e mālama i ka RAM i ka ʻikepili i makemake pinepine ʻia no nā nīnau. Loaʻa iā lākou kā lākou ʻenehana ponoʻī no kēia.
E pili ana i ka hana ʻikepili
No laila, aia kahi hoʻokūkū hoʻokūkū, ʻo ia hoʻi, ʻohi ka server Zabbix i ka ʻikepili a hoʻopaʻa. Ke hoʻomaka hou, heluhelu ia mai ka mōʻaukala e hoʻopiha i ka ValueCache a pēlā aku. Maanei hiki iā ʻoe ke loaʻa nā palapala a me nā hōʻike e hoʻohana ana i ka Zabbix API, i kūkulu ʻia ma kahi kikowaena pūnaewele. Hoʻokomo ʻo Zabbix API i ka waihona a loaʻa i ka ʻikepili kūpono e kiʻi i nā kiʻi, nā hōʻike, a i ʻole kekahi ʻano papa inoa o nā hanana, nā pilikia hou.
ʻO Grafana kekahi mea hoʻonā kaulana loa, kahi e hoʻohana ai kā mākou mea hoʻohana. Hiki iā ia ke komo pololei ma o ka Zabbix API a ma o ka waihona. Hoʻokumu pū ia i kahi hoʻokūkū no ka loaʻa ʻana o ka ʻikepili: pono ka hoʻoponopono ʻana i ka ʻikepili i ʻoi aku ka maikaʻi o ka hāʻawi ʻana i nā hopena a me ka hoʻāʻo.
Hoʻomaʻemaʻe i ka mōʻaukala. Loaʻa iā Zabbix ke kahu hale
ʻO ke kolu o ke kelepona i hoʻohana ʻia ma Zabbix e hoʻomaʻemaʻe i ka mōʻaukala me ka hoʻohana ʻana iā Housekeeper. Hoʻopili ʻo Housekeeper i nā hoʻonohonoho āpau, ʻo ia hoʻi, hōʻike kā mākou mau mea ʻikepili i ka lōʻihi o ka mālama ʻana (i nā lā), pehea ka lōʻihi o ka mālama ʻana i nā ʻano, a me ka dynamics o nā loli.
ʻAʻole wau i kamaʻilio e pili ana i TrendCache, ka mea a mākou e helu ai ma ka lele: hiki mai ka ʻikepili, hōʻuluʻulu mākou ia no hoʻokahi hola (ʻo ka hapa nui kēia mau helu no ka hola hope), ʻo ka awelika / ka liʻiliʻi a hoʻopaʻa mākou iā ia i hoʻokahi hola i ka papa ʻaina o nā hoʻololi ("Trends") . Hoʻomaka a hoʻopau ʻo "Housekeeper" i ka ʻikepili mai ka waihona me ka hoʻohana ʻana i nā koho maʻamau, ʻaʻole pono mau.
Pehea e maopopo ai he pono ole? Hiki iā ʻoe ke ʻike i kēia kiʻi ma nā kiʻi hana o nā kaʻina hana kūloko.
Paʻa mau kāu moʻolelo syncr (kiʻi ʻulaʻula). A ʻo ka pakuhi "ʻulaʻula" e hele ana ma luna. He "Housekeeper" kēia e hoʻomaka a kali i ka waihona e holoi i nā lālani a pau āna i kuhikuhi ai.
E lawe kāua i kekahi mea ID: pono ʻoe e holoi i ka 5 tausani hope loa; ʻoiaʻiʻo, ma nā kuhikuhi. Akā ʻo ka mea maʻamau, ʻoi aku ka nui o ka waihona - heluhelu mau ka waihona mai ka disk a hoʻokomo i loko o ka huna huna, a he hana pipiʻi loa kēia no ka waihona. Ma muli o kona nui, hiki i kēia ke alakaʻi i kekahi mau pilikia hana.
Hiki iā ʻoe ke hoʻopau i ka Housekeeper ma kahi ala maʻalahi - loaʻa iā mākou kahi kikowaena pūnaewele maʻamau. Nā hoʻonohonoho ma ka Administration general (nā hoʻonohonoho no "Housekeeper") hoʻopau mākou i ka mālama hale kūloko no ka mōʻaukala kūloko a me nā ʻano. No laila, ʻaʻole mālama ʻo Housekeeper i kēia:
He aha kāu e hana ai ma hope? Ua hoʻopau ʻoe, ua pae i kāu mau pakuhi... He aha nā pilikia hou aʻe e hiki mai ana ma kēia hihia? He aha ke kōkua?
Māhele (ʻāpana)
ʻO ka maʻamau, hoʻonohonoho ʻia kēia ma kahi ʻano ʻokoʻa ma kēlā me kēia waihona pili pili aʻu i helu ai. Loaʻa iā MySQL kāna ʻenehana ponoʻī. Akā ma ke ʻano holoʻokoʻa like loa lākou i ka wā e hiki mai ana i PostgreSQL 10 a me MySQL. ʻOiaʻiʻo, nui nā ʻokoʻa kūloko i ke ʻano o ka hoʻokō ʻana a me ke ʻano o ka hopena o ka hana. Akā ma ka laulā, ʻo ka hana ʻana i kahi ʻāpana hou e alakaʻi pinepine ai i kekahi mau pilikia.
Ma muli o kāu hoʻonohonoho (pehea ka nui o ka ʻikepili āu e hana ai i ka lā hoʻokahi), hoʻonohonoho lākou i ka liʻiliʻi loa - ʻo ia ka 1 lā / pūʻulu, a no nā "trends", nā dinamika o nā loli - 1 mahina / pūʻulu hou. Hiki ke loli kēia inā he hoʻonohonoho nui loa kāu.
E ʻōlelo koke mākou e pili ana i ka nui o ka hoʻonohonoho: a hiki i 5 tausani mau waiwai hou i kēlā me kēia kekona (i kapa ʻia ʻo nvps) - e manaʻo ʻia kēia he "hoʻonohonoho" liʻiliʻi. Awelika - mai 5 a 25 tausani mau waiwai i kekona. ʻO nā mea a pau ma luna nei he mea nui a nui loa e pono ai ka hoʻonohonoho pono ʻana o ka waihona.
Ma nā hoʻonohonoho nui loa, ʻaʻole kūpono ka lā 1. Ua ʻike wau i nā ʻāpana ma MySQL o 40 gigabytes i kēlā me kēia lā (a ʻoi aku paha). He nui loa kēia o ka ʻikepili, hiki ke alakaʻi i kekahi mau pilikia. Pono e hoemi.
No ke aha ʻoe e pono ai i ka ʻāpana?
ʻO ka mea i hāʻawi ʻia e Partitioning, manaʻo wau ua ʻike nā mea a pau, ʻo ia ka papa ʻaina. ʻO ka manawa pinepine he mau faila kaʻawale kēia ma ka disk a me nā noi span. Koho ʻo ia i hoʻokahi ʻāpana ʻoi aku ka maikaʻi inā he ʻāpana ia o ka ʻāpana maʻamau.
No Zabbix, ʻo ia hoʻi, hoʻohana ʻia ia e ka laulā, ma ka laulā, ʻo ia hoʻi, hoʻohana mākou i kahi timestamp (kahi helu maʻamau, manawa mai ka hoʻomaka ʻana o ka wā). Hoʻomaopopo ʻoe i ka hoʻomaka ʻana o ka lā/hopena o ka lā, a ʻo ia ka ʻāpana. No laila, inā e noi ana ʻoe i ka ʻikepili i ʻelua mau lā, ʻoi aku ka wikiwiki o nā mea a pau mai ka waihona, no ka mea pono ʻoe e hoʻouka i hoʻokahi faila i loko o ka cache a hoʻihoʻi iā ia (ma mua o ka papaʻaina nui).
Nui nō hoʻi nā ʻikepili i hoʻokomo i ka hoʻokomo (hoʻokomo ʻia i loko o ka pākaukau keiki hoʻokahi). Ke ʻōlelo nei au i ka abstract no kēia manawa, akā hiki nō hoʻi kēia. Kōkua pinepine ka hoʻokaʻawale ʻana.
Elasticsearch no NoSQL
I kēia manawa, ma 3.4, ua hoʻokō mākou i kahi hopena NoSQL. Hoʻohui i ka hiki ke kākau ma Elasticsearch. Hiki iā ʻoe ke kākau i kekahi mau ʻano: koho ʻoe - e kākau i nā helu a i ʻole kekahi mau hōʻailona; loaʻa iā mākou nā kikokikona kaula, hiki iā ʻoe ke kākau i nā lāʻau i Elasticsearch... No laila, e komo pū ka ʻaoʻao pūnaewele iā Elasticsearch. Hana maikaʻi kēia i kekahi mau hihia, akā i kēia manawa hiki ke hoʻohana.
TimescaleDB. Nā papa kuhikuhi
No 4.4.2 ua hoʻolohe mākou i kekahi mea e like me TimescaleDB. He aha ia? He hoʻonui kēia no PostgreSQL, ʻo ia hoʻi, loaʻa iā ia kahi kikowaena PostgreSQL maoli. Hoʻohui, hiki i kēia hoʻonui iā ʻoe ke hana ʻoi aku ka maikaʻi me ka ʻikepili timeseries a loaʻa i ka partitioning maʻalahi. He aha kona ʻano:
He hypertable kēia - aia kekahi manaʻo ma Timescale. He hypertable kēia āu i hana ai, a loaʻa nā ʻāpana. ʻO nā ʻāpana he mau ʻāpana, he papaʻaina keiki kēia, inā ʻaʻole au i kuhihewa. He pono maoli.
TimescaleDB a me PostgreSQL
E like me ka hōʻoiaʻiʻo ʻana o nā mea hana TimescaleDB, hoʻohana lākou i kahi algorithm ʻoi aku ka pololei no ka hoʻoponopono ʻana i nā nīnau, ʻo ia hoʻi nā mea hoʻokomo, e hiki ai iā lākou ke loaʻa i ka hana mau me ka nui o ka hoʻokomo ʻana i ka dataset. ʻO ia hoʻi, ma hope o 200 miliona mau lālani o Postgres, hoʻomaka ka mea maʻamau i ka sag nui a lilo i ka hana maoli i ka ʻole, ʻoiai ʻo Timescale e ʻae iā ʻoe e hoʻokomo i nā mea hoʻokomo e like me ka hiki me ka nui o ka ʻikepili.
Pehea e hoʻokomo ai iā TimescaleDB? He maʻalahi!
Aia i loko o ka palapala, ua wehewehe ʻia - hiki iā ʻoe ke hoʻouka iā ia mai nā pūʻolo no kekahi ... Aia ma luna o nā pūʻulu Postgres mana. Hiki ke hōʻuluʻulu lima. Ua pono ia'u e houluulu no ka waihona.
Ma Zabbix, hoʻoikaika mākou i ka Extention. Manaʻo wau ʻo ka poʻe i hoʻohana i ka Extention ma Postgres ... Hoʻōla wale ʻoe i ka Extention, hana ia no ka waihona Zabbix āu e hoʻohana nei.
A ʻo ka hana hope loa ...
TimescaleDB. Ka neʻe ʻana o nā papa mōʻaukala
Pono ʻoe e hana i kahi hypertable. Aia kahi hana kūikawā no kēia - E hana i ka hypertable. I loko o ia mea, ʻo ka pākaukau mua ka papa e pono ai i kēia waihona (no ka mea e pono ai ʻoe e hana i kahi hypertable).
ʻO ke kahua kahi e hana ai, a me chunk_time_interval (ʻo ia ka wā o nā ʻāpana (pono e hoʻohana ʻia) 86 i hoʻokahi lā.
ʻĀpana Migrate_data: Inā ʻoe e hoʻokomo i ka ʻoiaʻiʻo, a laila e neʻe kēia i nā ʻikepili āpau i kēia manawa i nā ʻāpana i hana mua ʻia.
Ua hoʻohana au i ka migrate_data iaʻu iho - pono ia i ka manawa kūpono, ma muli o ka nui o kāu waihona. Ua loaʻa iaʻu ma kahi terabyte - ʻoi aku ma mua o hoʻokahi hola e hana ai. I kekahi mau hihia, i ka wā o ka hoʻāʻo ʻana, ua holoi au i ka ʻikepili mōʻaukala no ka kikokikona (history_text) a me ke kaula (history_str) i ʻole e hoʻoili iā lākou - ʻaʻole hoihoi loa iaʻu.
A hana mākou i ka hōʻano hope loa i kā mākou db_extention: hoʻokomo mākou i ka timescaledb i mea e hoʻomaopopo ai ka waihona a me kā mākou Zabbix aia kahi db_extention. Hoʻolaʻa ʻo ia a hoʻohana i ka syntax kūpono a me nā nīnau i ka waihona, me ka hoʻohana ʻana i kēlā mau "ʻano" e pono ai no TimescaleDB.
Hoʻonohonoho kikowaena
Ua hoʻohana au i ʻelua mau kikowaena. ʻO ka mea kikowaena mua he mīkini liʻiliʻi liʻiliʻi, 20 kaʻina hana, 16 gigabytes o RAM. Ua hoʻonohonoho au i ka Postgres 10.8 ma luna:
ʻO ka ʻōnaehana hana ʻo Debian, ʻo ka ʻōnaehana faila he xfs. Hana wau i nā hoʻonohonoho liʻiliʻi e hoʻohana i kēia waihona kikoʻī, hoʻemi i ka mea a Zabbix e hoʻohana ai. Ma ka mīkini hoʻokahi aia kahi kikowaena Zabbix, PostgreSQL a me nā mea lawe ukana.
Ua hoʻohana au i 50 mau mea hana e hoʻohana ana i LoadableModule e hoʻopuka koke i nā hopena like ʻole. ʻO lākou ka mea nāna i hoʻokumu i nā kaula, nā helu, a pēlā aku. Ua hoʻopiha au i ka waihona me ka nui o ka ʻikepili. I ka hoʻomaka ʻana, loaʻa i ka hoʻonohonoho ʻana he 5 tausani mau mea ʻikepili no kēlā me kēia host, a ma kahi o kēlā me kēia mea ʻikepili i loaʻa kahi hoʻoiho - i mea e lilo ai kēia i hoʻonohonoho maoli. I kekahi manawa pono ʻoe i ʻoi aku ma mua o hoʻokahi hoʻoiho e hoʻohana ai.
Ua hoʻoponopono au i ka wā hoʻohou a me ka ukana ponoʻī ma o ka hoʻohana ʻana i nā mea hana 50 (hoʻohui hou aku), akā me ka hoʻohana ʻana i nā mea ʻikepili ikaika a hoʻemi i ka wā hoʻonui i 4 kekona.
Hoao hana. PostgreSQL: 36 tausani NVPs
ʻO ka hoʻomaka mua, ʻo ka hoʻonohonoho mua i loaʻa iaʻu ma ka PostreSQL 10 maʻemaʻe ma kēia hāmeʻa (35 tausani mau waiwai i kekona). Ma keʻano laulā, e like me kāu e ʻike ai ma ka pale, ʻo ka hoʻokomo ʻana i ka ʻikepili e lawe i nā hapa o ke kekona - maikaʻi a wikiwiki nā mea āpau, SSD drives (200 gigabytes). ʻO ka mea wale nō ʻo 20 GB e hoʻopiha wikiwiki.
Nui nā kiʻi like ʻole i ka wā e hiki mai ana. ʻO kēia kahi dashboard hana maʻamau o ka server Zabbix.
ʻO ka pakuhi mua ka helu o nā waiwai i kekona (uliuli, hema hema), 35 tausani waiwai i kēia hihia. ʻO kēia (luna waena) ka hoʻouka ʻana i nā kaʻina hana, a ʻo kēia (luna ʻākau) ka hoʻouka ʻana i nā kaʻina hana i loko: nā moʻolelo syncers a me ka hale mālama hale, kahi e holo nei (waena lalo) no kekahi manawa lōʻihi.
Hōʻike kēia pakuhi (waena waena) i ka hoʻohana ʻana i ka ValueCache - ʻehia ka nui o ka ValueCache i paʻi no nā mea hoʻomaka (he mau kaukani waiwai no ke kekona). ʻO kekahi pakuhi koʻikoʻi ʻo ka hā (hema hema), e hōʻike ana i ka hoʻohana ʻana iā HistoryCache, aʻu i kamaʻilio ai, ʻo ia ka pale ma mua o ka hoʻokomo ʻana i ka waihona.
Hoao hana. PostgreSQL: 50 tausani NVPs
A laila, hoʻonui au i ka ukana i 50 tausani mau waiwai i kēlā me kēia kekona ma ka lako like. Ke hoʻouka ʻia e Housekeeper, 10 tausani mau waiwai i hoʻopaʻa ʻia i 2-3 kekona me ka helu ʻana. He aha, ʻoiaʻiʻo, i hōʻike ʻia ma ke kiʻi kiʻi aʻe:
Ke hoʻomaka nei ka "Housekeeper" e hoʻopilikia i ka hana, akā ma ka laulā, ʻo ka ukana ma luna o ka mōʻaukala-sinker trappers aia nō i ka pae o 60% (ʻekolu pakuhi, luna ʻākau). Hoʻomaka ʻo HistoryCache e hoʻopiha i ka wā e holo ana ʻo Housekeeper (hema hema). Ma kahi o ka hapalua gigabyte, 20% piha.
Hoao hana. PostgreSQL: 80 tausani NVPs
A laila hoʻonui au i 80 tausani mau waiwai i kekona:
Ma kahi o 400 tausani mau mea ʻikepili, 280 tausani trigger. ʻO ka mea hoʻokomo, e like me kāu e ʻike ai, ma ke ʻano o ka ukana o nā mea kanu mōʻaukala (he 30 o lākou) ua kiʻekiʻe loa. A laila ua hoʻonui au i nā ʻāpana like ʻole: nā mea hoʻoheheʻe mōʻaukala, cache... Ma kēia hāmeʻa, hoʻomaka ka hoʻouka ʻana o nā mea hoʻoiho mōʻaukala i ka nui loa, kokoke "ma ka papa" - no laila, hele ʻo HistoryCache i kahi ukana kiʻekiʻe loa:
I kēia manawa a pau ua nānā au i nā ʻōnaehana ʻōnaehana āpau (pehea e hoʻohana ʻia ai ka processor, RAM) a ʻike i ka nui o ka hoʻohana ʻana i ka disk - ua loaʻa iaʻu ka mana kiʻekiʻe o kēia disk ma kēia hāmeʻa, ma kēia mīkini virtual. Ua hoʻomaka ʻo "Postgres" e hoʻolei i ka ʻikepili me ka ikaika, a ʻaʻohe manawa o ka disk e kākau, heluhelu ...
Ua lawe au i kahi kikowaena ʻē aʻe i loaʻa i nā kaʻina hana 48 a me 128 gigabytes o RAM:
Ua "hoʻokani" au iā ia - hoʻokomo i ka History Syncer (60 mau ʻāpana) a loaʻa i ka hana ʻae ʻia. ʻO kaʻoiaʻiʻo,ʻaʻole mākou "ma ka papa," akāʻo kēia paha ka palena o ka huahana, kahi e pono ai ke hana i kekahi mea e pili ana.
Hoao hana. TimescaleDB: 80 tausani NVP
ʻO kaʻu hana nui ka hoʻohana ʻana iā TimescaleDB. Hōʻike kēlā me kēia pakuhi i kahi luʻu:
ʻO kēia mau hemahema ka neʻe ʻana o ka ʻikepili. Ma hope o kēlā, i ka server Zabbix, ua hoʻololi nui ka hoʻouka ʻana o ka ʻikepili o ka mōʻaukala, e like me kāu e ʻike ai. Hāʻawi ia iā ʻoe e hoʻokomo i ka ʻikepili kokoke i 3 mau manawa wikiwiki a hoʻohana i ka HistoryCache liʻiliʻi - no laila, e loaʻa iā ʻoe ka ʻikepili i ka manawa. Eia hou, 80 tausani mau waiwai i kēlā me kēia kekona he kiʻekiʻe kiʻekiʻe (ʻoiaʻiʻo, ʻaʻole no Yandex). ʻO ka holoʻokoʻa he hoʻonohonoho nui kēia, me hoʻokahi kikowaena.
ʻO ka ho'āʻo hana PostgreSQL: 120 tausani NVPs
A laila, ua hoʻonui au i ka waiwai o ka helu o nā mea ʻikepili i ka hapalua miliona a loaʻa iaʻu kahi waiwai helu o 125 tausani i kēlā me kēia kekona:
A loaʻa iaʻu kēia mau pakuhi:
Ma ke kumu, he hoʻonohonoho hana kēia, hiki ke hana no ka manawa lōʻihi. Akā, no ka mea he 1,5 terabyte disk wale nō kaʻu, ua hoʻohana au ia mea i nā lā ʻelua. ʻO ka mea nui loa i ka manawa like ua hana ʻia nā ʻāpana hou ma TimescaleDB, a ʻaʻole i ʻike ʻia kēia no ka hana, ʻaʻole hiki ke ʻōlelo ʻia e pili ana i MySQL.
ʻO ka maʻamau, hana ʻia nā ʻāpana i ka pō, no ka mea maʻamau kēia e poloka i ka hoʻokomo ʻana a hana pū me nā papa a hiki ke alakaʻi i ka hōʻino o ka lawelawe. I kēia hihia ʻaʻole kēia ka hihia! ʻO ka hana nui ka hoʻāʻo ʻana i nā mana o TimescaleDB. ʻO ka hopena ka helu penei: 120 tausani mau waiwai i kekona.
Aia kekahi mau laʻana ma ke kaiāulu:
Ua hoʻohuli ke kanaka i ka TimescaleDB a ua hāʻule ka ukana ma ka hoʻohana ʻana i ka io.weight ma ka papa hana; a ua emi pū ka hoʻohana ʻana i nā mea kaʻina hana kūloko ma muli o ke komo ʻana o TimescaleDB. Eia kekahi, he mau pancake disks maʻamau kēia, ʻo ia hoʻi, he mīkini virtual maʻamau ma nā disks maʻamau (ʻaʻole SSD)!
No kekahi mau hoʻonohonoho liʻiliʻi i kaupalena ʻia e ka hana disk, ʻo TimescaleDB, i koʻu manaʻo, he hopena maikaʻi loa. E ʻae iā ʻoe e hoʻomau i ka hana ma mua o ka neʻe ʻana i ka ʻenehana wikiwiki no ka waihona.
Ke kono nei au iā ʻoukou a pau i kā mākou mau hanana: Conference in Moscow, Summit in Riga. E hoʻohana i kā mākou kahawai - Telegram, forum, IRC. Inā he mau nīnau kāu, e hele mai i kā mākou pākaukau, hiki iā mākou ke kamaʻilio e pili ana i nā mea āpau.
Nīnau a ka lehulehu
Nīnau mai ka lehulehu (ma hope aku - A): - Inā maʻalahi ka hoʻonohonoho ʻana o TimescaleDB, a hāʻawi ia i ka hoʻoikaika ʻana i ka hana, a laila pono paha e hoʻohana ʻia kēia ma ke ʻano he hana maikaʻi loa no ka hoʻonohonoho ʻana iā Zabbix me Postgres? A aia kekahi mau pitfalls a me nā hemahema o kēia hoʻonā, a ma hope paha, inā ua hoʻoholo wau e hana iā Zabbix noʻu iho, hiki iaʻu ke lawe maʻalahi iā Postgres, e hoʻokomo i ka Timescale ma laila koke, hoʻohana a ʻaʻole noʻonoʻo i kekahi pilikia?
AG: - ʻAe, e ʻōlelo wau he ʻōlelo maikaʻi kēia: e hoʻohana koke iā Postgres me ka hoʻonui ʻo TimescaleDB. E like me kaʻu i ʻōlelo ai, he nui nā loiloi maikaʻi, ʻoiai ʻo kēia "hiʻohiʻona" he hoʻokolohua. Akā, hōʻike maoli nā hoʻokolohua he hopena maikaʻi loa kēia (me TimescaleDB) a manaʻo wau e ulu aʻe! Ke nānā nei mākou i ke ʻano o ka ulu ʻana o kēia hoʻonui a e hana i nā loli e like me ka mea e pono ai.
ʻOiai i ka wā o ka hoʻomohala ʻana, ua hilinaʻi mākou i kekahi o kā lākou "hiʻohiʻona" kaulana: hiki ke hana me nā ʻāpana ʻokoʻa iki. Akā, ua ʻoki lākou i ka hoʻokuʻu ʻana aʻe, a pono mākou e hoʻōki i ka hilinaʻi ʻana i kēia code. Manaʻo wau e hoʻohana i kēia hoʻonā i nā hoʻonohonoho he nui. Inā hoʻohana ʻoe i MySQL... No nā hoʻonohonoho maʻamau, hana maikaʻi kekahi hopena.
A: - Ma nā kiʻi hope loa mai ke kaiāulu, aia kahi pakuhi me "Housekeeper":
Ua hoʻomau ʻo ia i kāna hana. He aha ka hana a Housekeeper me TimescaleDB?
AG: - I kēia manawa ʻaʻole hiki iaʻu ke ʻōlelo maopopo - e nānā wau i ke code a haʻi iā ʻoe i nā kikoʻī hou aku. Hoʻohana ia i nā nīnau TimescaleDB ʻaʻole e holoi i nā ʻāpana, akā e hoʻohui pū iā lākou. ʻAʻole wau mākaukau e pane i kēia nīnau loea. E ʻike hou aku mākou ma ke kū i kēia lā a i ʻole ʻapōpō.
A: - He nīnau like kaʻu - e pili ana i ka hana o ka hana holoi ma Timescale.
A (pane mai ka lehulehu): - Ke hoʻopau ʻoe i ka ʻikepili mai kahi papaʻaina, inā ʻoe e hana ma o ka holoi ʻana, a laila pono ʻoe e hele i ka papa - holoi, hoʻomaʻemaʻe, māka i nā mea āpau no ka wā e hiki mai ana. I ka Timescale, no ka mea he mau ʻāpana kāu, hiki iā ʻoe ke hāʻule. ʻO ka ʻōlelo koʻikoʻi, haʻi wale ʻoe i ka faila i loko o ka ʻikepili nui: "Delete!"
Hoʻomaopopo wale ʻo Timescale ʻaʻole i loaʻa kēlā ʻāpana. A no ka mea ua hoʻohui ʻia i loko o ka mea hoʻolālā nīnau, hoʻohana ʻo ia i nā makau e hopu i kāu mau kūlana ma ke koho a i ʻole nā hana ʻē aʻe a maopopo koke ʻaʻole e noho hou ana kēia puʻupuʻu - "ʻAʻole au e hele hou i laila!" (ʻaʻole loaʻa ka ʻikepili). ʻo ia wale nō! ʻO ia hoʻi, hoʻololi ʻia kahi papa ʻaina e ka holoi ʻana i ka faila binary, no laila ua wikiwiki.
A: - Ua hoʻopā mua mākou i ke kumuhana o ka non-SQL. I koʻu hoʻomaopopo ʻana, ʻaʻole pono ʻo Zabbix e hoʻololi i ka ʻikepili, a ʻo kēia mau mea āpau e like me kahi log. Hiki paha ke hoʻohana i nā ʻikepili kūikawā ʻaʻole hiki ke hoʻololi i kā lākou ʻikepili, akā i ka manawa like e mālama, hōʻiliʻili, a puʻunaue i ka wikiwiki loa - Clickhouse, no ka laʻana, kahi mea Kafka-like?.. ʻO Kafka kekahi log! Hiki paha ke hoʻohui iā lākou?
AG: - Hiki ke hoʻokuʻu ʻia. Loaʻa iā mākou kekahi "ʻano" mai ka mana 3.4: hiki iā ʻoe ke kākau i nā faila mōʻaukala, nā hanana, nā mea ʻē aʻe a pau i nā faila; a laila e hoʻouna aku i kekahi waihona ʻē aʻe me ka hoʻohana ʻana i kekahi mea lima. ʻOiaʻiʻo, nui ka poʻe e hana hou a kākau pololei i ka waihona. Ma ka lele, kākau nā moʻolelo i kēia mau mea a pau i nā faila, hoʻololi i kēia mau faila, a pēlā aku, a hiki iā ʻoe ke hoʻololi i kēia i Clickhouse. ʻAʻole hiki iaʻu ke ʻōlelo e pili ana i nā hoʻolālā, akā e hoʻomau ʻia ke kākoʻo hou aku no nā hoʻonā NoSQL (e like me Clickhouse).
A: - Ma keʻano laulā, hiki iāʻoe ke hoʻopau loa i nā postgres?
AG: - ʻOiaʻiʻo, ʻo ka mea paʻakikī loa ma Zabbix nā papa mōʻaukala, ka mea e hana ai i nā pilikia nui a me nā hanana. I kēia hihia, inā ʻaʻole ʻoe e mālama i nā hanana no ka manawa lōʻihi a mālama i ka mōʻaukala me nā hiʻohiʻona i kekahi mālama wikiwiki ʻē aʻe, a laila ma ka laulā, manaʻo wau, ʻaʻohe pilikia.
A: - Hiki iā ʻoe ke hoʻohālikelike i ka wikiwiki o nā mea āpau inā hoʻololi ʻoe i Clickhouse, no ka laʻana?
AG: - ʻAʻole au i hoʻāʻo. Manaʻo wau e hiki ke hoʻokō maʻalahi ʻia nā helu like, no ka mea aia ʻo Clickhouse i kāna kikowaena ponoʻī, akā ʻaʻole hiki iaʻu ke ʻōlelo maopopo. ʻOi aku ka maikaʻi e hoʻāʻo. Aia nā mea a pau i ka hoʻonohonoho: ʻehia ka nui o kāu mau pūʻali, a pēlā aku. ʻO ka hoʻokomo ʻana kekahi mea, akā pono ʻoe e kiʻi i kēia ʻikepili - Grafana a i ʻole kekahi mea ʻē aʻe.
A: - No laila ke kamaʻilio nei mākou e pili ana i kahi hakakā like, ʻaʻole e pili ana i ka pōmaikaʻi nui o kēia mau ʻikepili wikiwiki?
AG: - Manaʻo wau i ka wā e hoʻohui ai mākou, e nui aʻe nā hoʻokolohua pololei.
A: – Ma hea i hele ai ka RRD kahiko? He aha kāu i hoʻololi ai i nā ʻikepili SQL? I ka wā mua, ua hōʻiliʻili ʻia nā ana a pau ma RRD.
AG: - Loaʻa iā Zabbix RRD, aia paha i kahi mana kahiko loa. Loaʻa mau nā waihona SQL - kahi ala maʻamau. ʻO ke ala maʻamau ʻo MySQL, PostgreSQL (ua lōʻihi loa lākou). ʻAʻole loa mākou i hoʻohana i kahi kikowaena maʻamau no nā ʻikepili SQL a me RRD.
Kekahi mau hoʻolaha 🙂
Mahalo no kou noho pū ʻana me mākou. Makemake ʻoe i kā mākou ʻatikala? Makemake ʻoe e ʻike i nā mea hoihoi hou aʻe? E kākoʻo iā mākou ma ke kau ʻana i kahi kauoha a i ʻole ka ʻōlelo ʻana i nā hoaaloha,
ʻO Dell R730xd 2 mau manawa maʻalahi ma Equinix Tier IV kikowaena data ma Amsterdam? Eia wale nō
Source: www.habr.com