HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Næsta HighLoad++ ráðstefna verður haldin 6. og 7. apríl 2020 í St. Pétursborg. Upplýsingar og miðar по ссылке. HighLoad++ Moscow 2018. Salur “Moscow”. 9. nóvember, 15:00. Ritgerðir og kynningu.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

* Vöktun - á netinu og greining.
* Grunntakmarkanir ZABBIX pallsins.
* Lausn til að stækka greiningargeymslu.
* Hagræðing á ZABBIX netþjóninum.
* Hagræðing notendaviðmóts.
* Reyndu að nota kerfið undir meira en 40k NVPS álagi.
* Stutt ályktun.

Mikhail Makurov (hér eftir – MM): - Hæ allir!

Maxim Chernetsov (hér eftir – MCH): - Góðan daginn!

MM: – Leyfðu mér að kynna Maxim. Max er hæfileikaríkur verkfræðingur, besti netari sem ég veit um. Maxim tekur þátt í netkerfum og þjónustu, þróun þeirra og rekstri.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MCH: — Og mig langar að segja þér frá Mikhail. Mikhail er C verktaki. Hann skrifaði nokkrar háhlaðnar umferðarvinnslulausnir fyrir fyrirtækið okkar. Við búum og vinnum í Úralfjöllum, í borginni harðsnúinna manna Chelyabinsk, í Intersvyaz fyrirtækinu. Fyrirtækið okkar veitir internet- og kapalsjónvarpsþjónustu fyrir eina milljón manns í 16 borgum.

MM: - Og það er þess virði að segja að Intersvyaz er miklu meira en bara veitandi, það er upplýsingatæknifyrirtæki. Flestar lausnir okkar eru gerðar af upplýsingatæknideild okkar.

A: allt frá netþjónum sem vinna umferð yfir í símaver og farsímaforrit. Í upplýsingatæknideildinni starfa nú um 80 manns með mjög, mjög fjölbreytta hæfni.

Um Zabbix og arkitektúr þess

MCH: – Og nú ætla ég að reyna að setja persónulegt met og segja á einni mínútu hvað Zabbix er (hér eftir nefnt „Zabbix“).

Zabbix staðsetur sig sem eftirlitskerfi á fyrirtækisstigi út af kassanum. Það hefur marga eiginleika sem gera lífið auðveldara: háþróaðar stigmögnunarreglur, API fyrir samþættingu, flokkun og sjálfvirka greiningu á vélum og mæligildum. Zabbix er með svokölluð skalunarverkfæri - umboð. Zabbix er opið uppspretta kerfi.

Stutt um arkitektúr. Við getum sagt að það samanstendur af þremur hlutum:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

  • Server. Skrifað í C. Með frekar flókinni úrvinnslu og flutningi upplýsinga á milli þráða. Öll vinnsla fer fram í honum: frá móttöku til vistunar í gagnagrunninn.
  • Öll gögn eru geymd í gagnagrunninum. Zabbix styður MySQL, PostreSQL og Oracle.
  • Vefviðmótið er skrifað í PHP. Í flestum kerfum kemur hann með Apache netþjóni, en virkar skilvirkari í samsetningu með nginx + php.

Í dag langar okkur að segja eina sögu úr lífi fyrirtækisins okkar sem tengist Zabbix...

Saga úr lífi Intersvyaz fyrirtækisins. Hvað höfum við og hvað þurfum við?

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni
5 eða 6 mánuðum síðan. Einn dagur eftir vinnu...

MCH: - Misha, halló! Ég er feginn að ég náði að ná þér - það er samtal. Við áttum aftur í vandræðum með eftirlit. Í stórslysi gekk allt hægt og engar upplýsingar liggja fyrir um ástand netsins. Því miður er þetta ekki í fyrsta skipti sem þetta gerist. Ég þarf á hjálp þinni að halda. Við skulum láta eftirlit okkar virka undir öllum kringumstæðum!

MM: - En við skulum samstilla fyrst. Ég hef ekki litið þangað í nokkur ár. Eftir því sem ég man eftir yfirgáfum við Nagios og skiptum yfir í Zabbix fyrir um 8 árum. Og nú virðumst við vera með 6 öfluga netþjóna og um tug umboða. Er ég að rugla einhverju?

MCH: - Næstum því. 15 netþjónar, sumir þeirra eru sýndarvélar. Það mikilvægasta er að það bjargar okkur ekki á því augnabliki sem við þurfum mest á því að halda. Eins og slys - netþjónarnir hægja á sér og þú getur ekki séð neitt. Við reyndum að fínstilla uppsetninguna, en þetta gaf ekki bestu frammistöðuaukningu.

MM: - Það er skýrt. Skoðaðirðu eitthvað, varstu búinn að grafa eitthvað upp úr greiningunum?

MCH: – Það fyrsta sem þú þarft að takast á við er gagnagrunnurinn. MySQL er stöðugt hlaðið, geymir nýjar mælingar, og þegar Zabbix byrjar að búa til fullt af atburðum fer gagnagrunnurinn í yfirkeyrslu í bókstaflega nokkrar klukkustundir. Ég sagði þér þegar frá því að fínstilla stillingarnar, en bókstaflega á þessu ári uppfærðu þeir vélbúnaðinn: netþjónarnir eru með meira en hundrað gígabæta af minni og diskafylki á SSD RAID - það þýðir ekkert að stækka það línulega til lengri tíma litið. Hvað gerum við?

MM: - Það er skýrt. Almennt séð er MySQL LTP gagnagrunnur. Svo virðist sem það er ekki lengur hentugur til að geyma skjalasafn yfir mælikvarða af okkar stærð. Við skulum reikna það út.

MCH: - Við skulum!

Samþætting Zabbix og Clickhouse sem afleiðing af hackathon

Eftir nokkurn tíma fengum við áhugaverð gögn:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Megnið af plássinu í gagnagrunninum okkar var upptekið af mælingasafninu og minna en 1% var notað fyrir uppsetningu, sniðmát og stillingar. Á þeim tíma höfðum við rekið Big data lausnina sem byggir á Clickhouse í meira en ár. Hreyfingarstefnan var okkur augljós. Á Hackathon vorinu okkar skrifaði ég samþættingu Zabbix við Clickhouse fyrir netþjóninn og framenda. Á þeim tíma hafði Zabbix þegar stuðning fyrir ElasticSearch og við ákváðum að bera þá saman.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Samanburður á Clickhouse og Elasticsearch

MM: – Til samanburðar mynduðum við sama álag og Zabbix þjónninn veitir og skoðuðum hvernig kerfin myndu haga sér. Við skrifuðum gögn í lotum af 1000 línum með CURL. Við gerðum fyrirfram ráð fyrir því að Clickhouse væri skilvirkara fyrir hleðslusniðið sem Zabbix gerir. Árangurinn fór jafnvel fram úr væntingum okkar:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Við sömu prófunarskilyrði skrifaði Clickhouse þrisvar sinnum fleiri gögn. Á sama tíma neyttu bæði kerfin mjög skilvirkt (lítið magn af auðlindum) við lestur gagna. En teygjur þurftu mikið magn af örgjörva við upptöku:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Alls var Clickhouse umtalsvert betri en Elastix hvað varðar örgjörvanotkun og hraða. Á sama tíma, vegna gagnaþjöppunar, notar Clickhouse 11 sinnum minna á harða disknum og framkvæmir um það bil 30 sinnum færri diskaðgerðir:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MCH: – Já, vinna Clickhouse með diskaundirkerfinu er útfærð á mjög skilvirkan hátt. Þú getur notað risastóra SATA diska fyrir gagnagrunna og fengið skrifhraða upp á hundruð þúsunda lína á sekúndu. Út-af-the-box kerfið styður sundrun, afritun og er mjög auðvelt að stilla. Við erum meira en ánægð með notkun þess allt árið.

Til að hámarka auðlindir geturðu sett upp Clickhouse við hlið núverandi aðalgagnagrunns þíns og sparað þar með mikinn örgjörvatíma og diskaðgerðir. Við höfum flutt mæligildi í núverandi Clickhouse klasa:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Við léttum á aðal MySQL gagnagrunninum svo mikið að við gátum sameinað hann á einni vél með Zabbix þjóninum og yfirgefið sérstaka þjóninn fyrir MySQL.

Hvernig virkar skoðanakönnun í Zabbix?

Fyrir 4 mánuðum

MM: — Jæja, getum við gleymt vandamálunum með herstöðina?

MCH: - Það er öruggt! Annað vandamál sem við þurfum að leysa er hæg gagnasöfnun. Nú eru allir 15 proxy-þjónarnir okkar ofhlaðnir af SNMP og skoðanakönnunarferlum. Og það er engin leið nema að setja upp nýja og nýja netþjóna.

MM: - Frábært. En fyrst, segðu okkur hvernig skoðanakönnun virkar í Zabbix?

MCH: – Í stuttu máli eru 20 tegundir mælikvarða og tugi leiða til að fá þær. Zabbix getur safnað gögnum annað hvort í „beiðni-svar“ ham eða beðið eftir nýjum gögnum í gegnum „Trapper Interface“.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þess má geta að í upprunalegu Zabbix er þessi aðferð (Trapper) sú hraðvirkasta.

Það eru proxy-þjónar fyrir hleðsludreifingu:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Umboðsmenn geta framkvæmt sömu söfnunaraðgerðir og Zabbix þjónninn, tekið á móti verkefnum frá honum og sent söfnuðu mæligildi í gegnum Trapper viðmótið. Þetta er opinberlega mælt með því að dreifa álaginu. Umboð eru einnig gagnleg til að fylgjast með ytri innviðum sem starfa í gegnum NAT eða hæga rás:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MM: - Allt er á hreinu með arkitektúr. Við þurfum að skoða heimildirnar...

Nokkrum dögum síðar

Sagan af því hvernig nmap fping vann

MM: „Ég held að ég hafi grafið eitthvað upp“

MCH: - Segðu mér!

MM: – Ég uppgötvaði að þegar Zabbix athugar framboð athugar að hámarki 128 gestgjafa í einu. Ég reyndi að hækka þessa tölu í 500 og fjarlægja millipakkabilið í pinginu þeirra (ping) - þetta tvöfaldaði árangurinn. En ég myndi vilja stærri tölur.

MCH: – Í starfi mínu þarf ég stundum að athuga hvort þúsundir gestgjafa séu tiltækir og ég hef aldrei séð neitt hraðari en nmap fyrir þetta. Ég er viss um að þetta er fljótlegasta leiðin. Við skulum reyna það! Við þurfum að fjölga umtalsvert fjölda gestgjafa í hverri endurtekningu.

MM: – Athugaðu meira en fimm hundruð? 600?

MCH: - Að minnsta kosti nokkur þúsund.

MM: - Allt í lagi. Það mikilvægasta sem ég vildi segja er að ég komst að því að flestar skoðanakannanir í Zabbix eru gerðar samstillt. Við þurfum örugglega að breyta því í ósamstilltan ham. Þá getum við aukið verulega fjölda mæligilda sem skoðanakannanir safna, sérstaklega ef við fjölgum mæligildum í hverri endurtekningu.

MCH: - Frábært! Og hvenær?

MM: — Eins og venjulega, í gær.

MCH: - Við bárum saman báðar útgáfur af fping og nmap:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Á miklum fjölda véla var búist við að nmap væri allt að fimm sinnum áhrifaríkara. Þar sem nmap athugar aðeins framboð og viðbragðstíma, færðum við útreikning á tapi yfir á kveikjur og fækkuðum verulega millibili til að athuga framboð. Við fundum að ákjósanlegur fjöldi gestgjafa fyrir nmap væri um 4 þúsund í hverri endurtekningu. Nmap gerði okkur kleift að draga úr örgjörvakostnaði við aðgengisathuganir um þrisvar og minnka bilið úr 120 sekúndum í 10.

Hagræðing kosninga

MM: „Þá fórum við að gera skoðanakannanir. Við höfðum aðallega áhuga á SNMP uppgötvun og umboðsmönnum. Í Zabbix er skoðanakönnun unnin samstillt og sérstakar ráðstafanir hafa verið gerðar til að auka skilvirkni kerfisins. Í samstilltri stillingu veldur óaðgengi hýsingar verulega skerðingu á skoðanakönnun. Það er heilt kerfi af ríkjum, það eru sérstök ferli - svokallaðir óaðgengilegir skoðanakannanir, sem vinna aðeins með óaðgengilegum gestgjöfum:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þetta er athugasemd sem sýnir ástand fylkisins, allt flókið kerfis umbreytinga sem þarf til að kerfið haldi áfram að virka. Að auki er samstillt atkvæðagreiðsla sjálf frekar hægt:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þess vegna gátu þúsundir skoðanakönnunarstrauma á tugum umboðsmanna ekki safnað nauðsynlegu magni gagna fyrir okkur. Ósamstillta útfærslan leysti ekki aðeins vandamálin með fjölda þráða, heldur einfaldaði einnig verulega ástandskerfi ófáanlegra gestgjafa, vegna þess að fyrir hvaða tölu sem er merkt í einni endurtekningu skoðanakönnunar var hámarksbiðtími 1 tími:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Að auki breyttum við og bættum kosningakerfið fyrir SNMP beiðnir. Staðreyndin er sú að flestir geta ekki svarað mörgum SNMP beiðnum á sama tíma. Þess vegna gerðum við blendingsham þegar SNMP könnun á sama hýsil er gerð ósamstillt:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þetta er gert fyrir allan pakkann af gestgjöfum. Þessi háttur er á endanum ekki hægari en algjörlega ósamstilltur, þar sem að skoða eitt og hálft hundrað SNMP gildi er enn miklu hraðari en 1 tími.

Tilraunir okkar hafa sýnt að ákjósanlegur fjöldi beiðna í einni endurtekningu er um það bil 8 þúsund með SNMP könnun. Alls gerði umskipti yfir í ósamstillta stillingu okkur kleift að flýta frammistöðu skoðanakannana um 200 sinnum, nokkur hundruð sinnum.

MCH: – Hagræðingar skoðanakönnunar sýndu að við getum ekki aðeins losað okkur við öll umboð, heldur einnig dregið úr millibili fyrir margar athuganir, og umboð verður ekki lengur þörf sem leið til að deila álaginu.

Fyrir rúmum þremur mánuðum

Breyttu arkitektúr - auka álagið!

MM: - Jæja, Max, er kominn tími til að verða afkastamikill? Mig vantar öflugan netþjón og góðan verkfræðing.

MCH: - Allt í lagi, við skulum skipuleggja það. Það er kominn tími til að færa sig frá dauðapunkti 5 þúsund mælikvarða á sekúndu.

Morguninn eftir uppfærsluna

MCH: - Misha, við uppfærðum okkur, en um morguninn fórum við aftur á bak... Gettu hvaða hraða við náðum?

MM: – 20 þúsund að hámarki.

MCH: — Já, 25! Því miður erum við einmitt þar sem við byrjuðum.

MM: - Hvers vegna? Varstu með einhverja greiningu?

MCH: - Já að sjálfsögðu! Hér er til dæmis áhugaverður toppur:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MM: - Við skulum fylgjast með. Ég sé að við höfum prófað fjöldann allan af skoðanakönnunum:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

En á sama tíma gátu þeir ekki endurunnið kerfið jafnvel um helming:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Og heildarframmistaðan er frekar lítil, um 4 þúsund mæligildi á sekúndu:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Var það eitthvað fleira?

MCH: – Já, straumur eins af skoðanakönnunum:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MM: – Hér má greinilega sjá að kosningaferlið bíður eftir „semafórum“. Þetta eru læsingarnar:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MCH: - Óljóst.

MM: – Sjáðu, þetta er svipað og þegar fjöldi þráða er að reyna að vinna með auðlindir sem aðeins einn getur unnið með í einu. Þá er allt sem þeir geta gert er að deila þessari auðlind með tímanum:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Og heildarframmistaða þess að vinna með slíka auðlind er takmörkuð af hraða eins kjarna:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Það eru tvær leiðir til að leysa þetta vandamál.

Uppfærðu vélbúnað vélarinnar, skiptu yfir í hraðari kjarna:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Eða breyttu arkitektúrnum og breyttu um leið álaginu:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MCH: – Við the vegur, á prófunarvélinni munum við nota færri kjarna en á bardaga, en þeir eru 1,5 sinnum hraðari í tíðni á hvern kjarna!

MM: - Hreinsa? Þú þarft að skoða netþjónskóðann.

Gagnaslóð í Zabbix miðlara

MCH: - Til að átta okkur á því fórum við að greina hvernig gögn eru flutt inn á Zabbix netþjóninn:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Flott mynd, ekki satt? Við skulum fara í gegnum það skref fyrir skref til að gera það meira eða minna skýrt. Það eru þræðir og þjónustur sem bera ábyrgð á gagnasöfnun:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þeir senda söfnuð mæligildi í gegnum fals til forvinnslustjórans, þar sem þær eru vistaðar í biðröð:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

„Forvinnslustjórinn“ sendir gögn til starfsmanna sinna, sem framkvæma forvinnsluleiðbeiningar og skila þeim aftur í gegnum sömu tengi:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Eftir þetta geymir forvinnslustjóri þau í skyndiminni sögunnar:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þaðan eru þær teknar af sögusökkurum, sem sinna töluvert mörgum aðgerðum: til dæmis að reikna út kveikjur, fylla á gildi skyndiminni og, síðast en ekki síst, vista mælikvarða í sögugeymslunni. Almennt séð er ferlið flókið og mjög ruglingslegt.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MM: – Það fyrsta sem við sáum var að flestir þræðir keppa um svokallaða „stillingar skyndiminni“ (minnissvæðið þar sem allar stillingar netþjónsins eru geymdar). Þræðir sem bera ábyrgð á gagnasöfnun gera sérstaklega mikið af því að loka:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

...þar sem uppsetningin geymir ekki aðeins mælikvarða með breytum þeirra, heldur einnig biðraðir sem skoðanakannanir taka upplýsingar um hvað á að gera næst. Þegar skoðanakannanir eru margir og einn hindrar stillinguna, bíða hinir eftir beiðnum:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Skoðanakannanir ættu ekki að stangast á

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þess vegna var það fyrsta sem við gerðum var að skipta röðinni í 4 hluta og leyfa skoðanakönnunum að loka fyrir þessar biðraðir, þessa hluta á sama tíma, við öruggar aðstæður:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þetta fjarlægði samkeppni um stillingarskyndiminni og hraði skoðanakannana jókst verulega. En svo lentum við í þeirri staðreynd að forvinnslustjórinn byrjaði að safna röð af störfum:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Forvinnslustjóri verður að geta forgangsraðað

Þetta gerðist í þeim tilvikum þar sem hann skorti frammistöðu. Þá var allt sem hann gat gert var að safna beiðnum úr gagnasöfnunarferlum og bæta við biðminni þeirra þar til það eyddi allt minni og hrundi:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Til að leysa þetta vandamál bættum við við annarri innstungu sem var sérstaklega tileinkuð starfsmönnum:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þannig hafði forvinnslustjórinn tækifæri til að forgangsraða vinnu sinni og ef biðminni stækkar er verkefnið að hægja á flutningi og gefa starfsmönnum tækifæri til að taka þennan biðminni:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þá komumst við að því að ein af ástæðunum fyrir hægaganginum var launþegarnir sjálfir, þar sem þeir voru að keppa um auðlind sem skipti ekki máli í starfi. Við skráðum þetta vandamál sem villuleiðréttingu og það hefur þegar verið leyst í nýjum útgáfum af Zabbix:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Við fjölgum innstungunum - við fáum niðurstöðuna

Ennfremur varð forvinnslustjórinn sjálfur að flöskuhálsi, þar sem hann er einn þráður. Það hvíldi á kjarnahraðanum, sem gaf hámarkshraða um 70 þúsund metra á sekúndu:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Þess vegna bjuggum við til fjóra, með fjórum settum af innstungum, verkamenn:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Og þetta gerði okkur kleift að auka hraðann í um það bil 130 þúsund mælikvarða:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Ólínuleiki vaxtar skýrist af því að samkeppni um söguskyndimina hefur birst. Um það kepptu 4 forvinnslustjórar og söguþráður. Á þessum tímapunkti vorum við að fá um það bil 130 þúsund mælikvarða á sekúndu á prófunarvélinni og nýttum það um það bil 95% af örgjörvanum:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Fyrir um 2,5 mánuðum síðan

Synjun frá snmp-samfélagi jók NVP um eitt og hálft

MM: – Max, mig vantar nýjan reynslubíl! Við pössum ekki lengur inn í núverandi.

MCH: — Hvað hefurðu núna?

MM: – Nú – 130 NVP og hillu-tilbúinn örgjörvi.

MCH: - Vá! Flott! Bíddu, ég er með tvær spurningar. Samkvæmt mínum útreikningum er þörf okkar um 15-20 þúsund mælikvarðar á sekúndu. Af hverju þurfum við meira?

MM: „Ég vil klára verkið“ Ég myndi vilja sjá hversu mikið við getum kreist út úr þessu kerfi.

MCH: - En…

MM: "En það er gagnslaust fyrir fyrirtæki."

MCH: - Það er skýrt. Og önnur spurningin: getum við stutt það sem við höfum núna á eigin spýtur, án aðstoðar þróunaraðila?

MM: - Ég held ekki. Það er vandamál að breyta því hvernig stillingarskyndiminni virkar. Það hefur áhrif á breytingar á flestum þráðum og er frekar erfitt að viðhalda. Líklegast verður mjög erfitt að viðhalda því.

MCH: „Þá þurfum við einhvers konar val.

MM: - Það er slíkur kostur. Við getum skipt yfir í hraðvirka kjarna, en yfirgefa nýja læsakerfið. Við munum samt fá frammistöðu upp á 60-80 þúsund mælikvarða. Á sama tíma getum við skilið eftir allan kóðann. Clickhouse og ósamstilltur skoðanakönnun mun virka. Og það verður auðvelt að viðhalda því.

MCH: - Æðislegur! Ég legg til að við stoppum hér.

Eftir að hafa fínstillt netþjónahliðina gátum við loksins sett nýja kóðann í framleiðslu. Við hættum við sumar breytingarnar í þágu þess að skipta yfir í vél með hraðvirkum kjarna og lágmarka fjölda kóðabreytinga. Við höfum líka einfaldað uppsetninguna og útrýmt fjölvi í gagnahlutum þar sem það er hægt, þar sem þeir kynna viðbótarlæsingu.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Til dæmis, með því að yfirgefa snmp-community macro, sem oft er að finna í skjölum og dæmum, í okkar tilviki gerði það mögulegt að flýta NVP enn frekar um það bil 1,5 sinnum.

Eftir tvo daga í framleiðslu

Fjarlægir sprettiglugga um atviksferil

MCH: – Misha, við höfum notað kerfið í tvo daga og allt virkar. En bara þegar allt virkar! Við höfðum skipulagt vinnu með flutning á nokkuð stórum hluta netkerfisins og við athuguðum aftur með höndunum hvað gekk upp og hvað ekki.

MM: - Getur ekki verið! Við skoðuðum allt 10 sinnum. Miðlarinn sér um jafnvel algjöra nettiltækileika samstundis.

MCH: - Já, ég skil allt: netþjón, gagnagrunn, topp, austat, logs - allt er hratt... En við skoðum vefviðmótið og það er örgjörvi "í hillunni" á þjóninum og þetta:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MM: - Það er skýrt. Við skulum horfa á vefinn. Við komumst að því að í aðstæðum þar sem mikill fjöldi virkra atvika var, fóru flestar lifandi græjur að virka mjög hægt:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Ástæðan fyrir þessu var gerð sprettiglugga fyrir atvikssögu sem eru búnir til fyrir hvert atriði á listanum. Þess vegna hættum við að búa til þessa glugga (skrifuðum athugasemdir við 5 línur í kóðanum) og þetta leysti vandamál okkar.

Hleðslutími búnaðar, jafnvel þegar þeir eru algjörlega ótiltækir, hefur verið styttur úr nokkrum mínútum í viðunandi 10-15 sekúndur fyrir okkur, og enn er hægt að skoða söguna með því að smella á tímann:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Eftir vinnu. 2 mánuðum síðan

MCH: - Misha, ertu að fara? Við verðum að tala saman.

MM: — Ég ætlaði það ekki. Eitthvað með Zabbix aftur?

MCH: - Nei, slakaðu á! Ég vildi bara segja: allt virkar, takk! Ég er með bjór.

Zabbix er duglegur

Zabbix er nokkuð alhliða og ríkt kerfi og virkni. Það er hægt að nota fyrir litlar uppsetningar út úr kassanum, en eftir því sem þarfir vaxa þarf að fínstilla það. Notaðu viðeigandi geymslu til að geyma mikið safn mæligilda:

  • þú getur notað innbyggð verkfæri í formi samþættingar við Elasticsearch eða upphleðslusögu í textaskrár (fáanlegt frá útgáfu 4);
  • Þú getur nýtt þér reynslu okkar og samþættingu við Clickhouse.

Til að auka hraðann við söfnun mæligilda til muna, safnaðu þeim með ósamstilltum aðferðum og sendu þær í gegnum fangaraviðmótið til Zabbix netþjónsins; eða þú getur notað plástur til að gera Zabbix pollara ósamstillta.

Zabbix er skrifað í C og er nokkuð duglegur. Að leysa nokkra byggingarflöskuhálsa gerir þér kleift að auka enn frekar afköst þess og, samkvæmt reynslu okkar, fá meira en 100 þúsund mælikvarða á einn örgjörva vél.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Sami Zabbix plástur

MM: — Ég vil bæta nokkrum atriðum við. Öll núverandi skýrsla, allar prófanir, tölur eru gefnar upp fyrir uppsetninguna sem við notum. Við erum núna að taka um það bil 20 þúsund mælikvarða á sekúndu úr því. Ef þú ert að reyna að skilja hvort þetta muni virka fyrir þig geturðu borið saman. Það sem rætt var í dag er sett á GitHub í formi plásturs: github.com/miklert/zabbix

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

Plásturinn inniheldur:

  • full samþætting við Clickhouse (bæði Zabbix netþjónn og framenda);
  • leysa vandamál með forvinnslustjóra;
  • ósamstilltur skoðanakönnun.

Plásturinn er samhæfur við alla útgáfu 4, þar á meðal lts. Líklegast, með lágmarksbreytingum, mun það virka á útgáfu 3.4.

Þakka þér fyrir athygli þína.

spurningar

Spurning frá sal (hér eftir – A): – Góðan daginn! Vinsamlegast segðu mér, hefurðu áætlanir um mikil samskipti við Zabbix teymið eða með þeim við þig, svo að þetta sé ekki plástur, heldur eðlileg hegðun Zabbix?

MM: – Já, við munum örugglega skuldbinda okkur eitthvað af breytingunum. Eitthvað mun gerast, eitthvað verður eftir í plástrinum.

A: — Þakka þér kærlega fyrir frábæra skýrslu! Vinsamlegast segðu mér, eftir að plásturinn hefur verið notaður mun stuðningur frá Zabbix vera áfram og hvernig á að halda áfram að uppfæra í hærri útgáfur? Verður hægt að uppfæra Zabbix eftir plásturinn þinn í 4.2, 5.0?

MM: — Ég get ekki sagt neitt um stuðninginn. Ef ég væri Zabbix tækniaðstoð myndi ég líklega segja nei, því þetta er kóða einhvers annars. Hvað varðar 4.2 kóðagrunninn er staða okkar: „Við munum hreyfa okkur með tímanum og við munum uppfæra okkur í næstu útgáfu. Þess vegna munum við í nokkurn tíma birta plástur fyrir uppfærðar útgáfur. Ég sagði þegar í skýrslunni: fjöldi breytinga með útgáfum er enn frekar lítill. Ég held að umskiptin úr 3.4 í 4 hafi tekið okkur um það bil 15 mínútur. Eitthvað breyttist þar en ekki mjög mikilvægt.

A: – Þannig að þú ætlar að styðja plásturinn þinn og þú getur örugglega sett hann upp í framleiðslu og fengið uppfærslur á einhvern hátt í framtíðinni?

MM: — Við mælum eindregið með því. Þetta leysir mörg vandamál fyrir okkur.

MCH: – Enn og aftur vil ég vekja athygli á því að þær breytingar sem snerta ekki arkitektúrinn og snerta ekki blokkun eða biðraðir eru mát, þær eru í aðskildum einingum. Jafnvel með minniháttar breytingum geturðu viðhaldið þeim nokkuð auðveldlega.

MM: - Ef þú hefur áhuga á smáatriðum, þá notar "Clickhouse" svokallað sögusafn. Það er óbundið - það er afrit af Elastic stuðningnum, það er að segja það er stillanlegt. Atkvæðagreiðsla breytir aðeins skoðanakönnunum. Við teljum að þetta muni virka í langan tíma.

A: - Kærar þakkir. Segðu mér, er einhver skjöl um breytingarnar sem gerðar hafa verið?

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS á einum netþjóni

MM: – Skjöl eru plástur. Augljóslega, með tilkomu Clickhouse, með tilkomu nýrra tegunda pollara, koma upp nýir stillingarvalkostir. Í hlekknum á síðustu glæru er stutt lýsing á því hvernig á að nota hana.

Um að skipta út fping fyrir nmap

A: — Hvernig tókst þér loksins að útfæra þetta? Geturðu nefnt ákveðin dæmi: ertu með strapper og ytra handrit? Hvað endar með því að athuga svona mikinn fjölda gestgjafa svona fljótt? Hvernig vinnur þú þessa gestgjafa? Þurfum við að fæða þá til að nmapa einhvern veginn, ná þeim einhvers staðar frá, setja þá í, keyra eitthvað?

MM: - Flott. Mjög rétt spurning! Málið er þetta. Við breyttum bókasafninu (ICMP ping, hluti af Zabbix) fyrir ICMP athuganir, sem gefa til kynna fjölda pakka - einn (1), og kóðinn reynir að nota nmap. Það er að segja, þetta er innra verk Zabbix, sem er orðið innra verk pingarans. Í samræmi við það er ekki þörf á samstillingu eða notkun fangara. Þetta var vísvitandi gert til að skilja kerfið eftir ósnortið og þurfa ekki að takast á við samstillingu tveggja gagnagrunnskerfa: hvað á að athuga, hlaða upp í gegnum poller og er upphleðslan okkar biluð?.. Þetta er miklu einfaldara.

A: – Virkar það líka fyrir umboðsmenn?

MM: — Já, en við athuguðum það ekki. Kosningakóðinn er sá sami bæði í Zabbix og þjóninum. Ætti að virka. Leyfðu mér að leggja áherslu á enn og aftur: árangur kerfisins er slíkur að við þurfum ekki umboð.

MCH: – Rétt svar við spurningunni er: „Af hverju þarftu umboð með slíku kerfi? Aðeins vegna NAT eða eftirlits í gegnum einhvers konar hæga rás...

A: – Og þú notar Zabbix sem ofnæmislyf, ef ég skil rétt. Eða hefur grafíkin þín (þar sem geymslulagið er) flutt yfir í annað kerfi, eins og Grafana? Eða ertu ekki að nota þessa virkni?

MM: – Ég mun leggja áherslu á enn og aftur: við höfum náð fullkominni samþættingu. Við erum að hella sögu inn í Clickhouse, en á sama tíma höfum við breytt php framenda. Php framhliðin fer í Clickhouse og gerir alla grafíkina þaðan. Á sama tíma, satt að segja, höfum við hluta sem byggir gögn í öðrum grafískum skjákerfum frá sama Clickhouse, úr sömu Zabbix gögnum.

MCH: – Í „Grafan“ líka.

Hvernig voru ákvarðanir teknar um ráðstöfun fjármagns?

A: - Deildu smá af innra eldhúsinu þínu. Hvernig var ákvörðun tekin um að nauðsynlegt væri að úthluta fjármagni til alvarlegrar vinnslu á vörunni? Þetta eru almennt ákveðnar áhættur. Og vinsamlegast segðu mér, í samhengi við þá staðreynd að þú ætlar að styðja nýjar útgáfur: hvernig réttlætir þessi ákvörðun frá stjórnunarsjónarmiði?

MM: - Eins og gefur að skilja, sögðum við drama sögunnar ekki vel. Við lentum í aðstæðum þar sem eitthvað þurfti að gera og við fórum í raun með tvö samhliða lið:

  • Eitt var að setja á markað eftirlitskerfi með nýjum aðferðum: vöktun sem þjónusta, staðlað sett af opnum lausnum sem við sameinum og reynum síðan að breyta viðskiptaferlinu til að vinna með nýja vöktunarkerfið.
  • Á sama tíma vorum við með áhugasaman forritara sem var að gera þetta (um sjálfan sig). Svo fór að hann vann.

A: – Og hver er hópurinn?

MCH: - Hún er fyrir framan þig.

A: – Svo, eins og alltaf, þarftu ástríðumann?

MM: — Ég veit ekki hvað ástríðufullur er.

A: - Í þessu tilfelli, greinilega, þú. Takk kærlega, þú ert frábær.

MM: - Takk.

Um plástra fyrir Zabbix

A: – Fyrir kerfi sem notar umboð (til dæmis í sumum dreifðum kerfum), er hægt að aðlaga og plástra, til dæmis, pollara, umboð og að hluta til forvinnslu Zabbix sjálfs; og samspil þeirra? Er hægt að hagræða núverandi þróun fyrir kerfi með mörgum umboðum?

MM: – Ég veit að Zabbix þjónninn er settur saman með proxy (kóðinn er settur saman og fengið). Við höfum ekki prófað þetta í framleiðslu. Ég er ekki viss um þetta, en ég held að forvinnslustjórinn sé ekki notaður í umboðinu. Verkefni umboðsins er að taka sett af mælingum frá Zabbix, sameina þær (það skráir einnig uppsetninguna, staðbundna gagnagrunninn) og gefa það aftur til Zabbix netþjónsins. Miðlarinn sjálfur mun síðan gera forvinnsluna þegar hann fær hana.

Áhuginn á umboðum er skiljanlegur. Við munum athuga það. Þetta er áhugavert umræðuefni.

A: – Hugmyndin var þessi: ef þú getur lagfært pollara geturðu lagað þá á proxy og lagað samskiptin við netþjóninn og aðlagað forvinnsluforritið aðeins í þessum tilgangi á netþjóninum.

MM: — Ég held að það sé enn einfaldara. Þú tekur kóðann, notar plástur og stillir hann svo eins og þú þarft - safnaðu proxy-þjónum (til dæmis með ODBC) og dreifir pjattaða kóðanum yfir kerfin. Þar sem nauðsyn krefur - safnaðu umboði, þar sem nauðsyn krefur - netþjóni.

A: - Líklegast þarftu ekki að plástra proxy-sendinguna á netþjóninn til viðbótar?

MCH: - Nei, það er staðlað.

MM: – Reyndar hljómaði ein af hugmyndunum ekki. Við höfum alltaf haldið jafnvægi á milli hugmyndasprengingar og magns breytinga og auðveldrar stuðnings.

Nokkrar auglýsingar 🙂

Þakka þér fyrir að vera hjá okkur. Líkar þér við greinarnar okkar? Viltu sjá meira áhugavert efni? Styðjið okkur með því að leggja inn pöntun eða mæla með því við vini, cloud VPS fyrir forritara frá $4.99, einstök hliðstæða upphafsþjóna, sem var fundið upp af okkur fyrir þig: Allur sannleikurinn um VPS (KVM) E5-2697 v3 (6 kjarna) 10GB DDR4 480GB SSD 1Gbps frá $19 eða hvernig á að deila netþjóni? (fáanlegt með RAID1 og RAID10, allt að 24 kjarna og allt að 40GB DDR4).

Dell R730xd 2x ódýrari í Equinix Tier IV gagnaveri í Amsterdam? Aðeins hér 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 sjónvarp frá $199 í Hollandi! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - frá $99! Lestu um Hvernig á að byggja upp infrastructure Corp. flokki með notkun Dell R730xd E5-2650 v4 netþjóna að verðmæti 9000 evrur fyrir eyri?

Heimild: www.habr.com

Bæta við athugasemd