HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kongamano lijalo la HighLoad++ litafanyika tarehe 6 na 7 Aprili 2020 huko St. Petersburg Maelezo na tikiti. по ссылке. HighLoad ++ Moscow 2018. Ukumbi "Moscow". Novemba 9, 15:00. Hizi na uwasilishaji.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

* Ufuatiliaji - mtandaoni na uchanganuzi.
* Vizuizi vya msingi vya jukwaa la ZABBIX.
* Suluhisho la kuongeza uhifadhi wa uchanganuzi.
* Uboreshaji wa seva ya ZABBIX.
* Uboreshaji wa UI.
* Pata uzoefu wa kutumia mfumo chini ya mizigo ya zaidi ya 40k NVPS.
* Hitimisho fupi.

Mikhail Makurov (baadaye - MM): - Salaam wote!

Maxim Chernetsov (baadaye - MCH): - Mchana mzuri!

MM: - Acha nimtambulishe Maxim. Max ni mhandisi mwenye talanta, mwana mtandao bora ninayemjua. Maxim anahusika katika mitandao na huduma, maendeleo na uendeshaji wao.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MCH: - Na ningependa kukuambia kuhusu Mikhail. Mikhail ni msanidi programu wa C. Aliandika ufumbuzi kadhaa wa usindikaji wa trafiki wa juu kwa kampuni yetu. Tunaishi na kufanya kazi katika Urals, katika jiji la wanaume wagumu wa Chelyabinsk, katika kampuni ya Intersvyaz. Kampuni yetu ni mtoa huduma wa mtandao na huduma za televisheni za kebo kwa watu milioni moja katika miji 16.

MM: - Na inafaa kusema kuwa Intersvyaz ni zaidi ya mtoaji tu, ni kampuni ya IT. Suluhu zetu nyingi zinafanywa na idara yetu ya IT.

J: kutoka kwa seva zinazochakata trafiki hadi kituo cha simu na programu ya rununu. Idara ya TEHAMA sasa ina takriban watu 80 wenye uwezo tofauti sana.

Kuhusu Zabbix na usanifu wake

MCH: - Na sasa nitajaribu kuweka rekodi ya kibinafsi na kusema kwa dakika moja Zabbix ni nini (hapa inajulikana kama "Zabbix").

Zabbix inajiweka kama mfumo wa ufuatiliaji wa nje ya boksi wa kiwango cha biashara. Ina vipengele vingi vinavyorahisisha maisha: sheria za hali ya juu za kupanda, API ya ujumuishaji, kupanga vikundi na utambuzi wa kiotomatiki wa wapangishaji na vipimo. Zabbix ina kinachojulikana zana za kuongeza - proxies. Zabbix ni mfumo wa chanzo wazi.

Kwa kifupi kuhusu usanifu. Tunaweza kusema kuwa ina sehemu tatu:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

  • Seva. Imeandikwa katika C. Na usindikaji ngumu na uhamishaji wa habari kati ya nyuzi. Usindikaji wote unafanyika ndani yake: kutoka kwa kupokea hadi kuokoa kwenye hifadhidata.
  • Data zote zimehifadhiwa kwenye hifadhidata. Zabbix inasaidia MySQL, PostreSQL na Oracle.
  • Kiolesura cha wavuti kimeandikwa katika PHP. Kwenye mifumo mingi inakuja na seva ya Apache, lakini inafanya kazi kwa ufanisi zaidi pamoja na nginx + php.

Leo tungependa kusimulia kisa kimoja kutoka katika maisha ya kampuni yetu kuhusiana na Zabbix...

Hadithi kutoka kwa maisha ya kampuni ya Intersvyaz. Tuna nini na tunahitaji nini?

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja
Miezi 5 au 6 iliyopita. Siku moja baada ya kazi...

MCH: - Misha, hello! Nimefurahi kuwa nimeweza kukupata - kuna mazungumzo. Tulikuwa na matatizo tena na ufuatiliaji. Wakati wa ajali kubwa, kila kitu kilikuwa polepole na hakukuwa na habari kuhusu hali ya mtandao. Kwa bahati mbaya, hii sio mara ya kwanza kutokea. Ninahitaji msaada wako. Wacha tufanye ufuatiliaji wetu ufanye kazi kwa hali yoyote!

MM: - Lakini hebu tusawazishe kwanza. Sijaangalia huko kwa miaka kadhaa. Kwa kadiri ninavyokumbuka, tuliachana na Nagios na kubadilishia Zabbix takriban miaka 8 iliyopita. Na sasa tunaonekana kuwa na seva 6 zenye nguvu na takriban proksi kadhaa. Je, ninachanganya chochote?

MCH: - Karibu. Seva 15, ambazo baadhi yake ni mashine za kawaida. Jambo muhimu zaidi ni kwamba haituokoi wakati tunapoihitaji zaidi. Kama ajali - seva hupunguza kasi na huwezi kuona chochote. Tulijaribu kuboresha usanidi, lakini hii haikutoa ongezeko bora la utendakazi.

MM: - Ni wazi. Uliangalia kitu, tayari umechimba kitu kutoka kwa uchunguzi?

MCH: - Jambo la kwanza unapaswa kushughulika nalo ni hifadhidata. MySQL inapakiwa kila mara, ikihifadhi vipimo vipya, na Zabbix inapoanza kutoa rundo la matukio, hifadhidata huingia katika uendeshaji kupita kiasi kwa saa chache. Tayari nilikuambia juu ya kuboresha usanidi, lakini kwa kweli mwaka huu walisasisha vifaa: seva zina zaidi ya gigabytes mia moja ya kumbukumbu na safu za diski kwenye RAID za SSD - hakuna maana ya kuikuza kwa mstari kwa muda mrefu. Tunafanya nini?

MM: - Ni wazi. Kwa ujumla, MySQL ni hifadhidata ya LTP. Inavyoonekana, haifai tena kwa kuhifadhi kumbukumbu ya vipimo vya ukubwa wetu. Hebu tufikirie.

MCH: - Hebu!

Kuunganishwa kwa Zabbix na Clickhouse kama matokeo ya hackathon

Baada ya muda tulipokea data ya kuvutia:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Nafasi kubwa katika hifadhidata yetu ilichukuliwa na kumbukumbu ya vipimo na chini ya 1% ilitumika kwa usanidi, violezo na mipangilio. Kufikia wakati huo, tulikuwa tunatumia suluhisho kubwa la data kulingana na Clickhouse kwa zaidi ya mwaka mmoja. Mwelekeo wa harakati ulikuwa dhahiri kwetu. Katika Hackathon yetu ya spring, niliandika ushirikiano wa Zabbix na Clickhouse kwa seva na frontend. Wakati huo, Zabbix tayari ilikuwa na usaidizi kwa ElasticSearch, na tuliamua kuzilinganisha.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Ulinganisho wa Clickhouse na Elasticsearch

MM: - Kwa kulinganisha, tulitoa mzigo sawa na seva ya Zabbix hutoa na tukaangalia jinsi mifumo ingefanya kazi. Tuliandika data katika makundi ya mistari 1000, kwa kutumia CURL. Tulidhani mapema kwamba Clickhouse itakuwa bora zaidi kwa wasifu wa upakiaji ambao Zabbix hufanya. Matokeo hata yalizidi matarajio yetu:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Chini ya hali sawa za mtihani, Clickhouse aliandika data mara tatu zaidi. Wakati huo huo, mifumo yote miwili ilitumia kwa ufanisi sana (kiasi kidogo cha rasilimali) wakati wa kusoma data. Lakini Elastics ilihitaji kiasi kikubwa cha processor wakati wa kurekodi:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kwa jumla, Clickhouse ilikuwa bora zaidi kuliko Elastix kwa suala la matumizi ya processor na kasi. Wakati huo huo, kwa sababu ya ukandamizaji wa data, Clickhouse hutumia mara 11 chini kwenye gari ngumu na hufanya takriban mara 30 shughuli chache za diski:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MCH: - Ndio, kazi ya Clickhouse na mfumo mdogo wa diski inatekelezwa kwa ufanisi sana. Unaweza kutumia diski kubwa za SATA kwa hifadhidata na kupata kasi ya uandishi ya mamia ya maelfu ya mistari kwa sekunde. Mfumo wa nje ya kisanduku unaauni ugawaji, urudufishaji, na ni rahisi sana kusanidi. Tumeridhika zaidi na matumizi yake mwaka mzima.

Ili kuboresha rasilimali, unaweza kusakinisha Clickhouse karibu na hifadhidata yako kuu iliyopo na hivyo kuokoa muda mwingi wa CPU na uendeshaji wa diski. Tumehamisha kumbukumbu ya vipimo kwenye makundi yaliyopo ya Clickhouse:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Tuliondoa hifadhidata kuu ya MySQL kiasi kwamba tunaweza kuichanganya kwenye mashine moja na seva ya Zabbix na kuachana na seva iliyojitolea kwa MySQL.

Je, upigaji kura hufanya kazi vipi Zabbix?

Miezi ya 4 iliyopita

MM: - Kweli, tunaweza kusahau juu ya shida na msingi?

MCH: - Hiyo ni kwa hakika! Tatizo jingine tunalohitaji kutatua ni ukusanyaji wa data polepole. Sasa seva zetu zote 15 za wakala zimejaa SNMP na michakato ya upigaji kura. Na hakuna njia isipokuwa kusakinisha seva mpya na mpya.

MM: - Kubwa. Lakini kwanza, tuambie jinsi upigaji kura unavyofanya kazi katika Zabbix?

MCH: - Kwa kifupi, kuna aina 20 za vipimo na njia kadhaa za kuzipata. Zabbix inaweza kukusanya data katika hali ya "majibu ya ombi", au kusubiri data mpya kupitia "Trapper Interface".

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Ni muhimu kuzingatia kwamba katika Zabbix ya awali njia hii (Trapper) ni ya haraka zaidi.

Kuna seva mbadala za usambazaji wa mzigo:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Seva mbadala zinaweza kutekeleza utendakazi sawa na seva ya Zabbix, kupokea majukumu kutoka kwayo na kutuma vipimo vilivyokusanywa kupitia kiolesura cha Trapper. Hii ndiyo njia iliyopendekezwa rasmi ya kusambaza mzigo. Wakala pia ni muhimu kwa ufuatiliaji wa miundombinu ya mbali inayofanya kazi kupitia NAT au chaneli polepole:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MM: - Kila kitu ni wazi na usanifu. Inabidi tuangalie vyanzo...

Siku kadhaa baadaye

Hadithi ya jinsi nmap fping ilishinda

MM: "Nadhani nimechimba kitu."

MCH: - Niambie!

MM: - Niligundua kuwa wakati wa kuangalia upatikanaji, Zabbix hukagua upeo wa wapangishi 128 kwa wakati mmoja. Nilijaribu kuongeza nambari hii hadi 500 na kuondoa muda wa pakiti katika ping zao (ping) - hii iliongeza utendaji mara mbili. Lakini ningependa idadi kubwa zaidi.

MCH: - Katika mazoezi yangu, wakati mwingine lazima niangalie upatikanaji wa maelfu ya majeshi, na sijawahi kuona chochote haraka zaidi kuliko nmap kwa hili. Nina hakika hii ndiyo njia ya haraka zaidi. Hebu tujaribu! Tunahitaji kuongeza kwa kiasi kikubwa idadi ya wapangishi kwa kila marudio.

MM: - Angalia zaidi ya mia tano? 600?

MCH: - Angalau elfu kadhaa.

MM: - SAWA. Jambo muhimu zaidi nililotaka kusema ni kwamba niligundua kuwa upigaji kura mwingi katika Zabbix unafanywa kwa usawa. Kwa hakika tunahitaji kuibadilisha kuwa hali ya asynchronous. Kisha tunaweza kuongeza kwa kiasi kikubwa idadi ya vipimo vinavyokusanywa na wapiga kura, hasa ikiwa tutaongeza idadi ya vipimo kwa kila marudio.

MCH: - Kubwa! Na lini?

MM: - Kama kawaida, jana.

MCH: - Tulilinganisha matoleo yote mawili ya fping na nmap:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kwenye idadi kubwa ya wapangishi, nmap ilitarajiwa kuwa na ufanisi hadi mara tano zaidi. Kwa kuwa nmap hukagua muda wa upatikanaji na majibu pekee, tulihamisha hesabu ya hasara hadi kwenye vichochezi na kupunguza kwa kiasi kikubwa vipindi vya ukaguzi wa upatikanaji. Tulipata idadi kamili ya wapangishi wa nmap kuwa karibu elfu 4 kwa kila marudio. Nmap ilituruhusu kupunguza gharama ya CPU ya ukaguzi wa upatikanaji kwa mara tatu na kupunguza muda kutoka sekunde 120 hadi 10.

Uboreshaji wa upigaji kura

MM: "Kisha tukaanza kufanya wapiga kura. Tulivutiwa zaidi na ugunduzi wa SNMP na mawakala. Katika Zabbix, upigaji kura unafanywa kwa usawa na hatua maalum zimechukuliwa ili kuongeza ufanisi wa mfumo. Katika hali ya ulandanishi, kutopatikana kwa mwenyeji husababisha uharibifu mkubwa wa upigaji kura. Kuna mfumo mzima wa majimbo, kuna michakato maalum - wanaoitwa wapiga kura wasioweza kufikiwa, ambao hufanya kazi tu na majeshi yasiyoweza kufikiwa:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Huu ni ufafanuzi unaoonyesha matrix ya serikali, utata wote wa mfumo wa mabadiliko unaohitajika ili mfumo uendelee kuwa na ufanisi. Kwa kuongezea, upigaji kura wa maingiliano yenyewe ni polepole sana:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Ndiyo maana maelfu ya mitiririko ya wapiga kura kwenye dazeni za washirika hawakuweza kukusanya kiasi kinachohitajika cha data kwa ajili yetu. Utekelezaji wa asynchronous haukusuluhisha tu shida na idadi ya nyuzi, lakini pia imerahisisha kwa kiasi kikubwa mfumo wa serikali wa waandaji wasiopatikana, kwa sababu kwa nambari yoyote iliyoangaliwa katika marudio moja ya upigaji kura, muda wa juu wa kungojea ulikuwa umeisha 1:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Zaidi ya hayo, tulirekebisha na kuboresha mfumo wa upigaji kura kwa maombi ya SNMP. Ukweli ni kwamba watu wengi hawawezi kujibu maombi mengi ya SNMP kwa wakati mmoja. Kwa hivyo, tulifanya hali ya mseto, wakati upigaji kura wa SNMP wa mwenyeji sawa unafanywa kwa usawa:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Hii inafanywa kwa pakiti nzima ya majeshi. Njia hii mwishowe sio polepole kuliko ile isiyo sawa kabisa, kwani upigaji kura mia moja na nusu ya maadili ya SNMP bado ni haraka sana kuliko wakati 1 wa kuisha.

Majaribio yetu yameonyesha kuwa idadi kamili ya maombi katika marudio moja ni takriban elfu 8 kwa upigaji kura wa SNMP. Kwa jumla, mpito kwa hali ya asynchronous ilituruhusu kuharakisha utendaji wa upigaji kura kwa mara 200, mara mia kadhaa.

MCH: – Matokeo ya uboreshaji wa upigaji kura yalionyesha kuwa hatuwezi tu kuondoa proksi zote, lakini pia kupunguza vipindi vya ukaguzi mwingi, na seva mbadala hazitahitajika tena kama njia ya kushiriki mzigo.

Takriban miezi mitatu iliyopita

Badilisha usanifu - ongeza mzigo!

MM: - Kweli, Max, ni wakati wa kupata tija? Nahitaji seva yenye nguvu na mhandisi mzuri.

MCH: - Sawa, wacha tupange. Ni wakati mzuri wa kuhama kutoka kwa sehemu iliyokufa ya metrics elfu 5 kwa sekunde.

Asubuhi baada ya uboreshaji

MCH: - Misha, tulijisasisha, lakini asubuhi tulirudi nyuma ... Nadhani ni kasi gani tuliweza kufikia?

MM: - 20 elfu kiwango cha juu.

MCH: - Ndio, 25! Kwa bahati mbaya, tuko pale tulipoanzia.

MM: - Kwa nini? Je, uliendesha uchunguzi wowote?

MCH: - Ndiyo, hakika! Hapa, kwa mfano, ni juu ya kuvutia:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MM: - Hebu tuangalie. Ninaona kuwa tumejaribu idadi kubwa ya nyuzi za kupigia kura:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Lakini wakati huo huo hawakuweza kuchakata mfumo hata kwa nusu:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Na utendaji wa jumla ni mdogo sana, takriban metriki elfu 4 kwa sekunde:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Je, kuna kitu kingine chochote?

MCH: - Ndio, safu ya mmoja wa wapiga kura:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MM: - Hapa unaweza kuona wazi kwamba mchakato wa upigaji kura unasubiri "semaphores". Hizi ni kufuli:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MCH: - Haijulikani.

MM: - Angalia, hii ni sawa na hali ambapo rundo la nyuzi zinajaribu kufanya kazi na rasilimali ambazo mtu pekee anaweza kufanya kazi kwa wakati mmoja. Basi wanachoweza kufanya ni kushiriki rasilimali hii kwa wakati:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Na utendaji wa jumla wa kufanya kazi na rasilimali kama hiyo ni mdogo na kasi ya msingi mmoja:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kuna njia mbili za kutatua tatizo hili.

Boresha vifaa vya mashine, badilisha kwa cores za haraka zaidi:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Au ubadilishe usanifu na wakati huo huo ubadilishe mzigo:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MCH: - Kwa njia, kwenye mashine ya majaribio tutatumia cores chache kuliko moja ya kupambana, lakini ni mara 1,5 kwa kasi katika mzunguko kwa kila msingi!

MM: - Wazi? Unahitaji kuangalia msimbo wa seva.

Njia ya data katika seva ya Zabbix

MCH: - Ili kuijua, tulianza kuchambua jinsi data inavyohamishwa ndani ya seva ya Zabbix:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Picha nzuri, sawa? Hebu tuipitie hatua kwa hatua ili kuifanya iwe wazi zaidi au kidogo. Kuna mazungumzo na huduma zinazohusika na kukusanya data:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Husambaza vipimo vilivyokusanywa kupitia soketi hadi kwa Kidhibiti cha Preprocessor, ambapo huhifadhiwa kwenye foleni:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

"Kidhibiti cha uchakataji" hutuma data kwa wafanyikazi wake, ambayo hutekeleza maagizo ya uchakataji na kuyarudisha kupitia tundu sawa:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Baada ya hayo, msimamizi wa preprocessor huzihifadhi kwenye kashe ya historia:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kutoka huko huchukuliwa na sinkers za historia, ambao hufanya kazi nyingi kabisa: kwa mfano, kuhesabu vichochezi, kujaza cache ya thamani na, muhimu zaidi, kuokoa metrics katika hifadhi ya historia. Kwa ujumla, mchakato ni ngumu na utata sana.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MM: Jambo la kwanza tuliloona ni kwamba nyuzi nyingi zinashindana kwa kinachojulikana kama "cache ya usanidi" (eneo la kumbukumbu ambalo usanidi wote wa seva huhifadhiwa). Nyuzi zinazohusika na kukusanya data hufanya uzuiaji mwingi:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

...kwa vile usanidi huhifadhi si tu vipimo na vigezo vyake, lakini pia foleni ambazo wapiga kura huchukua taarifa kuhusu nini cha kufanya baadaye. Wakati kuna wapiga kura wengi na mmoja anazuia usanidi, wengine husubiri maombi:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Wapiga kura hawapaswi kugombana

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kwa hivyo, jambo la kwanza tulilofanya ni kugawanya foleni katika sehemu 4 na kuruhusu wapiga kura kuzuia foleni hizi, sehemu hizi kwa wakati mmoja, chini ya hali salama:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Hii iliondoa ushindani wa kashe ya usanidi, na kasi ya wapiga kura iliongezeka sana. Lakini basi tulikutana na ukweli kwamba msimamizi wa preprocessor alianza kukusanya foleni ya kazi:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kidhibiti cha preprocessor lazima aweze kuweka kipaumbele

Hii ilitokea katika hali ambapo alikosa utendaji. Kisha alichoweza kufanya ni kukusanya maombi kutoka kwa michakato ya kukusanya data na kuongeza bafa yao hadi ikatumia kumbukumbu yote na kuanguka:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Ili kutatua tatizo hili, tuliongeza tundu la pili ambalo liliwekwa maalum kwa wafanyakazi:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kwa hivyo, msimamizi wa preprocessor alipata fursa ya kutanguliza kazi yake na, ikiwa buffer inakua, kazi ni kupunguza kasi ya uondoaji, na kuwapa wafanyikazi fursa ya kuchukua bafa hii:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Ndipo tulipogundua kuwa moja ya sababu za kudorora ni wafanyakazi wenyewe, kwa vile walikuwa wakigombea rasilimali ambayo haikuwa na umuhimu kabisa kwa kazi yao. Tuliandika tatizo hili kama urekebishaji wa hitilafu, na tayari limetatuliwa katika matoleo mapya ya Zabbix:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Tunaongeza idadi ya soketi - tunapata matokeo

Zaidi ya hayo, meneja wa preprocessor yenyewe akawa kizuizi, kwa kuwa ni thread moja. Ilikaa kwenye kasi ya msingi, ikitoa kasi ya juu ya metrics elfu 70 kwa sekunde:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kwa hivyo, tulifanya nne, na seti nne za soketi, wafanyikazi:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Na hii ilituruhusu kuongeza kasi hadi takriban metrics elfu 130:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Ukosefu wa mstari wa ukuaji unaelezewa na ukweli kwamba ushindani wa cache ya historia umeonekana. Wasimamizi 4 wa wasindikaji wa awali na sinki za historia walishindania. Katika hatua hii, tulikuwa tukipokea takriban vipimo elfu 130 kwa sekunde kwenye mashine ya majaribio, tukitumia takriban 95% ya kichakataji:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Takriban miezi 2,5 iliyopita

Kukataa kutoka kwa snmp-jumuiya kuliongeza NVP kwa mara moja na nusu

MM: - Max, ninahitaji gari jipya la majaribio! Hatufai tena katika hii ya sasa.

MCH: - Una nini sasa?

MM: - Sasa - 130k NVPs na kichakataji kilicho tayari kwa rafu.

MCH: - Wow! Baridi! Subiri, nina maswali mawili. Kulingana na mahesabu yangu, hitaji letu ni karibu metrics 15-20 kwa sekunde. Kwa nini tunahitaji zaidi?

MM: "Nataka kumaliza kazi." Ningependa kuona ni kiasi gani tunaweza kubana nje ya mfumo huu.

MCH: - Lakini…

MM: "Lakini haina maana kwa biashara."

MCH: - Ni wazi. Na swali la pili: tunaweza kuunga mkono kile tulicho nacho sasa peke yetu, bila msaada wa msanidi programu?

MM: - Sidhani. Kubadilisha jinsi kache ya usanidi inavyofanya kazi ni shida. Inaathiri mabadiliko katika nyuzi nyingi na ni ngumu sana kudumisha. Uwezekano mkubwa zaidi, itakuwa ngumu sana kuitunza.

MCH: "Basi tunahitaji aina fulani ya mbadala."

MM: - Kuna chaguo kama hilo. Tunaweza kubadili kwa cores za haraka, huku tukiacha mfumo mpya wa kufunga. Bado tutapata utendakazi wa vipimo elfu 60-80. Wakati huo huo, tunaweza kuacha wengine wote wa kanuni. Clickhouse na upigaji kura wa asynchronous utafanya kazi. Na itakuwa rahisi kudumisha.

MCH: - Kushangaza! Nashauri tuishie hapa.

Baada ya kuboresha upande wa seva, hatimaye tuliweza kuzindua nambari mpya katika uzalishaji. Tuliachana na baadhi ya mabadiliko kwa kupendelea kubadilishia mashine yenye cores haraka na kupunguza idadi ya mabadiliko ya msimbo. Pia tumerahisisha usanidi na kuondoa makro katika vipengee vya data inapowezekana, kwani zinaanzisha ufungaji wa ziada.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kwa mfano, kuachana na snmp-community macro, ambayo mara nyingi hupatikana katika nyaraka na mifano, kwa upande wetu kulifanya iwezekane kuharakisha NVPs kwa takriban mara 1,5.

Baada ya siku mbili katika uzalishaji

Inaondoa madirisha ibukizi ya historia ya matukio

MCH: - Misha, tumekuwa tukitumia mfumo kwa siku mbili, na kila kitu kinafanya kazi. Lakini tu wakati kila kitu kitafanya kazi! Tulikuwa tumepanga kazi na uhamishaji wa sehemu kubwa ya mtandao, na tukaangalia tena kwa mikono yetu kile kilichopanda na kisichokuwa.

MM: - Haiwezi kuwa! Tuliangalia kila kitu mara 10. Seva hushughulikia kutopatikana kabisa kwa mtandao papo hapo.

MCH: - Ndio, ninaelewa kila kitu: seva, hifadhidata, juu, austat, kumbukumbu - kila kitu ni haraka ... Lakini tunaangalia kiolesura cha wavuti, na kuna processor "kwenye rafu" kwenye seva na hii:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MM: - Ni wazi. Hebu tuangalie mtandao. Tuligundua kuwa katika hali ambapo kulikuwa na idadi kubwa ya matukio amilifu, wijeti nyingi za moja kwa moja zilianza kufanya kazi polepole sana:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Sababu ya hii ilikuwa kizazi cha madirisha ibukizi ya historia ya matukio ambayo yanatolewa kwa kila kipengee kwenye orodha. Kwa hiyo, tuliacha kizazi cha madirisha haya (alitoa maoni kwa mistari 5 kwenye msimbo), na hii ilitatua matatizo yetu.

Muda wa kupakia wijeti, hata wakati haupatikani kabisa, umepunguzwa kutoka dakika kadhaa hadi sekunde 10-15 zinazokubalika kwetu, na historia bado inaweza kutazamwa kwa kubofya wakati:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Baada ya kazi. miezi 2 iliyopita

MCH: - Misha, unaondoka? Tunapaswa kuzungumza.

MM: - Sikukusudia. Je! una kitu na Zabbix tena?

MCH: - Hapana, pumzika! Nilitaka tu kusema: kila kitu kinafanya kazi, asante! Nina bia.

Zabbix ina ufanisi

Zabbix ni mfumo na utendaji mzuri wa ulimwengu wote na tajiri. Inaweza kutumika kwa usakinishaji mdogo nje ya boksi, lakini mahitaji yanavyoongezeka, lazima iboreshwe. Ili kuhifadhi kumbukumbu kubwa ya vipimo, tumia hifadhi inayofaa:

  • unaweza kutumia zana zilizojengwa kwa namna ya kuunganishwa na Elasticsearch au kupakia historia kwenye faili za maandishi (zinazopatikana kutoka toleo la XNUMX);
  • Unaweza kuchukua fursa ya uzoefu wetu na ushirikiano na Clickhouse.

Ili kuongeza kasi ya kukusanya vipimo, vikusanye kwa kutumia mbinu zisizolingana na kuzisambaza kupitia kiolesura cha trapper hadi kwenye seva ya Zabbix; au unaweza kutumia kiraka kufanya wapiga kura wa Zabbix wafanane.

Zabbix imeandikwa kwa C na inafaa kabisa. Kutatua vikwazo kadhaa vya usanifu hukuruhusu kuongeza zaidi utendakazi wake na, kwa uzoefu wetu, kupata zaidi ya metriki elfu 100 kwenye mashine ya kusindika moja.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kiraka sawa cha Zabbix

MM: - Ninataka kuongeza pointi kadhaa. Ripoti nzima ya sasa, majaribio yote, nambari zimetolewa kwa usanidi tunaotumia. Sasa tunachukua takriban vipimo elfu 20 kwa sekunde kutoka kwayo. Ikiwa unajaribu kuelewa ikiwa hii itakufanyia kazi, unaweza kulinganisha. Kilichojadiliwa leo kimetumwa kwenye GitHub kwa namna ya kiraka: github.com/miklert/zabbix

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

Kiraka ni pamoja na:

  • ushirikiano kamili na Clickhouse (seva ya Zabbix na frontend);
  • kutatua matatizo na meneja wa preprocessor;
  • upigaji kura usio na usawa.

Kiraka kinaendana na toleo lote la 4, pamoja na lts. Uwezekano mkubwa zaidi, na mabadiliko madogo itafanya kazi kwenye toleo la 3.4.

Asante kwa mawazo yako.

maswali

Swali kutoka kwa hadhira (hapa – A): – Habari za mchana! Tafadhali niambie, una mipango ya mwingiliano mkali na timu ya Zabbix au pamoja nao na wewe, ili hii sio kiraka, lakini tabia ya kawaida ya Zabbix?

MM: - Ndiyo, kwa hakika tutafanya baadhi ya mabadiliko. Kitu kitatokea, kitu kitabaki kwenye kiraka.

J: - Asante sana kwa ripoti nzuri! Tafadhali niambie, baada ya kutumia kiraka, usaidizi kutoka kwa Zabbix utabaki na jinsi ya kuendelea kusasisha matoleo ya juu zaidi? Je, itawezekana kusasisha Zabbix baada ya kiraka chako hadi 4.2, 5.0?

MM: - Siwezi kusema chochote kuhusu msaada. Ikiwa ningekuwa msaada wa kiufundi wa Zabbix, labda ningesema hapana, kwa sababu hii ni msimbo wa mtu mwingine. Kuhusu codebase ya 4.2, msimamo wetu ni: "Tutasonga kwa wakati, na tutajisasisha kuhusu toleo linalofuata." Kwa hivyo, kwa muda tutakuwa tukichapisha kiraka kwa matoleo yaliyosasishwa. Tayari nilisema katika ripoti: idadi ya mabadiliko na matoleo bado ni ndogo sana. Nadhani mpito kutoka 3.4 hadi 4 ulituchukua kama dakika 15. Kitu kilibadilika huko, lakini sio muhimu sana.

J: - Kwa hivyo unapanga kusaidia kiraka chako na unaweza kukisakinisha kwa usalama katika toleo la umma na kupokea masasisho kwa njia fulani katika siku zijazo?

MM: - Tunapendekeza sana. Hii inatatua matatizo mengi kwa ajili yetu.

MCH: - Kwa mara nyingine tena, ningependa kuzingatia ukweli kwamba mabadiliko ambayo hayajali usanifu na hayahusu kuzuia au foleni ni za kawaida, ziko katika moduli tofauti. Hata kwa mabadiliko madogo unaweza kuyadumisha kwa urahisi kabisa.

MM: - Ikiwa una nia ya maelezo, basi "Clickhouse" hutumia kinachojulikana maktaba ya historia. Imefunguliwa - ni nakala ya usaidizi wa Elastics, ambayo ni, inaweza kusanidiwa. Upigaji kura hubadilisha wapiga kura pekee. Tunaamini hii itafanya kazi kwa muda mrefu.

J: - Asante sana. Niambie, kuna nyaraka zozote za mabadiliko yaliyofanywa?

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS kwenye seva moja

MM: - Nyaraka ni kiraka. Kwa wazi, kwa kuanzishwa kwa Clickhouse, na kuanzishwa kwa aina mpya za wapiga kura, chaguzi mpya za usanidi hutokea. Kiungo kutoka kwenye slaidi ya mwisho kina maelezo mafupi ya jinsi ya kukitumia.

Kuhusu kubadilisha fping na nmap

J: - Ulitekelezaje hili hatimaye? Unaweza kutoa mifano maalum: una kamba na hati ya nje? Ni nini huishia kuangalia idadi kubwa kama hii ya wakaribishaji haraka sana? Je, unawajuaje wenyeji hawa? Je! tunahitaji kuwalisha kwa nmap kwa njia fulani, kuzipata kutoka mahali fulani, kuziweka ndani, kuendesha kitu? ..

MM: - Baridi. Swali sahihi sana! Jambo ni hili. Tulirekebisha maktaba (ICMP ping, sehemu ya Zabbix) kwa ukaguzi wa ICMP, ambao unaonyesha idadi ya pakiti - moja (1), na msimbo unajaribu kutumia nmap. Hiyo ni, hii ni kazi ya ndani ya Zabbix, ambayo imekuwa kazi ya ndani ya pinger. Ipasavyo, hakuna maingiliano au matumizi ya trapper inahitajika. Hii ilifanyika kwa makusudi ili kuacha mfumo mzima na usilazimike kushughulika na maingiliano ya mifumo miwili ya hifadhidata: nini cha kuangalia, kupakia kupitia mpiga kura, na upakiaji wetu umevunjika? .. Hii ni rahisi zaidi.

J: - Je, inafanya kazi kwa washirika pia?

MM: - Ndio, lakini hatukuangalia. Msimbo wa kupigia kura ni sawa katika Zabbix na seva. Inapaswa kufanya kazi. Acha nisisitize tena: utendakazi wa mfumo ni kwamba hatuhitaji proksi.

MCH: - Jibu sahihi kwa swali ni: "Kwa nini unahitaji wakala na mfumo kama huu?" Kwa sababu tu ya NAT au ufuatiliaji kupitia aina fulani ya chaneli ya polepole...

J: - Na unatumia Zabbix kama kichochezi, ikiwa ninaelewa kwa usahihi. Au picha zako (ambapo safu ya kumbukumbu iko) imehamishiwa kwenye mfumo mwingine, kama vile Grafana? Au hutumii utendakazi huu?

MM: - Nitasisitiza kwa mara nyingine tena: tumepata ushirikiano kamili. Tunamimina historia kwenye Clickhouse, lakini wakati huo huo tumebadilisha php frontend. Sehemu ya mbele ya Php inakwenda kwa Clickhouse na hufanya picha zote kutoka hapo. Wakati huo huo, kuwa waaminifu, tuna sehemu inayojenga data katika mifumo mingine ya kuonyesha picha kutoka kwa Clickhouse sawa, kutoka kwa data sawa ya Zabbix.

MCH: - Katika "Grafan" pia.

Je, maamuzi yalifanywaje kuhusu ugawaji wa rasilimali?

J: - Shiriki kidogo ya jikoni yako ya ndani. Uamuzi ulifanywaje kwamba ilikuwa muhimu kutenga rasilimali kwa usindikaji mkubwa wa bidhaa? Hizi ni, kwa ujumla, hatari fulani. Na tafadhali niambie, katika muktadha wa ukweli kwamba utaunga mkono matoleo mapya: uamuzi huu unahalalisha vipi kutoka kwa mtazamo wa usimamizi?

MM: - Inavyoonekana, hatukuiambia mchezo wa kuigiza wa historia vizuri. Tulijikuta katika hali ambayo lazima kitu kifanyike, na kimsingi tulienda na timu mbili zinazofanana:

  • Moja ilikuwa kuzindua mfumo wa ufuatiliaji kwa kutumia mbinu mpya: ufuatiliaji kama huduma, seti ya kawaida ya masuluhisho ya chanzo huria ambayo tunachanganya na kisha kujaribu kubadilisha mchakato wa biashara ili kufanya kazi na mfumo mpya wa ufuatiliaji.
  • Wakati huo huo, tulikuwa na mtayarishaji programu mwenye shauku ambaye alikuwa akifanya hivi (kuhusu yeye mwenyewe). Ilifanyika kwamba alishinda.

J: - Na ukubwa wa timu ni nini?

MCH: - Yeye yuko mbele yako.

J: - Kwa hivyo, kama kawaida, unahitaji shauku?

MM: - Sijui shauku ni nini.

J: - Katika kesi hii, inaonekana, wewe. Asante sana, wewe ni mzuri.

MM: - Asante.

Kuhusu viraka vya Zabbix

J: – Kwa mfumo unaotumia proksi (kwa mfano, katika baadhi ya mifumo iliyosambazwa), je, inawezekana kubadilika na kuweka viraka, tuseme, wapiga kura, wakala na kwa sehemu mtayarishaji wa Zabbix yenyewe; na mwingiliano wao? Inawezekana kuongeza maendeleo yaliyopo kwa mfumo ulio na proksi nyingi?

MM: - Ninajua kuwa seva ya Zabbix imekusanywa kwa kutumia proksi (msimbo unakusanywa na kupatikana). Hatujajaribu hili katika toleo la umma. Sina hakika juu ya hili, lakini nadhani msimamizi wa preprocessor haitumiki kwenye proksi. Kazi ya proksi ni kuchukua seti ya vipimo kutoka kwa Zabbix, kuziunganisha (pia hurekodi usanidi, hifadhidata ya ndani) na kuirudisha kwa seva ya Zabbix. Seva yenyewe basi itafanya uchakataji itakapoipokea.

Nia ya wakala inaeleweka. Tutaiangalia. Hii ni mada ya kuvutia.

J: - Wazo lilikuwa hili: ikiwa unaweza kuunganisha wapiga kura, unaweza kuwaweka kwenye proksi na kurekebisha mwingiliano na seva, na kurekebisha kichakataji kwa madhumuni haya kwenye seva pekee.

MM: - Nadhani ni rahisi zaidi. Unachukua msimbo, weka kiraka, kisha uisanidi jinsi unavyohitaji - kukusanya seva mbadala (kwa mfano, na ODBC) na usambaze msimbo uliobanwa kwenye mifumo. Inapobidi - kukusanya wakala, inapobidi - seva.

J: - Uwezekano mkubwa zaidi, hautalazimika kuweka kiraka cha upitishaji wa wakala kwa seva zaidi?

MCH: - Hapana, ni kiwango.

MM: - Kwa kweli, moja ya mawazo haikusikika. Daima tumedumisha usawa kati ya mlipuko wa mawazo na kiasi cha mabadiliko na urahisi wa msaada.

Baadhi ya matangazo 🙂

Asante kwa kukaa nasi. Je, unapenda makala zetu? Je, ungependa kuona maudhui ya kuvutia zaidi? Tuunge mkono kwa kuweka agizo au kupendekeza kwa marafiki, VPS ya wingu kwa watengenezaji kutoka $4.99, analogi ya kipekee ya seva za kiwango cha kuingia, ambayo ilivumbuliwa na sisi kwa ajili yako: Ukweli wote kuhusu VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kutoka $19 au jinsi ya kushiriki seva? (inapatikana kwa RAID1 na RAID10, hadi cores 24 na hadi 40GB DDR4).

Dell R730xd 2x nafuu katika kituo cha data cha Equinix Tier IV huko Amsterdam? Hapa tu 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kutoka $199 nchini Uholanzi! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kutoka $99! Soma kuhusu Jinsi ya kujenga miundombinu ya Corp. darasa na matumizi ya seva za Dell R730xd E5-2650 v4 zenye thamani ya euro 9000 kwa senti?

Chanzo: mapenzi.com

Kuongeza maoni