SljedeÄa konferencija HighLoad++ održat Äe se 6. i 7. travnja 2020. godine u Sankt Peterburgu. ViÅ”e detalja i karte. . HighLoad++ Moskva 2018. Dvorana āMoskvaā. 9. studenog, 15:00. Teze i .

* PraÄenje ā online i analitika.
* Glavna ograniÄenja platforme ZABBIX.
* RjeŔenje za skaliranje skladiŔta analitike.
* Optimizacija ZABBIX poslužitelja.
* Optimizacija UI.
* Iskustvo eksploatacije sustava pod optereÄenjima veÄim od 40k NVPS.
* Ukratko zakljuÄci.
Mikhail Makurov (dalje ā MM): ā Pozdrav svima!
Maxim Chernetcov (dalje ā MC): ā Dobar dan!
MM: ā Dopustite mi da vam predstavim Maxima. Max je talentirani inženjer, najbolji mrežni struÄnjak kojeg znam. Maxim se bavi mrežama i uslugama, njihovim razvojem i eksploatacijom.

MC: ā A ja bih želio reÄi neÅ”to o Mihailu. Mihail je programer na C-u. Napisao je nekoliko visoko optereÄenih rjeÅ”enja za obradu prometa za naÅ”u tvrtku. Živimo i radimo na Uralu, u gradu strogih muÅ”karaca Äeljabinsku, u tvrtki āIntersvyazā. NaÅ”a tvrtka je pružatelj internetskih usluga i kabelske televizije za milijun ljudi u 16 gradova.
MM: ā I treba reÄi da je āIntersvyazā daleko viÅ”e od samo pružatelja usluga, to je IT tvrtka. VeÄina naÅ”ih rjeÅ”enja napravljena je snagom naÅ”eg IT odjela.
A: s poslužitelja koji obraÄuju promet, do call centra i mobilne aplikacije. U IT odjelu trenutno je oko 80 ljudi s vrlo razliÄitim kompetencijama.
O Zabbixu i njegovoj arhitekturi
MC: ā A sada Äu pokuÅ”ati postaviti osobni rekord i u jednoj minuti reÄi Å”to je to Zabbix (dalje ā āZabbixā).
āZabbixā se pozicionira kao sustav praÄenja āiz kutijeā na razini poduzeÄa. Ima mnogo funkcija koje olakÅ”avaju život: razvijena pravila eskalacije, API za integraciju, grupiranje i automatsko otkrivanje hostova i metrika. U āZabbixuā postoje tzv. alati za skaliranje ā proxy. āZabbixā je sustav s otvorenim kodom.
Kratko o arhitekturi. Može se reÄi da se sastoji od tri komponente:

- Poslužitelj. Napisan na C-u. S priliÄno složenom obradom i prijenosom informacija izmeÄu niti. Sva obrada odvija se u njemu: od primanja do pohrane u bazu.
- Svi podaci pohranjeni su u bazi. āZabbixā podržava MySQL, PostgreSQL i Oracle.
- Web suÄelje napisano je u PHP-u. U veÄini sustava dolazi s Apache serverom, no uÄinkovitije radi u kombinaciji nginx + php.
Danas bismo željeli podijeliti jednu priÄu iz života naÅ”e tvrtke vezanu uz āZabbixāā¦
PriÄa iz života tvrtke āIntersvyazā. Å to imamo i Å”to nam treba?

Prije 5 ili 6 mjeseci. Jednom prilikom nakon poslaā¦
MC: ā MiÅ”a, zdravo! Drago mi je da sam te uhvatio ā imamo tema za razgovor. Ponovno smo imali problema s nadzorom. Tijekom velike nesreÄe sve je usporilo i nije bilo nikakvih informacija o stanju mreže. Nažalost, to se dogaÄa veÄ ne prvi put. Treba mi tvoja pomoÄ. Napravimo da naÅ” nadzor radi pod svaku cijenu!
MM: ā Ali najprije da se uskladimo. Nisu gledao tamo veÄ nekoliko godina. Koliko se sjeÄam, odustali smo od Nagiosa i preÅ”li na āZabbixā prije 8 godina. I sada imamo, Äinilo se, 6 snažnih servera i oko desetak proxy-a. Nisam se zabunio?
MC: ā Gotovo. 15 servera, od kojih su neki virtualne maÅ”ine. Najvažnije je da to ne pomaže u trenutku kada je to najpotrebnije. Kad doÄe do kvara ā serveri usporavaju i niÅ”ta se ne vidi. PokuÅ”ali smo optimizirati konfiguraciju, ali nismo dobili znaÄajan porast performansi.
MM: ā Razumijem. Jesi li pogledao Å”to, Å”to si veÄ otkrio iz dijagnostike?
MC: ā Prvo s Äim se susreÄemo jest upravo Baza podataka. MySQL je ionako stalno optereÄen, spremajuÄi nove metrike, a kada āZabbixā poÄne generirati hrpu dogaÄaja ā baza doslovno odlazi sama u sebe na nekoliko sati. O optimizaciji konfiguracije sam ti veÄ priÄao, a nedavno smo obnovili hardver: na serverima imamo viÅ”e od stotinu gigabajta memorije i diskovne nizove na SSD RAID-ima ā linearno Å”iriti dalje nema smisla. Å to Äemo raditi?
MM: ā Razumijem. U biti, MySQL je LTP baza. Äini se da viÅ”e ne odgovara za pohranu arhiva metrika naÅ”e veliÄine. Idemo to rijeÅ”iti.
MC: ā Idemo!
Integracija Zabbixa i Clickhousea kao rezultat hackathona
Nakon nekog vremena dobili smo zanimljive podatke:

VeÄina prostora u naÅ”oj bazi bila je zauzeta arhivom metrika, dok je manje od 1% koriÅ”teno za konfiguraciju, predloÅ”ke i postavke. U to vrijeme veÄ smo viÅ”e od godine koristili rjeÅ”enje Big data temeljeno na Clickhouse. Smjer kretanja bio nam je oÄit. Na naÅ”em proljetnom āHackathonuā napisao sam integraciju āZabbixaā s āClickhouseomā za poslužitelj i frontend. Tada je āZabbixā veÄ imao podrÅ”ku za ElasticSearch, i odluÄili smo ih usporediti.

Usporedba Clickhousea i Elasticsearcha
MM: ā Za usporedbu generirali smo optereÄenje jednako onome koje osigurava āZabbixā poslužitelj i gledali kako Äe se sustavi ponaÅ”ati. Podaci su se pisali u serijama od 1000 redaka, koristili smo CURL. OÄekivali smo da Äe āClickhouseā biti uÄinkovitiji za onaj profil optereÄenja koji generira āZabbixā. Rezultati su Äak nadmaÅ”ili naÅ”a oÄekivanja:

U istim uvjetima na testovima āClickhouseā je pisao tri puta viÅ”e podataka. Oba sustava su vrlo uÄinkovito troÅ”ila resurse pri Äitanju podataka. MeÄutim, āElasticsearchuā je pri pisanju bilo potrebno veliko koliÄinu procesora:

Ukupno je āClickhouseā znaÄajno nadmaÅ”ivao āElasticsearchā u potroÅ”nji procesora i brzini. Osim toga, zahvaljujuÄi kompresiji podataka, āClickhouseā koristi 11 puta manje prostora na tvrdom disku i Äini otprilike 30 puta manje diskovnih operacija:

MC: ā Da, rad s diskovnom subsistemom u āClickhouseuā je vrlo uÄinkovit. Za baze se mogu koristiti ogromni SATA diskovi i ostvariti brzinu pisanja u stotinama tisuÄa redaka u sekundi. Sustav āiz kutijeā podržava Å”arding, replikaciju, i vrlo je jednostavan za postavljanje. ViÅ”e nego smo zadovoljni njegovim radom tijekom godine.
Za optimizaciju resursa može se instalirati āClickhouseā uz postojeÄu glavnu bazu i na taj naÄin uÅ”tedjeti znaÄajno procesorsko vrijeme i diskovne operacije. Arhiv metrika prebacili smo na veÄ postojeÄe āClickhouseā klastere:

Toliko smo rasteretili glavnu MySQL bazu da smo je mogli spojiti na jednoj maÅ”ini s āZabbixā poslužiteljem i odustati od zasebnog poslužitelja za MySQL.
Kako funkcionira polling u Zabbixu?
Prije 4 mjeseca
MM: ā Pa, o problemima s bazom možemo zaboraviti?
MC: ā ToÄno! Drugi zadatak koji moramo rijeÅ”iti je spor prikupljanje podataka. Sada je svih naÅ”ih 15 proxy poslužitelja preoptereÄeno SNMP i polling procesima. I nema druge opcije osim da dodajemo nove i nove poslužitelje.
MM: ā OdliÄno. Ali prvo mi reci kako funkcionira polling u "Zabbixu"?
MC: ā Ukratko, postoji 20 vrsta metrike i desetak naÄina za njihovo prikupljanje. "Zabbix" može prikupljati podatke ili u naÄinu "upit ā odgovor", ili Äekati nove podatke putem "Trapper suÄelja".

Važno je napomenuti da je u originalnom "Zabbixu" ovaj naÄin (Trapper) najbrži.
Postoje proxy poslužitelji za raspodjelu optereÄenja:

Proxy mogu obavljati iste funkcije prikupljanja kao i "Zabbix"-poslužitelj, primajuÄi zadatke s njega i Å”aljuÄi prikupljene metrike upravo putem Trapper suÄelja. Ovo je službeno preporuÄeni naÄin raspodjele optereÄenja. TakoÄer, proxy su korisni za praÄenje udaljene infrastrukture koja radi putem NAT-a ili sporog kanala:

MM: ā Sa arhitekturom je sve jasno. Treba pogledati izvorne kodoveā¦
Nekoliko dana kasnije
PriÄa o tome kako je nmap fping pobijedio
MM: ā Äini se da sam neÅ”to otkrio.
MC: ā PriÄaj!
MM: ā Otkrio sam da pri provjerama dostupnosti "Zabbix" provodi provjeru maksimalno do 128 hostova istovremeno. PokuÅ”ao sam poveÄati tu brojku na 500 i uklonio meÄupaketno kaÅ”njenje u njihovom pingu (ping) ā to je poveÄalo performanse do dvostruko. Ali volio bih veÄe brojke.
MC: ā U svojoj praksi ponekad moram provjeravati dostupnost tisuÄa hostova, i niÅ”ta brže od nmap-a nisam pronaÅ”ao za to. Siguran sam da je to najbrži naÄin. PokuÅ”ajmo s tim! Trebamo znaÄajno poveÄati broj hostova po iteraciji.
MM: ā Provjeravati viÅ”e od petsto? 600?
MC: ā Minimalno nekoliko tisuÄa.
MM: ā Okej. Najvažnije Å”to želim reÄi: otkrio sam da se veÄina polling-a u "Zabbixu" radi sinkrono. Definitivno ga moramo preurediti za asinkroni naÄin. Tada Äemo moÄi dramatiÄno poveÄati broj metrika koje prikupljaju polleri, posebno ako poveÄamo broj metrika po iteraciji.
MC: ā Super! I kada?
MM: ā Kao obiÄno, juÄer.
MC: ā Usporedili smo obje verzije fping i nmap:

Na velikom broju hostinga nmap je bio oÄekivano do pet puta uÄinkovitiji. BuduÄi da nmap provjerava samo dostupnost i vrijeme odgovora, broj gubitaka smo prebacili u triggere i znaÄajno smanjili intervale provjere dostupnosti. Optimalan broj hostova za nmap koji smo pronaÅ”li bio je oko 4 tisuÄe po jednoj iteraciji. Nmap nam je omoguÄio da smanjimo troÅ”kove CPU-a za provjeru dostupnosti tri puta i skratimo interval s 120 sekundi na 10.
Optimizacija polling-a
MM: ā Zatim smo se posvetili pollerima. Uglavnom nas je zanimala SNMP i agenti. U āZabbixuā je polling napravljen sinkrono i poduzete su posebne mjere kako bi se poveÄala uÄinkovitost sustava. U sinkronom naÄinu nedostupnost hostova uzrokuje znaÄajnu degradaciju pollinga. Postoji cijeli sustav stanja, postoje posebni procesi ā tzv. unreachable polleri, koji rade samo s nedostupnim hostovima:

Ovo je komentar koji prikazuje matricu stanja, svu složenost sustava prijelaza potrebnih za održavanje uÄinkovitosti sustava. Osim toga, sam sinkroni polling je priliÄno spor:

Zbog toga tisuÄe niti pollera na desetak proxyja nisu mogle prikupiti potrebnu koliÄinu podataka. Asinkrona realizacija rijeÅ”ila je ne samo probleme s brojem niti, veÄ je i znaÄajno pojednostavila sustav stanja nedostupnih hostova, jer je pri bilo kojem broju provjerenih u jednoj iteraciji pollinga maksimalno vrijeme Äekanja iznosilo 1 timeout:

Osim toga, modificirali smo i doradili sustav pollinga za SNMP upite. Naime, veÄina ne može odgovoriti na nekoliko SNMP upita istovremeno. Stoga smo uveli hibridni režim, kada SNMP polling jednog te istog hosta radi asinkrono:

To se radi za Äitavu grupu hostova. Ovaj naÄin na kraju nije sporiji od potpuno asinkronog, jer ispitivanje preko 150 SNMP vrijednosti i dalje je znatno brže od 1 timeouta.
NaÅ”i eksperimenti su pokazali da je optimalan broj upita u jednoj iteraciji otprilike 8 tisuÄa prilikom SNMP pollinga. Ukupno prelazak na asinkroni režim omoguÄio je ubrzanje performansi pollinga 200 puta, u nekoliko stotina puta.
MC: Optimizacije pollinga pokazale su da ne samo da možemo eliminirati sve proksije, veÄ i skratiti intervale za mnoge provjere, dok proksiji viÅ”e neÄe biti potrebni kao naÄin optereÄenja.
Prije otprilike tri mjeseca
Promijeni arhitekturu ā poveÄaj optereÄenje!
MM: Pa, Max, je li vrijeme za proizvodnju? Trebam snažan server i dobrog inženjera.
MC: Dobro, planirajmo. VeÄ je proÅ”lo vrijeme da se pokrenemo s mrtve toÄke na 5000 metrika u sekundi.
Jutro nakon nadogradnje
MC: Misha, nadogradili smo se, ali do jutra smo se vratili natrag⦠Pogodi kojoj brzini smo uspjeli doÄi?
MM: Maksimalno 20 tisuÄa.
MC: Aha, 25! Nažalost, tu smo gdje smo poÄeli.
MM: ZaŔto je to tako? Jesmo li proveli neku dijagnostiku?
MC: Da, naravno! Evo, na primjer, zanimljiv top:

MM: Hajde da pogledamo. Vidim da smo probali ogroman broj pollinga:

Ali pritom nismo uspjeli iskoristiti sustav ni napola:

A ukupna uÄinkovitost je priliÄno mala, oko 4000 metrika u sekundi:

Ima li joŔ neŔto?
MC: Da, strace jednog od pollersa:

MM: Ovde se jasno vidi da proces pollinga Äeka 'semafore'. To su blokade:

MC: Nije jasno.
MM: Pogledaj, ovo liÄi na situaciju kada hrpa niti pokuÅ”ava raditi s resursom, s kojim istovremeno može raditi samo jedan. Tada sve Å”to mogu raditi je dijeliti taj resurs kroz vrijeme:

I ukupna produktivnost rada s takvim resursom ograniÄena je brzinom jednog jezgra:

Ovaj problem se može rijeÅ”iti na dva naÄina.
Nadograditi hardver maÅ”ine, prijeÄi na brža jezgra:

Ili promijeniti arhitekturu i paralelno ā optereÄenje:

MC: Usput, na testnom stroju Äemo koristiti manje jezgri nego na produkcijskom, ali Äe one biti 1,5 puta brže po jezgri!
MM: Jasno? Trebamo pogledati kod servera.
Put podataka u Zabbix serveru
MC: Da bismo razumjeli, poÄeli smo analizirati kako se podaci prenose unutar 'Zabbix' servera:

Super slika, zar ne? Idemo korak po korak da malo razjasnimo. Tu su niti i servisi odgovorni za prikupljanje podataka:

Sakupljene metrike Ŕalju kroz soket u Preprocessor manager, gdje se pohranjuju u red:

Menadžer preprocesora' Å”alje podatke svojim radnicima, koji izvrÅ”avaju upute predobrade i vraÄaju ih nazad kroz isti soket:

Nakon toga, menadžer preprocesora ih Äuva u keÅ”u istorije:

Odande ih uzimaju sinhronizatori istorije, koji obavljaju niz funkcija: na primer, izraÄunavanje okidaÄa, popunjavanje keÅ”a vrednosti i, Å”to je najvažnije, Äuvanje metrika u skladiÅ”tu istorije. Ukratko, proces je složen i veoma zbunjujuÄi.

MM: ā Prvo Å”to smo primetili jeste da se veÄina tokova takmiÄi za takozvani "konfiguracijski keÅ”" (odeljak memorije u kojem se Äuvaju sve konfiguracije servera). Posebno su mnogo blokada pravili tokovi odgovorni za preuzimanje podataka:

ā¦buduÄi da u konfiguraciji nisu samo metrike s njihovim parametrima, veÄ i redovi iz kojih preuzimalici uzimaju informacije o tome Å”ta dalje da rade. Kada je preuzimalica mnogo, a jedan blokira konfiguraciju, ostali Äekaju na zahteve:

Preuzimalice ne bi trebale da se sukobljavaju

Zato smo prvo Å”to smo uradili ā podelili red na 4 dela i dozvolili preuzimalicama da u sigurnim uslovima istovremeno blokiraju te redove, te delove:

To je uklonilo konkurenciju za konfiguracijski keÅ”, i brzina rada preuzimalica znacajno je porasla. No, zatim smo se susreli sa problemom da je menadžer preprocesora poÄeo da skuplja red zadataka:

Menadžer preprocesora treba da zna kako da postavi prioritete
To se deÅ”avalo u situacijama kada mu je nedostajala performansa. Tada je sve Å”to je mogao da radi ā skupljati zahteve od procesa prikupljanja podataka i slagati ih u bafer do trenutka kada ne bi pojeo svu memoriju i pao:

Da bismo reŔili ovaj problem, dodali smo drugi soket, koji je bio posebno dodeljen radnicima:

Tako je menadžer preprocesora dobio moguÄnost da prioritetizuje svoj rad i u sluÄaju rasta bafera zadao je da uspori preuzimanje, pružajuÄi radnicima priliku da preuzmu taj bafer:

Zatim smo otkrili da je jedan od uzroka usporavanja sam radnik, jer su se takmiÄili za resurs koji nije bio važan za njihov rad. Ovaj problem smo reÅ”ili sa bug-fixom, i u novim verzijama "Zabbiksa" je veÄ reÅ”en:

PoveÄavamo broj soketa ā dobijamo rezultat
Nakon toga, sam menadžer preprocesora postao je usko grlo, jer je to jedan tok. Oslonio se na brzinu jezgra, dajuÄi maksimalnu brzinu od otprilike 70 hiljada metrika u sekundi:

Zato smo napravili Äetiri, sa Äetiri skupa utiÄnica, radnika:

I to je omoguÄilo poveÄanje brzine na otprilike 130 tisuÄa metrika:

Nelinearnost rasta objaÅ”njena je time Å”to je doÅ”la konkurencija za keÅ” povijesti. Za njega su se natjecala Äetiri menadžera predprocesora i sinkronizatori povijesti. U tom trenutku dobijali smo na probnoj maÅ”ini otprilike 130 tisuÄa metrika u sekundi, koristeÄi je otprilike 95 % po procesoru:

Prije otprilike 2,5 mjeseca
Odustajanje od snmp-community poveÄalo je NVPs jedan i pol puta
MM: ā Max, trebam novu probnu maÅ”inu! U ovu viÅ”e ne možemo stati.
MC: ā A Å”to imamo sada?
MM: ā Sada imamo 130k NVPs i procesor 'u skladiÅ”tu'.
MC: ā Wow! Super! Äekaj, imam dva pitanja. Prema mojim izraÄunima, naÅ”a potreba je oko 15-20 tisuÄa metrika u sekundi. ZaÅ”to nam viÅ”e?
MM: ā Želim zavrÅ”iti posao do kraja. Želim vidjeti koliko možemo izvuÄi iz ovog sistema.
MC: ā Ali...
MM: ā Ali za biznis je beskorisno.
MC: ā Razumijem. I drugo pitanje: to Å”to imamo sada, možemo li održavati sami, bez pomoÄi developera?
MM: ā Ne mislim. Promjena u radu s konfiguracijskim keÅ”om je problem. To se odnosi na promjene u veÄini tokova i dovoljno je složeno za podrÅ”ku. Vjerojatno Äe biti vrlo teÅ”ko održavati.
MC: ā Onda nam treba neka alternativa.
MM: ā Ima takva opcija. Možemo preÄi na brza jezgra, uz odustajanje od novog sistema zakljuÄavanja. U svakom sluÄaju, dobit Äemo performanse od 60-80 tisuÄa metrika. Osim toga, možemo zadržati sav ostatak koda. 'ClickHouse', asinhrono polling Äe raditi. I to Äe biti lako održavati.
MC: ā Sjajno! Predlažem da stanemo ovdje.
Nakon optimizacije serverskog dijela konaÄno smo uspjeli pokrenuti novi kod u produkciji. Odustali smo od dijela promjena u korist prelaska na maÅ”inu s brzim jezgrama i minimiziranju broja promjena u kodu. TakoÄer smo pojednostavili konfiguraciju i, gdje god je moguÄe, odustali od makroa u podacima, jer oni predstavljaju izvor dodatnih zakljuÄavanja.

Na primjer, odustajanje od Äesto viÄenog makroa snmp-community u naÅ”oj dokumentaciji i primjerima omoguÄilo je dodatno ubrzanje NVPs za otprilike 1,5 puta.
Nakon dva dana u produkciji
Uklanjamo iskaÄuÄe prozore povijesti incidenata
MC: ā MiÅ”a, koristimo sustav veÄ dva dana i sve radi. Ali samo kada sve funkcionira! Imali smo planirane radove s premjeÅ”tanjem priliÄno velikog segmenta mreže i ponovno smo provjeravali rukama Å”to je podignuto, a Å”to nije.
MM: ā Ne može biti! Sve smo provjerili 10 puta. Poslužitelj obraÄuje Äak i potpunu nedostupnost mreže trenutno.
MC: ā Razumijem sve: poslužitelj, baza, top, austat, logovi ā sve brzo⦠Ali gledamo web suÄelje, a tamo ā procesor āu praznom hoduā na poslužitelju i ovo:

MM: ā Jasno. Pogledajmo web. Otkrili smo da u situacijama s velikim brojem aktivnih incidenata veÄina operativnih widgeta poÄinju raditi vrlo sporo:

Uzrok tome je bila generacija iskaÄuÄih prozora s povijeÅ”Äu incidenata, koji se generiraju za svaki element na popisu. Stoga smo odustali od generacije tih prozora (zakomentirali smo 5 redaka u kodu), i to je rijeÅ”ilo naÅ”e probleme.
Vrijeme uÄitavanja widgeta, Äak i pri potpunoj nedostupnosti, smanjeno je s nekoliko minuta na prihvatljivih naÅ”ih 10-15 sekundi, a povijest se i dalje može pogledati jednim klikom na vrijeme:

Nakon posla. Prije 2 mjeseca
MC: ā MiÅ”a, odlaziÅ”? Trebam razgovarati.
MM: ā Nisam planirao. Opet neÅ”to s āZabbixomā?
MC: ā Ma ne, opusti se! Samo sam htio reÄi: sve radi, hvala! Ja Äu platiti pivo.
Zabbix je uÄinkovit
āZabbixā je priliÄno univerzalan i bogat sustav i funkcija. Može se koristiti za male instalacije āiz kutijeā, ali s rastom potreba mora se optimizirati. Za pohranu velikog arhiva metrika koristite odgovarajuÄe skladiÅ”te:
- možete iskoristiti ugraÄena sredstva u obliku integracije s āElastisearchomā ili izvoza povijesti u tekstualne datoteke (dostupno od Äetvrte verzije);
- možete iskoristiti naÅ”e iskustvo i integraciju s āClickhouseomā.
Za radikalno poveÄanje brzine prikupljanja metrika, prikupljajte ih asinkronim metodama i prenosite putem trapper suÄelja na āZabbixā poslužitelj; ili možete iskoristiti zakrpu za asinkronost pollera samog āZabbixaā.
"Zabbix" je napisan u C-u i vrlo je uÄinkovit. RjeÅ”enja za nekoliko uskih arhitektonskih mjesta dodatno poveÄavaju njegovu uÄinkovitost, a prema naÅ”em iskustvu, omoguÄuju dobivanje viÅ”e od 100.000 metrika na jednoj procesorskoj maÅ”ini.

Taj poznati patch Zabbix
MM: ā Želim dodati nekoliko toÄaka. Sav trenutni izlaganje, svi testovi, podaci navedeni su za konfiguraciju koju koristimo. S nje trenutno uzimamo otprilike 20.000 metrika u sekundi. Ako pokuÅ”avate razumjeti hoÄe li to raditi kod vas ā možete usporediti. Ono o Äemu smo danas govorili je dostupno na GitHubu u obliku patcha:

Patch ukljuÄuje:
- potpunu integraciju s "ClickHouse" (tako za Zabbix server, kao i za frontend);
- rjeŔavanje problema s preprocesor menadžerom;
- asinhroni polling.
Patch je kompatibilan sa svim verzijama 4, ukljuÄujuÄi lts. Vjerojatno Äe uz minimalne izmjene raditi i na verziji 3.4.
Hvala na pažnji.
Pitanja
Pitanje iz publike (dalje ā P): ā Dobar dan! Možete li molim vas reÄi imate li planove za intenzivnu suradnju s timom Zabbix ili oni s vama, kako bi to bio normalan rad Zabbixa, a ne samo patch?
MM: ā Da, dio promjena Äemo definitivno commitirati. NeÅ”to Äe ostati u patchu.
A: ā Hvala vam puno na odliÄnom izlaganju! Možete li molim vas reÄi, nakon primjene patcha, hoÄe li podrÅ”ka od strane Zabbixa ostati i kako se dalje nadograditi na viÅ”e verzije? HoÄe li biti moguÄnosti nadograditi Zabbix nakon vaÅ”eg patcha na 4.2, 5.0?
MM: ā O podrÅ”ci ne mogu niÅ”ta reÄi. Da sam bio tehniÄka podrÅ”ka Zabbixa, vjerojatno bih rekao ne, jer je to tuÄi kod. Å to se tiÄe kodne baze 4.2, naÅ” stav je ovakav: "Idemo s vremenom i sami Äemo se nadograditi na sljedeÄu verziju". Tako da Äemo neko vrijeme objavljivati patch za ažurirane verzije. VeÄ sam rekao u izlaganju: broj promjena s verzijama za sada je dovoljno malen. Mislim da je prijelaz s 3.4 na 4 trajao otprilike 15 minuta. Tamo se neÅ”to promijenilo, ali ne toliko bitno.
A: ā Dakle, planirate podržavati svoj patch i može se sigurno instalirati u produkciji, primajuÄi daljnje nadogradnje na neki naÄin?
MM: ā Mi to kategoriÄki preporuÄujemo. To nam rjeÅ”ava jako mnogo problema.
MC: Želim joÅ” jednom naglasiti da su promjene koje se ne tiÄu arhitekture i ne odnose se na blokade, redove ā modularne su i nalaze se u odvojenim modulima. Äak i sami, pri neznatnim promjenama, mogu se relativno lako održavati.
MM: Ako vas zanimaju detalji, āClickHouseā koristi takozvanu biblioteku povijesti. Ona je nezavisna ā to je kopija podrÅ”ke za āElasticsā, tj. može se konfigurirati. Polling mijenja samo pollere. Smatramo da Äe ovo dugo raditi.
A: Hvala puno. Možete li reÄi postoji li neka dokumentacija o unesenim promjenama?

MM: Dokumentacija je patch. OÄigledno, s uvoÄenjem āClickHouseaā, s novim vrstama pollera javljaju se nove konfiguracijske opcije. Na linku iz posljednjeg slajda postoji kratki opis kako koristiti ovo.
O zamjeni fping-a s nmap-om
A: Kako ste to konaÄno realizirali? Možete li dati konkretne primjere: imate li strapere i vanjski skript? Å to na kraju provjerava tako brzo ogromnu koliÄinu hostova? Kako dolazite do tih hostova? Treba ih nekako dati nmap-u, dobiti negdje, pohraniti, neÅ”to pokrenuti?
MM: Super. Vrlo pravo pitanje! SuÅ”tina je u tome. Modificirali smo biblioteku (ICMP ping, sastavni dio āZabbixaā) za ICMP provjere, gdje je broj paketa postavljen na jedan (1), a kod pokuÅ”ava koristiti nmap. To jest, to je unutarnji rad āZabbixaā i postalo je unutarnji rad pingera. Prema tome, nikakva sinhronizacija ili koriÅ”tenje trappera nije potrebna. Ovo je uÄinjeno svjesno kako bi sustav ostao cjelovit i da se ne bavi sinhronizacijom dvaju sustava baza: Å”to provjeravati, puniti putem pollera, a da li nam punjenje nije puklo? Ovo je znatno jednostavnije.
A: Da li to takoÄer radi za proxy?
MM: Da, ali nismo provjeravali. Kod polling-a i u āZabbixuā i na serveru je jedinstven. Trebalo bi raditi. JoÅ” jednom naglaÅ”avam: performanse sustava su takve da nam proxy nije potreban.
MC: Pravi odgovor na pitanje je: āZaÅ”to vam treba proxy u ovakvom sustavu?ā Samo zbog NAT-a ili da biste nadgledali preko sporog kanala?
A: Koristite li āZabbixā kao alertor, ako sam dobro shvatio? Ili su grafovi (gdje je arhivski sloj) otiÅ”li u neki drugi sustav, poput Grafane? Ili ne koristite ovu funkcionalnost?
MM: ā Ponovo naglaÅ”avam: napravili smo potpunu integraciju. Ispunjavamo historiju u āClickHouseā, ali smo pritom promijenili php frontend. Php frontend se povezuje s āClickHouseā i sve grafike izraÄuje odatle. Uz to, moram biti iskren, imamo dio koji gradi podatke iz istog āClickHouseā, iz istih podataka āZabbixaā u drugim sustavima grafiÄkog prikazivanja.
MC: ā U āGrafaniā ukljuÄujuÄi.
Kako je donesena odluka o izdavanju resursa?
A: ā Podijelite malo unutarnju kuhinju. Kako je donesena odluka da se treba izdvojiti resurse za ozbiljno preureÄenje proizvoda? To, u osnovi, nosi odreÄene rizike. I molim vas, recite u kontekstu toga Å”to namjeravate podržavati nove verzije: kako se ta odluka opravdava s toÄke glediÅ”ta upravljanja?
MM: ā Äini se da nismo baÅ” dobro ispriÄali dramu povijesti. NaÅ”li smo se u situaciji kada je bilo potrebno neÅ”to uÄiniti, i krenuli smo suÅ”tinski s dvije paralelne ekipe:
- Jedna se bavila pokretanjem sustava praÄenja novim metodama: praÄenje kao usluga, standardni set open-source rjeÅ”enja koja kombiniramo i zatim pokuÅ”avamo mijenjati poslovne procese kako bismo radili s novim sustavom praÄenja.
- Paralelno, imali smo entuzijasta-programera koji se time bavio (o sebi). Ispalo je da je on pobijedio.
A: ā Kolika je veliÄina tima?
MC: ā On je pred vama.
A: ā Dakle, kao i uvijek treba strastveni Äovjek?
MM: ā Ne znam Å”to je strastveni Äovjek.
A: ā U ovom sluÄaju, oÄito ste vi. Hvala puno, vi ste sjajni.
MM: ā Hvala.
O zakrpama za Zabbix
A: ā Za sustav koji koristi proksi (na primjer, u nekim distribuiranim sustavima), je li moguÄe prilagoditi i zakrpati vaÅ”e rjeÅ”enje, recimo, puller-e, proksi i djelomiÄno preprocesor samog āZabbixaā; i njihovu interakciju? Je li moguÄe optimizirati postojeÄe radove za sustav s viÅ”e proksi?
MM: ā Znam da se āZabbixā server gradi s pomoÄu proksi (kompajlira se i dobija kod). Nismo to provjeravali u produkciji. Nisam siguran u to, ali mislim da se preprocesor-menadžer ne koristi u proksi. Zadatak proksi je uzeti set metrika iz āZabbixaā, ispuniti ih (takoÄer zapisuje konfiguraciju, lokalnu bazu) i vratiti āZabbixā serveru. Preprocesiranje Äe kasnije raditi sam server, kada ga primi.
Interes za proxy je razumljiv. Provjerit Äemo to. To je zanimljiva tema.
A: ā Ideja je bila: ako se mogu patchirati polleri, mogu se patchirati i na proxy i prilagoditi interakciju sa serverom, dok se preprocesor za te svrhe prilagoÄava samo na serveru.
MM: ā Mislim da je to joÅ” jednostavnije. Uzimate kod, nanosete patch, zatim ga konfigurirate prema vlastitim potrebama ā konfigurirate proxy servere (na primjer, s ODBC) i distribuirate patchirani kod po sustavima. Gdje je potrebno ā postavljate proxy, gdje je potrebno ā server.
A: ā Dodatno, patchiranje prijenosa proxy na server vjerojatno neÄe biti potrebno?
MC: ā Ne, to je standardno.
MM: ā U stvari, jedna od ideja nije zvuÄala. Uvijek smo nastojali održati ravnotežu izmeÄu inflacije ideja i broja promjena, te lakoÄe održavanja.

Malo reklame š
Hvala Å”to ostajete s nama. SviÄa li vam se naÅ”e Älanke? Želite li vidjeti viÅ”e zanimljivih materijala? Podržite nas narudžbom ili preporuÄite prijateljima, , jedinstveni analog entry-level servera koji smo razvili za vas: (dostupne opcije s RAID1 i RAID10, do 24 jezgre i do 40GB DDR4).
Dell R730xd je 2 puta jeftiniji u data centaru Equinix Tier IV u Amsterdamu? Samo kod nas u Nizozemskoj! Dell R420 ā 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB ā od 99 $! ProÄitajte o tome
Izvor: habr.com
