JĂ€rgmine HighLoad++ konverents toimub 6. ja 7. aprillil 2020 Peterburis. Ăksikasjad ja piletid . HighLoad++ Moskvas 2018. Saal "Moskva". 9. november, 15:00. Teesid ja .

* JĂ€lgimine - reaalajas ja analĂŒĂŒtika.
* ZABBIXi platvormi pÔhipiirangud.
* Lahendus analĂŒĂŒtilise salvestamise skaleerimiseks.
* ZABBIXi serveri optimeerimine.
* UI optimeerimine.
* Kogemus sĂŒsteemi kasutamisest ĂŒle 40k NVPS koormuse korral.
* LĂŒhidalt jĂ€reldused.
Mikhail Makurov (edasi â MM): â KĂ”igile tere!
Maksim TĆĄernecov (edasi â MT): â Tere pĂ€evast!
MM: â Lubage mul tutvustada Maksimit. Maksim on andekas insener, parim vĂ”rguspetsialist, keda ma tunnen. Maksim tegeleb vĂ”rkude ja teenuste arendamise ja haldamisega.

MT: â Ja ma sooviksin rÀÀkida Mihhailist. Mihhail on C keele arendaja. Ta on meie ettevĂ”tte jaoks kirjutanud mitmeid kĂ”rgkoormusega lahendusi liikluse töötlemiseks. Me elame ja töötame Uuralites, karmide meeste linnas TĆĄeljabinski, firmas "Intersvyaz". Meie ettevĂ”te on interneti- ja kaabeltelevisiooniteenuste pakkuja miljonile inimesele 16 linnas.
MM: â Ja tuleks mainida, et "Intersvyaz" on palju enamat kui lihtsalt teenusepakkuja, see on IT-ettevĂ”te. Enamik meie lahendustest on loodud meie IT-osakonna jĂ”ududega.
A: serveritest, mis töötlevad liiklust, kuni kÔnekeskuse ja mobiilirakenduseni. IT-osakonnas on hetkel umbes 80 inimest, kellel on vÀga ja vÀga erinevad oskused.
Zabbixist ja selle arhitektuurist
MT: â NĂŒĂŒd proovin ma seada isiklikku rekordit ja minutiga seletada, mis on Zabbix (edasi â "Zabbix").
"Zabbix" positsioneerib end ettevĂ”tte tasandi "lahtiselt" jĂ€lgimissĂŒsteemina. Sellest leiate palju elu lihtsustavaid funktsioone: arenenud eskalatsiooni reeglid, API integreerimiseks, hostide ja mÔÔdikute rĂŒhmitamine ning automaatne avastamine. "Zabbix"is on nn skaleerimise tööriistad - proksid. "Zabbix" on avatud lĂ€htekoodiga sĂŒsteem.
LĂŒhidalt arhitektuurist. Selle vĂ”ib jagada kolmeks komponendiks:

- Server. Kirjutatud C keeles. Piisavalt keeruka infovoogude töötlemise ja edastamisega. KÔik töötlemine toimub seal: andmete vastuvÔtmisest andmebaasi salvestamiseni.
- KÔik andmed salvestatakse andmebaasis. "Zabbix" toetab MySQL, PostgreSQL ja Oracle.
- Veebiliides on kirjutatud PHP-s. Suuremas osas sĂŒsteemidest tuleb see koos Apache serveriga, kuid töötab efektiivsemalt koos nginx + php-iga.
TĂ€na tahaksime jagada ĂŒhte meie ettevĂ”tte elu lugu, mis on seotud "Zabbixiga"...
Lugu ettevÔttest "Intersside". Mida meil on ja mida on vaja?

5 vĂ”i 6 kuud tagasi. Ăhel Ă”htul pĂ€rast tööd...
MT: â MiĆĄa, tere! Tore, et suutsin sind kinni pĂŒĂŒda â mul on juttu. Meil olid jĂ€lle probleemid jĂ€lgimisega. Suure avarii ajal kĂ”ik seisis ja ei olnud mingit teavet vĂ”rgu seisundi kohta. Kahjuks on see juba mitte esmakordselt. Mul on vaja sinu abi. Teeme nii, et meie jĂ€lgimine töötaks igasugustes oludes!
MM: â Aga kĂ”igepealt sĂŒnkroniseerime end. Ma pole sinna paar aastat vaatamas kĂ€inud. Kui ma Ă”igesti mĂ€letan, loobusime Nagiosest ja lĂ€ksime "Zabbixile" umbes 8 aastat tagasi. Ja praegu on meil nĂ€iliselt 6 vĂ”imsat serverit ja paar tosinat proksi. Kas ma segan midagi?
MT: â Peaaegu. 15 serverit, millest osa on virtuaalmasinad. Peamine probleem on see, et see ei aita meid siis, kui meil seda kĂ”ige rohkem vaja on. Iga avarii korral serverid seisavad ja midagi ei paista. Oleme proovinud konfiguratsiooni optimeerida, kuid see ei anna optimaalset jĂ”udluse kasvu.
MM: â Selge. Kas oled midagi vaadanud, kas on midagi diagnoosimise kĂ€igus vĂ€lja kaevatud?
MT: â Esimene probleem, millega kokku puutume, on just andmebaas. MySQL on pidevalt koormatud uute metrikate salvestamisega, ja kui "Zabbix" hakkab genereerima hulgaliselt sĂŒndmusi, lĂ€heb andmebaas tĂ€iesti kinni tavaliselt paariks tunniks. Konfiguratsiooni optimeerimisest rÀÀkisin juba, kuid just sel aastal vĂ€rskendasime riistvara: serverites on ĂŒle saja gigabaidi mĂ€lust ja SSD RAID-ide ketasmassiivid â ei ole mĂ”tet seda edasi lineaarselt kasvatada. Mida teeme?
MM: â Selge. Ăldiselt on MySQL LTP-andmebaas. Tundub, et see ei sobi enam meie suurte metrikate arhiivi hoidmiseks. Hakka uurima.
MT: â Hakkame!
Zabbixi ja Clickhouse'i integreerimine hackathoni lÔpptulemusena
MÔne aja pÀrast saime huvitavaid andmeid:

Enamik ruumi meie andmebaasis oli hĂ”ivatud metrikate arhiiviga ning vĂ€hem kui 1% kasutati konfiguratsiooni, malli ja seadistuste jaoks. Sel ajal olime juba ĂŒle aasta kasutanud Big Data lahendust Clickhouse'i baasil. Meie suund oli ilmne. Meie kevadisest âHakatonistâ kirjutasin integraatsiooni âZabbixiâ ja âClickhouse'iâ jaoks serverile ja frontendile. Tol ajal oli âZabbixisâ juba toetatud ElasticSearch ja otsustasime neid vĂ”rrelda.

Clickhouse'i ja Elasticsearchi vÔrdlus
MM: â VĂ”rdlemiseks genereerisime koormust, mis oli sama, nagu tagab âZabbixiâ server, ja vaatasime, kuidas sĂŒsteemid kĂ€ituvad. Kirjutasime andmeid partiidena 1000 rida, kasutasime CURLi. Oletasime eelnevalt, et âClickhouseâ on selle koormusprofiili jaoks efektiivsem. Tulemused ĂŒletasid isegi meie ootusi:

Katses samaalustes tingimustes kirjutas âClickhouseâ kolm korda rohkem andmeid. Samas kasutasid mĂ”lemad sĂŒsteemid andmete lugemisel vĂ€ga efektiivselt (vĂ€henenud ressursside hulga). Kuid kirjutamise ajal vajas âElasticsearchâ suures koguses protsessorit:

KokkuvĂ”ttes ĂŒletas âClickhouseâ mĂ€rkimisvÀÀrselt âElasticsearchiâ protsessorite kasutuse ja kiirusest. Samuti kasutab âClickhouseâ andmete tihendamise abil 11 korda vĂ€hem ruumi kĂ”vakettal ning teeb umbes 30 korda vĂ€hem kettatehinguid:

MT: â Jah, âClickhouse'iâ kettaseadmega töötamine on vĂ€ga efektiivselt realiseeritud. Andmebaaside jaoks saab kasutada suuri SATA-ketasid ja saavutada kirjutamiskiirus sadu tuhandeid ridu sekundis. SĂŒsteem toetab âkarbist vĂ€ljasâ ĆĄardimist, replikatsiooni ja on vĂ€ga lihtsalt seadistatav. Oleme rohkem kui rahul selle kasutamisega aasta jooksul.
Ressursside optimeerimiseks saab âClickhouse'iâ paigaldada olemasoleva pĂ”hiandmebaasi vahetusse lĂ€hedusse ja sellega sÀÀsta palju protsessorite aega ja kettatehinguid. Oleme viinud metrikate arhiivi juba olemasolevatele âClickhouse'iâ klastritele:

Oleme peamise MySQL andmebaasi nii kergelt koormust vĂ€hendanud, et saime selle ĂŒhendada ĂŒhel masinal âZabbixiâ serveriga ja loobuda eraldi serverist MySQL jaoks.
Kuidas toimib polling Zabbixis?
4 kuud tagasi
MM: â Noh, kas andmebaasi probleemidest vĂ”ib nĂŒĂŒd unustada?
MT: â See on kindel! Teine ĂŒlesanne, mille peame lahendama, on aeglane andmete kogumine. NĂŒĂŒd on kĂ”ik meie 15 proksiserverit ĂŒle koormatud SNMP protsesside ja polling'uga. Ja ei ole muud vĂ”imalust, kui lihtsalt uute serverite seadistamine.
MM: â SuurepĂ€rane. Aga rÀÀgi esmalt, kuidas toimub polling 'Zabbix'is?
MT: â LĂŒhidalt öeldes on olemas 20 tĂŒĂŒpi mÔÔdikuid ja kĂŒmme erinevat viisi nende hankimiseks. 'Zabbix' saab koguda andmeid kas "pĂ€ring - vastus" reĆŸiimis vĂ”i oodata uusi andmeid "Trapperi liidese" kaudu.

Tasub mÀrkida, et originaalses 'Zabbix'is on see meetod (Trapper) kÔige kiirem.
On olemas proksiserverid koormuse jagamiseks:

Proksid saavad tĂ€ita samu andmete kogumise funktsioone nagu 'Zabbix' server, saades sellest ĂŒlesandeid ja saadetedes kogutud mÔÔdikud just lĂ€bi Trapperi liidese. See on ametlikult soovitatud koormuse jaotamise meetod. Samuti on proksid kasulikud kaug-infrastruktuuri jĂ€lgimiseks, mis töötab lĂ€bi NAT vĂ”i aeglase kanali:

MM: â Arhitektuur on arusaadav. Tuleb vaadata lĂ€htekoodi...
MÔni pÀev hiljem
Lugu sellest, kuidas nmap ja fping vÔitsid
MM: â Tundub, et ma leidsin midagi.
MT: â RÀÀgi!
MM: â Otsides kĂ€ttesaadavust avastasin, et 'Zabbix' kontrollib korraga maksimaalselt 128 hosti. Proovisin seda arvu suurendada 500-le ja eemaldasin nende pingeni (ping) vahe - see kahekordistas jĂ”udlust. Aga tahaksin suuremaid numbreid.
MT: â Oma praktikas pean mĂ”nikord kontrollima tuhandeid hoste ning ma ei ole leidnud midagi kiiremat kui nmap. Olen kindel, et see on kĂ”ige kiirem meetod. Proovime seda! Peame mĂ€rkimisvÀÀrselt suurendama hostide arvu ĂŒhe iteratsiooni jooksul.
MM: â Kontrollida rohkem kui viissada? 600?
MT: â VĂ€hemalt paar tuhat.
MM: â Okei. KĂ”ige tĂ€htsam, mida tahtsin öelda: leidsin, et enamik polling'ust 'Zabbix'is on tehtud sĂŒnkroonselt. Peame selle kindlasti ĂŒmber töötama asĂŒnkroonseks. Siis saame dramaatiliselt suurendada mÔÔdikute arvu, mida pollingud koguvad, eriti kui suurendame mÔÔdikute arvu ĂŒhe iteratsiooni kohta.
MT: â SuurepĂ€rane! Ja millal?
MM: â Nagu tavaliselt, eile.
MT: â VĂ”rdlesime mĂ”lemaid versioone fping ja nmap:

Paljude hostide puhul oli nmap ootuspĂ€raselt kuni viis korda tĂ”husam. Kuna nmap kontrollib ainult ligipÀÀsetavust ja reaktsiooniaega, viisin kaotuste arvestamise triggereisse ja lĂŒhendasin mĂ€rgatavalt ligipÀÀsetavuse kontrollimise intervalli. Optimaalseks hostide arvuks nmap'i jaoks leidsime umbes 4000 ĂŒhe iteratsiooni kohta. Nmap vĂ”imaldas meil kolm korda vĂ€hendada CPU koormust ligipÀÀsetavuse kontrollimiseks ja lĂŒhendada intervalli 120 sekundilt 10 sekundile.
Pollimise optimeerimine
MM: â Siis tegelesime polleritega. Peamiselt huvitavad meid SNMP kogumid ja agendid. âZabbixâisâ on pollimine tehtud sĂŒnkroonselt ning on rakendatud erilisi meetmeid sĂŒsteemi efektiivsuse suurendamiseks. SĂŒnkroonses reĆŸiimis pĂ”hjustab hostide ligipÀÀsetamatuse oluliselt pollimise halvenemist. Eksisteerib terviklik olekute sĂŒsteem, seal on erilised protsessid â nn unreachable-pollereid, mis töötavad ainult ligipÀÀsmatute hostidega:

See on kommentaar, mis demonstreerib olekute maatriksit ja kogu sĂŒsteemi ĂŒleminekute keerukust, mis on vajalik sĂŒsteemi efektiivsena hoidmiseks. Lisaks on sĂŒnkroonne pollimine piisavalt aeglane:

SeetĂ”ttu ei suutnud tuhanded pollerite lĂ”imed kĂŒmnel pöördumisel koguda meile vajalikku andmemassi. AsĂŒnkroonne realiseerimine lahendas mitte ainult lĂ”imede arvu probleemid, vaid lihtsustas oluliselt ligipÀÀsematute hostide olekute sĂŒsteemi, kuna ĂŒhes pollimise iteratsioonis kontrollitava arvu juures oli maksimaalne ootamise aeg 1 aegumine:

Lisaks modifitseerisime ja tĂ€iustasime SNMP pĂ€ringute pollimise sĂŒsteemi. Asi on selles, et enamus ei suuda vastata mitmele SNMP pĂ€ringule korraga. SeetĂ”ttu tegime hĂŒbriidreĆŸiimi, kus ĂŒhe ja sama hosti SNMP pollimine toimub asĂŒnkroonselt:

See kehtib kogu hostide partii kohta. Selline reĆŸiim ei ole lĂ”puks aeglasem kui tĂ€ielikult asĂŒnkroonne, kuna poolteist sadat SNMP vÀÀrtuse kĂŒsitlemine on ikkagi oluliselt kiirem kui 1 aegumine.
Meie eksperimendid nĂ€itasid, et optimaalseks pĂ€ringute arvuks ĂŒhes iteratsioonis on umbes 8000 SNMP pollimise puhul. KokkuvĂ”ttes vĂ”imaldas ĂŒleminek asĂŒnkroonsesse reĆŸiimi kiirendada pollimise jĂ”udlust 200 korda, mitusada korda.
MT: â Saadud pollingu optimeerimised nĂ€itasid, et saame mitte ainult loobuda kĂ”igist proksidest, vaid ka vĂ€hendada paljude kontrollide intervallide pikkust, ning proksid ei ole enam vajalikud koormuse jaotamise meetodina.
Umbes kolm kuud tagasi
Muuda arhitektuuri â suurenda koormust!
MM: â Noh, Max, kas on aeg tootmisse minna? Mul on vaja vĂ”imsat serverit ja head inseneri.
MT: â HĂ€sti, plaanime. On aeg liikuda edasi 5000 meetrika sekundis.
Hommik pÀrast uuendust
MT: â Misha, me uuendasime, kuid hommikuks said tagasi tagasi⊠Arva, millise kiiruseni me jĂ”udsime?
MM: â Tuhat 20 maksimaalselt.
MT: â Aha, 25! Kahjuks oleme seal, kus alustasime.
MM: â Miks nii? Kas tehti mingi diagnostika?
MT: â Jah, loomulikult! Vaata, siin on nĂ€iteks huvitav top:

MM: â Vaata, ma nĂ€en, et oleme proovinud tohutult palju pollingu teemasid:

Aga samas ei suutnud me sĂŒsteemi isegi poole vĂ”rra Ă€ra kasutada:

Ja kogu tootlikkus on piisavalt vÀike, umbes 4000 meetrika sekundis:

Kas on midagi veel?
MT: â Jah, ĂŒhe polleri strace:

MM: â Siit on selgelt nĂ€ha, et pollingu protsess ootab "semaforeid". Need on lukud:

MT: â Ebaselge.
MM: â Vaata, see nĂ€eb vĂ€lja nagu olukord, kus hulk teemasid ĂŒritab töötada ressursiga, millega saab samal ajal töötada vaid ĂŒks inimene. Siis saavad nad seda ressurssi ainult ajaliselt jagada:

Ja sellise ressursiga töötamise kogutootlikkus on piiratud ĂŒhe tuuma kiiruseta:

TÔsta selline probleem on vÔimalik kahte moodi.
Uuendada masina riistvara, minna kiirematele tuumadele:

VĂ”i muuta arhitektuuri ja samal ajal â koormust:

MT: â Muide, testmasinas kasutame vĂ€hem tuumasid kui tootmises, kuid need on tuumade sageduse jĂ€rgi 1,5 korda kiiremad!
MM: â Selge? Peame vaatama serveri koodi.
Andmete tee Zabbix serveris
MT: â Probleemi mĂ”istmiseks hakkasime analĂŒĂŒsima, kuidas andmed Zabbix serveris edastatakse:

Lahe pilt, eks? LĂ€heme seda samm-sammult uurima, et veidi selgemaks saada. Andmete kogumise eest vastutavad voolud ja teenused:

Kogutud meetrikad edastatakse socketi kaudu ettevalmistajate haldurile, kus need salvestatakse jÀrjekorda:

Ettevalmistajate haldur edastab andmed oma töötajatele, kes tÀidavad ettevalmistamisjuhised ja edastavad need tagasi sama socketi kaudu:

PÀrast seda salvestab eelprotsessorihaldur need ajaloosirde vahemÀlu.

Sealt vĂ”tavad need andmesĂŒnkroniseerijad, kes tĂ€idavad mitmeid ĂŒlesandeid: nĂ€iteks trigerite arvutamine, vÀÀrtuste vahemĂ€lu tĂ€itmine ja, mis kĂ”ige tĂ€htsam, meetrite salvestamine ajaloos. Ăldiselt on protsess keeruline ja ĂŒsna segane.

MM: â Esimene asi, mida me nĂ€gime, oli see, et enamus vooge konkureerib nn "konfiguratsiooni vahemĂ€lu" pĂ€rast (mĂ€luala, kus hoitakse kĂ”ik serveri konfiguratsioonid). Eriti palju lukustusi teevad vood, mis vastutavad andmete vĂ€ljavĂ”tmise eest:

âŠsest konfiguratsioonis hoitakse mitte ainult meetmeid koos nende parameetritega, vaid ka jĂ€rjekordi, millest pollijad vĂ”tavad teavet selle kohta, mida nad edasi tegema peavad. Kui pollijaid on palju ja ĂŒks lukustab konfiguratsiooni, peavad teised ootama pĂ€ringute tegemist:

Pollijad ei tohiks konfliktida

SeetÔttu esimene asi, mida me tegime, oli jagada jÀrjekord neljaks osaks ja lubada pollijatel ohututes tingimustes neid jÀrjekordi, neid osi samal ajal lukustada:

See kaotas konkurentsi konfiguratsiooni vahemĂ€lu pĂ€rast ja pollijate töökiirus suurenes mĂ€rkimisvÀÀrselt. Kuid seejĂ€rel seisime silmitsi probleemiga, et eelprotsessorihaldur hakkas ĂŒlesandejĂ€rjekorda koguma:

Eelprotsessorihaldur peab olema suuteline prioriteete seadma
See juhtus juhtudel, kui tal puudus jÔudlus. Siis sai ta ainult koguda pÀringuid andmete kogumise protsessidelt ja hoida neid vahemikus, kuni see vÔttis kogu mÀlu ja kukkus kokku:

Selle probleemi lahendamiseks lisasime teise pistiku, mis oli spetsiaalselt eraldatud töötajatele:

Nii sai eelprotsessorihaldur vÔimaluse oma tööd prioriseerida ja juhul, kui puhversalv suurenes, suudab ta peatada andmete vÀljavÔtmise, andes töötajatele vÔimaluse see puhversalv Àra vÔtta:

SeejĂ€rel avastasime, et ĂŒks aeglustumise pĂ”hjuseid olid töötajad ise, kuna nad konkureerisid tĂ€iesti nende töö jaoks ebaolulise ressursiga. Selle probleemi lahendasime bogi-parandusega, ja uutes "Zabbixi" versioonides on see juba lahendatud:

Suurendame pistikute arvu â saavutame tulemuse
SeejĂ€rel sai eelprotsessorihaldur kitsaskohaks, kuna see on ĂŒhe vooga. Ta piirab sĂŒdamiku kiirus, andes maksimaalse kiirus umbes 70 tuhat meetrit sekundis:

SeetÔttu tegime neli erinevat töötlusseadet nelja pistikuga,

Ja see vÔimaldas kiirusel tÔusta umbes 130 000 metrikani:

Mittejooneline kasv on tingitud konkurentsist ajaloo vahemĂ€lu pĂ€rast. Selle eest vĂ”itlesid neli eeltöötlus-juhti ja ajaloosĂŒnkroniseerijad. Selleks ajaks saime testmasinas umbes 130 000 metrikat sekundis, kasutades umbes 95% protsessorist:

Umbes 2,5 kuud tagasi
SNMP-kogukonnast loobumine tÔstis NVP-sid pooleteise korra vÔrra
MM: â Max, mul on vaja uut testmasinat! Praegu ei mahu me enam sisse.
MT: â Mis seal praegu on?
MM: â Praegu â 130k NVP-d ja protsessor "seisab".
MT: â Vau! Kift! Oota, mul on kaks kĂŒsimust. Minu arvutuste kohaselt on meie vajadus umbes 15-20 tuhat metrikat sekundis. Miks me vajame rohkem?
MM: â Tahaksime asja lĂ”puni viia. Tahaks teada, kui palju me suudame sellest sĂŒsteemist vĂ€lja pigistada.
MT: â Aga...
MM: â Aga see on ettevĂ”tte jaoks kasutuskĂ”lbmatu.
MT: â Selge. Ja teine kĂŒsimus: kas seda, mis meil praegu on, saame me iseseisvalt toetada, ilma arendaja abita?
MM: â Ma ei arva. Konfiguratsioonivahendi töö muutmine on probleem. See puudutab enamikke vooge ja on piisavalt keeruline hooldada. TĂ”enĂ€oliselt on selle hooldamine vĂ€ga keeruline.
MT: â Siis on vaja mĂ”nda alternatiivi.
MM: â On selline variant. Saame minna kiiremate tuumade peale ja loobuda uue lukustussĂŒsteemi kasutamisest. Saame ikkagi 60-80 tuhat metrikat. Samuti saame hoida kogu muu koodi. "ClickHouse", asĂŒnkroonne pollimine jÀÀb tööle. Ja seda on kerge hooldada.
MT: â SuurepĂ€rane! Pakun, et peame siin peatuma.
PĂ€rast serveripoolse optimiseerimist suutsime lĂ”puks uut koodi tootmisse viia. Me loobusime osast muudatustest kiiremate tuumade masinale ĂŒlemineku ja koodimuudatuste arvu minimoimise kasuks. Lihtsustasime ka konfiguratsiooni ning lĂ”ime vĂ”imalusel makrosid andmeelementides, kuna need on tĂ€iendavate lukustuste allikaks.

NÀiteks loobumine sageli esinevast SNMP-kogukonna makrost meie dokumentatsioonis ja nÀidetes vÔimaldas NVP-sid kiirusel veel 1,5 korda kiirendada.
PÀrast kahte pÀeva tootmises
Eemaldame hĂ€daolukordade ajaloo hĂŒpikaknad
MT: â Misha, me oleme kaks pĂ€eva sĂŒsteemi kasutanud ja kĂ”ik töötab. Kuid ainult siis, kui kĂ”ik töötab! Meil olid planeeritud tööd, kus viidi ĂŒle piisavalt suur vĂ”rgu segment, ja me kontrollisime kĂ€sitsi, mis töötab ja mis mitte.
MM: â Ei saa olla! Me kontrollisime kĂ”ike 10 korda. Server töötleb isegi tĂ€ieliku vĂ”rgu mittesaatvust hetkega.
MT: â Ma saan aru: server, andmebaas, top, austat, logid â kĂ”ik on kiire⊠Aga me vaatame veebiliidest, ja seal on serveri protsessor 'puhkusel' ning see:

MM: â Arusaadav. Vaatame veebiliidest. Me avastasime, et olukordades, kus oli suur hulk aktiivseid intsidente, hakkas enamik operatiivseid vidinaid töötama vĂ€ga aeglaselt:

Selle pĂ”hjuseks oli hĂŒpikakende genereerimine intsidentide ajalooga, mis genereeritakse iga nimekirjas oleva elemendi jaoks. SeetĂ”ttu loobusime nende akende genereerimisest (kommenteerisime 5 rida koodi) ja see lahendas meie probleemid.
Vidinate laadimisaeg isegi tÀieliku mittesaatvuse korral vÀhenes mÔnest minutist meie jaoks vastuvÔetavatesse 10-15 sekundisse, ja ajalugu on endiselt vÔimalik vaadata aja peale klikkides:

PÀrast tööd. 2 kuud tagasi
MT: â Misha, lahkud? On juttu.
MM: â Ei plaaninud. JĂ€lle midagi 'Zabbixi' kĂ€es?
MT: â Ei, rahune maha! Tahtsin lihtsalt öelda: kĂ”ik töötab, aitĂ€h! Minu arvelt Ă”lu.
Zabbix on efektiivne
'Zabbix' on piisavalt mitmekĂŒlgne ja rikkaliku sĂŒsteemi ning funktsiooniga. Seda vĂ”ib tĂ€iesti kasutada vĂ€ikeste installeerimiste jaoks 'kastist vĂ€lja', kuid vajaduste kasvades on seda vaja optimeerida. Suure arhiivi metrikate hoidmiseks kasutage sobivat salvestust:
- vÔite kasutada sisseehitatud vahendeid nagu 'Elasticsearch' integratsioon vÔi ajaloo eksportimine tekstifailidesse (saadaval neljandast versioonist);
- vÔite kasutada meie kogemusi ja integratsiooni 'ClickHouse'iga.
Metrikate kogumise kiirusel radikaalseks suurenemiseks koguge neid asĂŒnkroonsete meetodite abil ja edastage need trapperi liidese kaudu 'Zabbixi' serverisse; vĂ”i vĂ”ite kasutada patĆĄi 'Zabbix'i pollerite asĂŒnkroonsuse jaoks.
«Zabbix» on kirjutatud C keeles ja on ĂŒsna efektiivne. Teatud kitsaskohtade arhitektuur vĂ”imaldab selle jĂ”udlust veelgi suurendada ja meie kogemuse kohaselt saab ĂŒhe protsessoriga masinal ĂŒle 100 000 mÔÔdiku.

See on Zabbixi patĆĄ.
MM: â Soovin lisada paar punkti. KĂ”ik praegused ettekanded, testid ja numbrid on esitatud selle konfiguratsiooni kohta, mida meie kasutame. Meie sĂŒsteem suudab praegu koguda umbes 20 000 mÔÔdikut sekundis. Kui ĂŒritate mĂ”ista, kas see toimib teie jaoks â saate vĂ”rrelda. Seda, millest tĂ€na rÀÀkisime, on saadaval GitHubis patĆĄina:

PatĆĄ sisaldab:
- tÀielikku integreerimist «ClickHouse'iga» (nii «Zabbixi» serverite kui ka frontendi jaoks);
- probleemide lahendamine eelprotsessorihalduriga;
- asĂŒnkroonne polling.
PatĆĄ on ĂŒhilduv kogu 4.0 versiooniga, sealhulgas lts-iga. TĂ”enĂ€oliselt toimib see vĂ€ikeste muudatustega ka versioonis 3.4.
AitÀh tÀhelepanu eest.
KĂŒsimused
KĂŒsimus publikust (edaspidi â K): â Tere pĂ€evast! Palun öelge, kas teil on plaanis tihe koostöö Zabbixi meeskonnaga vĂ”i ka nende poolt teiega, et see ei oleks lihtsalt patĆĄ, vaid Zabbixi normaalne kĂ€itumine?
MM: â Jah, me kindlasti salvestame osa muudatusi. Midagi jÀÀb siiski patĆĄi sisse.
A: â Suur tĂ€nu suurepĂ€rase ettekande eest! Palun öelge, kas pĂ€rast patĆĄi rakendamist jÀÀb Zabbixi tugi alles ja kuidas edasi uute versioonide peale uuendada? Kas on vĂ”imalik uuendada Zabbixi teie patĆĄi jĂ€rel versioonidele 4.2, 5.0?
MM: â Toetuse kohta ei oska ma öelda. Kui ma oleksin Zabbixi tehniline tugi, siis ilmselt ĂŒtleksin ei, sest tegemist on vÔÔra koodiga. Mis puudutab koodibaasi 4.2, siis meie seisukoht on selline: âMe kavatseme ajaga kaasas kĂ€ia ja uuendada jĂ€rgmisele versioonileâ. Seega avaldame mĂ”ne aja jooksul patĆĄi uuendatud versioonidele. Olen juba ettekandes öelnud: muudatuste arv versioonide vahel on kĂŒllaltki vĂ€ike. Arvan, et ĂŒleminek 3.4-lt 4.0-le vĂ”ttis aega umbes 15 minutit. Seal on midagi muutunud, aga see ei ole oluliselt tĂ€htis.
A: â Ehk kavatsete toetada oma patĆĄi ja seda on ohutu rakendada tootmisse, saades hiljem uuendusi?
MM: â Me soovitame seda kategooriliselt. See lahendab meie jaoks vĂ€ga palju probleeme.
MT: â Veel tahan uuesti rĂ”hutada, et muudatused, mis ei puuduta arhitektuuri ega blokeeringut ega jĂ€rjekordi â need on moodulised, need on eraldi moodulites. Isegi iseseisvalt, isegi vĂ€ikeste muudatuste korral, on neid suhteliselt lihtne hallata.
MM: â Kui huvi pakuvad detailid, siis "ClickHouse" kasutab nn ajaloo raamatukogu. See on lahtiseotatud â see on "Elasticsearchi" toe koopia, st seda saab konfigureerida. Pollimine muudab ainult pollereid. Usume, et see töötab kaua.
A: â AitĂ€h palju. Kas oskate öelda, kas on olemas mingit dokumentatsiooni tehtud muudatuste kohta?

MM: â Dokumentatsioon on patch. Ilmselgelt, koos "ClickHouse'i" kasutuselevĂ”tuga, uute pollerite tĂŒĂŒpide kasutuselevĂ”tuga ilmnevad uued konfigureerimisvĂ”imalused. Viimase slaidi lingil on lĂŒhike kirjeldus, kuidas sellega töötada.
Fpingi asendamine nmapiga
A: â Kuidas te selle lĂ”ppkokkuvĂ”ttes ellu viisite? VĂ”ite anda konkreetsed nĂ€ited: kas teil on strapid ja vĂ€line skript? Mis kontrollib nii kiiresti nii suurt hulka hoste? Kuidas te need hostid hankite? Kas nmap peab neid kuidagi toitma, saama kuskilt, panema, midagi kĂ€ivitama?
MM: â Lahe. VĂ€ga hea kĂŒsimus! Sisu on selline. Muutsime raamatukogu (ICMP-ping, osa "Zabbixi" sĂŒsteemist) ICMP-kontrollide jaoks, kus on mÀÀratud pakettide arv â ĂŒks (1), ja kood proovib kasutada nmapi. See tĂ€hendab, et see on "Zabbixi" sisemine töö, see on saanud pingija sisemiseks tööks. Seega ei ole mingit sĂŒnkroonimist ega trapperi kasutamist vajalik. See tehti teadlikult, et sĂŒsteem jÀÀks terviklikuks ja ei peaks tegelema kahe baas-sĂŒsteemi sĂŒnkroonimisega: mida kontrollida, laadida polleri kaudu, ja kas our laadimine ei ole rikki lĂ€inud? See on palju lihtsam.
A: â Kas see töötab ka proksi jaoks?
MM: â Jah, aga me ei ole seda kontrollinud. Pollimise kood on nii "Zabbixis" kui ka serveris ĂŒhesugune. Peaks töötama. Veel kord rĂ”hutan: sĂŒsteemi jĂ”udlus on selline, et me ei vaja proksi.
MT: â Ăige vastus kĂŒsimusele on: "Miks teil sellise sĂŒsteemi juures proksi on?" Ainult NAT'i tĂ”ttu vĂ”i jĂ€lgida mĂ”ne aeglase kanali kaudu?
A: â Kas te kasutate "Zabbixit" Ă€revusnĂ€itaja (alert) rollis, kui ma Ă”igesti aru sain. VĂ”i on teie graafikud (kus on arhiivikiht) lĂ€inud teise sĂŒsteemi, nagu Grafana? VĂ”i te ei kasuta seda funktsiooni?
MM: â Ma rĂ”hutan veel kord: me oleme teinud tĂ€ieliku integreerimise. Me edastame ajaloo "ClickHouse'i", kuid samal ajal muutsime php-frontendi. Php-frontend jĂ”uab "ClickHouse'i" ja kĂ”iki diagramme tehakse sealt. Peale selle, kui aus olla, meil on osa, mis koostab samast "ClickHouse'ist", samadest Zabbixi andmetest andmeid teiste graafiliste kuvamiste sĂŒsteemide jaoks.
MT: â Sealhulgas "Grafana's".
Kuidas tehti otsus ja ressursside eraldamine?
A: â Jagage natuke sisemist kööki. Kuidas tehti otsus, et tuleb eraldada ressursse toote tĂ”siseks ĂŒmberkujundamiseks? See on ĂŒldiselt teatud riskid. Ja palun öelge kontekstis, et kavatsete toetada uusi versioone: kuidas see otsus juhimise seisukohalt Ă”igustatakse?
MM: â Tundub, et ajaloost ei ole me vĂ€ga hĂ€sti rÀÀkinud. Me sattusime olukorda, kus midagi tuli teha, ja lĂ€ksime tegelikult kahe paralleelse meeskonnaga:
- Ăks tegeles uute meetodite pĂ”hjal jĂ€lgimise sĂŒsteemi kĂ€ivitamisega: jĂ€lgimine kui teenus, standardne komplekt avatud lĂ€htekoodiga lahendusi, mida me kombineerime ja pĂŒĂŒame siis muuta Ă€ri protsessi, et töötada uue jĂ€lgimissĂŒsteemiga.
- Samas oli meil entusiast-programmeerija, kes sellega tegeles (iseendast). Nii juhtus, et tema vÔitis.
A: â Ja kui suur on meeskond?
MT: â Ta on teie ees.
A: â Kas nagu alati on vajalik kirglik inimene?
MM: â Ma ei tea, mis on kirglik inimene.
A: â Antud juhul ilmselt te. Suur tĂ€nu, te olete toredad.
MM: â AitĂ€h.
Patchide kohta Zabbixile
A: â Kas on vĂ”imalik teie lahendust kohandada ja patchida, ĂŒtleme, pollereid, proksi ja osaliselt Zabbixi enda eeltöötlejat; ja nende koostööd? Kas praeguseid arenguid on vĂ”imalik optimeerida mitmete proksidega sĂŒsteemi jaoks?
MM: â Ma tean, et Zabbixi server koostatakse proksi abil (kompilleeritakse ja saadakse kood). Me ei ole seda tootmises kontrollinud. Ma ei ole selles kindel, aga minu arvates ei kasutata proksi puhul eeltöötlejat. Proksi ĂŒlesanne on vĂ”tta komplekt mÔÔdikuid Zabbixilt, neid koguda (see salvestab ka konfiguratsiooni, kohaliku andmebaasi) ja anda tagasi Zabbixi serverile. Eeltöötlemise teeb siis server, kui ta selle kĂ€tte saab.
Huvi proksi vastu on arusaadav. Kontrollime seda. See on huvitav teema.
A: â Idee oli selline: kui saab patĆĄida pollereid, saab neid patĆĄida prokside jaoks ja kohandada serveri jaoks eeltöötlust.
MM: â Arvan, et asi on isegi lihtsam. Te vĂ”tate koodi, rakendate patĆĄi, konfigureerite selle endale sobivaks â koostate proksiserverid (nĂ€iteks ODBC abil) ja jagate patĆĄitud koodi sĂŒsteemidesse. Kus on vaja â panete kokku proksid, kus on vaja â serveri.
A: â TĂ€iendavat proksi edastamise patĆĄimist serverile ei tule ilmselt teha?
MT: â Ei, see on standardselt.
MM: â Tegelikult ei kĂ”lanud ĂŒkski ideedest. Oleme alati hoidnud tasakaalu ideede plahvatuse ja muudatuste arvu, hooldatavuse lihtsuse vahel.

Veidi reklaami đ
AitÀh, et olete meiega. Kas teile meeldivad meie artiklid? Kas soovite nÀha rohkem huvitavat sisu? Toetage meid, tellides teenuse vÔi soovitades meid tuttavatele. , ainulaadne entry-level serverite analoog, mille oleme teie jaoks vÀlja mÔelnud: (saadaval RAID1 ja RAID10 variandid, kuni 24 tuuma ja kuni 40GB DDR4).
Dell R730xd on Equinixi Tier IV andmekeskuses Amsterdamis kaks korda odavam? Ainult meie juures Hollandis! Dell R420 â 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB â alates $99! Lugege sellest
Allikas: habr.com
