{"id":56049,"date":"2020-02-04T00:00:00","date_gmt":"2020-02-03T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere"},"modified":"2020-02-18T14:04:13","modified_gmt":"2020-02-18T11:04:13","slug":"highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere","title":{"rendered":"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Sljede\u0107a konferencija HighLoad++ odr\u017eat \u0107e se 6. i 7. travnja 2020. godine u Sankt Peterburgu. Vi\u0161e detalja i karte. <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/2sSxgBx\">na linku<\/a><\/noindex>. HighLoad++ Moskva 2018. Dvorana \u201eMoskva\u201c. 9. studenog, 15:00. Teze i <noindex><a rel=\"nofollow\" href=\"http:\/\/www.highload.ru\/moscow\/2018\/abstracts\/4141\">prezentacija<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/5c3e11c8449de7375d30b2cd75b5927e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n* Pra\u0107enje \u2014 online i analitika.<br \/>\n* Glavna ograni\u010denja platforme ZABBIX.<br \/>\n* Rje\u0161enje za skaliranje skladi\u0161ta analitike.<br \/>\n* Optimizacija ZABBIX poslu\u017eitelja.<br \/>\n* Optimizacija UI.<br \/>\n* Iskustvo eksploatacije sustava pod optere\u0107enjima ve\u0107im od 40k NVPS.<br \/>\n* Ukratko zaklju\u010dci.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>Mikhail Makurov (dalje \u2013 MM):<\/b> \u2013 Pozdrav svima!<\/p>\n<p><b>Maxim Chernetcov (dalje \u2013 MC):<\/b> \u2013 Dobar dan!<\/p>\n<p><b>MM:<\/b> \u2013 Dopustite mi da vam predstavim Maxima. Max je talentirani in\u017eenjer, najbolji mre\u017eni stru\u010dnjak kojeg znam. Maxim se bavi mre\u017eama i uslugama, njihovim razvojem i eksploatacijom.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/a7fc62a03c0aede46f4a4695845daa22.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> \u2013 A ja bih \u017eelio re\u0107i ne\u0161to o Mihailu. Mihail je programer na C-u. Napisao je nekoliko visoko optere\u0107enih rje\u0161enja za obradu prometa za na\u0161u tvrtku. \u017divimo i radimo na Uralu, u gradu strogih mu\u0161karaca \u010celjabinsku, u tvrtki \u201eIntersvyaz\u201c. Na\u0161a tvrtka je pru\u017eatelj internetskih usluga i kabelske televizije za milijun ljudi u 16 gradova.<\/p>\n<p><b>MM:<\/b> \u2013 I treba re\u0107i da je \u201eIntersvyaz\u201c daleko vi\u0161e od samo pru\u017eatelja usluga, to je IT tvrtka. Ve\u0107ina na\u0161ih rje\u0161enja napravljena je snagom na\u0161eg IT odjela.<\/p>\n<p><b>A:<\/b> s poslu\u017eitelja koji obra\u0111uju promet, do call centra i mobilne aplikacije. U IT odjelu trenutno je oko 80 ljudi s vrlo razli\u010ditim kompetencijama.<\/p>\n<h3>O Zabbixu i njegovoj arhitekturi<\/h3>\n<p>\n<b>MC:<\/b> \u2013 A sada \u0107u poku\u0161ati postaviti osobni rekord i u jednoj minuti re\u0107i \u0161to je to Zabbix (dalje \u2013 \u201eZabbix\u201c).<\/p>\n<p>\u201eZabbix\u201c se pozicionira kao sustav pra\u0107enja \u201eiz kutije\u201c na razini poduze\u0107a. Ima mnogo funkcija koje olak\u0161avaju \u017eivot: razvijena pravila eskalacije, API za integraciju, grupiranje i automatsko otkrivanje hostova i metrika. U \u201eZabbixu\u201c postoje tzv. alati za skaliranje \u2013 proxy. \u201eZabbix\u201c je sustav s otvorenim kodom.<\/p>\n<p>Kratko o arhitekturi. Mo\u017ee se re\u0107i da se sastoji od tri komponente:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/0d2ae3ee04d00885d65e17b8cf44182b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ul>\n<li>Poslu\u017eitelj. Napisan na C-u. S prili\u010dno slo\u017eenom obradom i prijenosom informacija izme\u0111u niti. Sva obrada odvija se u njemu: od primanja do pohrane u bazu.<\/li>\n<li>Svi podaci pohranjeni su u bazi. \u201eZabbix\u201c podr\u017eava MySQL, PostgreSQL i Oracle.<\/li>\n<li>Web su\u010delje napisano je u PHP-u. U ve\u0107ini sustava dolazi s Apache serverom, no u\u010dinkovitije radi u kombinaciji nginx + php.<\/li>\n<\/ul>\n<p>\nDanas bismo \u017eeljeli podijeliti jednu pri\u010du iz \u017eivota na\u0161e tvrtke vezanu uz \u201eZabbix\u201c\u2026<\/p>\n<h3>Pri\u010da iz \u017eivota tvrtke \u201eIntersvyaz\u201c. \u0160to imamo i \u0161to nam treba?<\/h3>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/407c35b81995ddca6444fa418941063f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Prije 5 ili 6 mjeseci. Jednom prilikom nakon posla\u2026<\/i><\/p>\n<p><b>MC:<\/b> \u2013 Mi\u0161a, zdravo! Drago mi je da sam te uhvatio \u2013 imamo tema za razgovor. Ponovno smo imali problema s nadzorom. Tijekom velike nesre\u0107e sve je usporilo i nije bilo nikakvih informacija o stanju mre\u017ee. Na\u017ealost, to se doga\u0111a ve\u0107 ne prvi put. Treba mi tvoja pomo\u0107. Napravimo da na\u0161 nadzor radi pod svaku cijenu!<\/p>\n<p><b>MM:<\/b> \u2013 Ali najprije da se uskladimo. Nisu gledao tamo ve\u0107 nekoliko godina. Koliko se sje\u0107am, odustali smo od Nagiosa i pre\u0161li na \u201eZabbix\u201c prije 8 godina. I sada imamo, \u010dinilo se, 6 sna\u017enih servera i oko desetak proxy-a. Nisam se zabunio?<\/p>\n<p><b>MC:<\/b> \u2013 Gotovo. 15 servera, od kojih su neki virtualne ma\u0161ine. Najva\u017enije je da to ne poma\u017ee u trenutku kada je to najpotrebnije. Kad do\u0111e do kvara \u2013 serveri usporavaju i ni\u0161ta se ne vidi. Poku\u0161ali smo optimizirati konfiguraciju, ali nismo dobili zna\u010dajan porast performansi.<\/p>\n<p><b>MM:<\/b> \u2013 Razumijem. Jesi li pogledao \u0161to, \u0161to si ve\u0107 otkrio iz dijagnostike?<\/p>\n<p><b>MC:<\/b> \u2013 Prvo s \u010dim se susre\u0107emo jest upravo Baza podataka. MySQL je ionako stalno optere\u0107en, spremaju\u0107i nove metrike, a kada \u201eZabbix\u201c po\u010dne generirati hrpu doga\u0111aja \u2013 baza doslovno odlazi sama u sebe na nekoliko sati. O optimizaciji konfiguracije sam ti ve\u0107 pri\u010dao, a nedavno smo obnovili hardver: na serverima imamo vi\u0161e od stotinu gigabajta memorije i diskovne nizove na SSD RAID-ima \u2013 linearno \u0161iriti dalje nema smisla. \u0160to \u0107emo raditi?<\/p>\n<p><b>MM:<\/b> \u2013 Razumijem. U biti, MySQL je LTP baza. \u010cini se da vi\u0161e ne odgovara za pohranu arhiva metrika na\u0161e veli\u010dine. Idemo to rije\u0161iti.<\/p>\n<p><b>MC:<\/b> \u2013 Idemo!<\/p>\n<h3>Integracija Zabbixa i Clickhousea kao rezultat hackathona<\/h3>\n<p>\nNakon nekog vremena dobili smo zanimljive podatke:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/46899e843b1e89524c6d762c1c167a6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVe\u0107ina prostora u na\u0161oj bazi bila je zauzeta arhivom metrika, dok je manje od 1% kori\u0161teno za konfiguraciju, predlo\u0161ke i postavke. U to vrijeme ve\u0107 smo vi\u0161e od godine koristili rje\u0161enje Big data temeljeno na Clickhouse. Smjer kretanja bio nam je o\u010dit. Na na\u0161em proljetnom \u201eHackathonu\u201d napisao sam integraciju \u201eZabbixa\u201d s \u201eClickhouseom\u201d za poslu\u017eitelj i frontend. Tada je \u201eZabbix\u201d ve\u0107 imao podr\u0161ku za ElasticSearch, i odlu\u010dili smo ih usporediti.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/92fa3da527de48102cbdcf6959d46814.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Usporedba Clickhousea i Elasticsearcha<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Za usporedbu generirali smo optere\u0107enje jednako onome koje osigurava \u201eZabbix\u201d poslu\u017eitelj i gledali kako \u0107e se sustavi pona\u0161ati. Podaci su se pisali u serijama od 1000 redaka, koristili smo CURL. O\u010dekivali smo da \u0107e \u201eClickhouse\u201d biti u\u010dinkovitiji za onaj profil optere\u0107enja koji generira \u201eZabbix\u201d. Rezultati su \u010dak nadma\u0161ili na\u0161a o\u010dekivanja:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/354be7147b23a0bcb9ada3af93f59fac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU istim uvjetima na testovima \u201eClickhouse\u201d je pisao tri puta vi\u0161e podataka. Oba sustava su vrlo u\u010dinkovito tro\u0161ila resurse pri \u010ditanju podataka. Me\u0111utim, \u201eElasticsearchu\u201d je pri pisanju bilo potrebno veliko koli\u010dinu procesora:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/fea7f7f7801024cee0f9367c49d81d5b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUkupno je \u201eClickhouse\u201d zna\u010dajno nadma\u0161ivao \u201eElasticsearch\u201d u potro\u0161nji procesora i brzini. Osim toga, zahvaljuju\u0107i kompresiji podataka, \u201eClickhouse\u201d koristi 11 puta manje prostora na tvrdom disku i \u010dini otprilike 30 puta manje diskovnih operacija:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/50c24c4615ed350d7d78ec8655423409.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> \u2013 Da, rad s diskovnom subsistemom u \u201eClickhouseu\u201d je vrlo u\u010dinkovit. Za baze se mogu koristiti ogromni SATA diskovi i ostvariti brzinu pisanja u stotinama tisu\u0107a redaka u sekundi. Sustav \u201eiz kutije\u201d podr\u017eava \u0161arding, replikaciju, i vrlo je jednostavan za postavljanje. Vi\u0161e nego smo zadovoljni njegovim radom tijekom godine.<\/p>\n<p>Za optimizaciju resursa mo\u017ee se instalirati \u201eClickhouse\u201d uz postoje\u0107u glavnu bazu i na taj na\u010din u\u0161tedjeti zna\u010dajno procesorsko vrijeme i diskovne operacije. Arhiv metrika prebacili smo na ve\u0107 postoje\u0107e \u201eClickhouse\u201d klastere:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/4cf44eae47a13f2fc50377fec884ecc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nToliko smo rasteretili glavnu MySQL bazu da smo je mogli spojiti na jednoj ma\u0161ini s \u201eZabbix\u201d poslu\u017eiteljem i odustati od zasebnog poslu\u017eitelja za MySQL.<\/p>\n<h3>Kako funkcionira polling u Zabbixu?<\/h3>\n<p>\n<i>Prije 4 mjeseca<\/i><\/p>\n<p><b>MM:<\/b> \u2013 Pa, o problemima s bazom mo\u017eemo zaboraviti?<\/p>\n<p><b>MC:<\/b> \u2013 To\u010dno! Drugi zadatak koji moramo rije\u0161iti je spor prikupljanje podataka. Sada je svih na\u0161ih 15 proxy poslu\u017eitelja preoptere\u0107eno SNMP i polling procesima. I nema druge opcije osim da dodajemo nove i nove poslu\u017eitelje.<\/p>\n<p><b>MM:<\/b> \u2013 Odli\u010dno. Ali prvo mi reci kako funkcionira polling u \"Zabbixu\"?<\/p>\n<p><b>MC:<\/b> \u2013 Ukratko, postoji 20 vrsta metrike i desetak na\u010dina za njihovo prikupljanje. \"Zabbix\" mo\u017ee prikupljati podatke ili u na\u010dinu \"upit \u2013 odgovor\", ili \u010dekati nove podatke putem \"Trapper su\u010delja\".<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/cb2d974ee113b4147a4a588c1f35c730.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVa\u017eno je napomenuti da je u originalnom \"Zabbixu\" ovaj na\u010din (Trapper) najbr\u017ei. <\/p>\n<p>Postoje proxy poslu\u017eitelji za raspodjelu optere\u0107enja:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/7b5c94a82b7e06aff6df6ea5549babdf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProxy mogu obavljati iste funkcije prikupljanja kao i \"Zabbix\"-poslu\u017eitelj, primaju\u0107i zadatke s njega i \u0161alju\u0107i prikupljene metrike upravo putem Trapper su\u010delja. Ovo je slu\u017ebeno preporu\u010deni na\u010din raspodjele optere\u0107enja. Tako\u0111er, proxy su korisni za pra\u0107enje udaljene infrastrukture koja radi putem NAT-a ili sporog kanala:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/dbfb2777f9dd9b4adb81f1fa89f3bdd5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Sa arhitekturom je sve jasno. Treba pogledati izvorne kodove\u2026<\/p>\n<p><i>Nekoliko dana kasnije<\/i><\/p>\n<h3>Pri\u010da o tome kako je nmap fping pobijedio<\/h3>\n<p>\n<b>MM:<\/b> \u2013 \u010cini se da sam ne\u0161to otkrio.<\/p>\n<p><b>MC:<\/b> \u2013 Pri\u010daj!<\/p>\n<p><b>MM:<\/b> \u2013 Otkrio sam da pri provjerama dostupnosti \"Zabbix\" provodi provjeru maksimalno do 128 hostova istovremeno. Poku\u0161ao sam pove\u0107ati tu brojku na 500 i uklonio me\u0111upaketno ka\u0161njenje u njihovom pingu (ping) \u2013 to je pove\u0107alo performanse do dvostruko. Ali volio bih ve\u0107e brojke.<\/p>\n<p><b>MC:<\/b> \u2013 U svojoj praksi ponekad moram provjeravati dostupnost tisu\u0107a hostova, i ni\u0161ta br\u017ee od nmap-a nisam prona\u0161ao za to. Siguran sam da je to najbr\u017ei na\u010din. Poku\u0161ajmo s tim! Trebamo zna\u010dajno pove\u0107ati broj hostova po iteraciji.<\/p>\n<p><b>MM:<\/b> \u2013 Provjeravati vi\u0161e od petsto? 600?<\/p>\n<p><b>MC:<\/b> \u2013 Minimalno nekoliko tisu\u0107a.<\/p>\n<p><b>MM:<\/b> \u2013 Okej. Najva\u017enije \u0161to \u017eelim re\u0107i: otkrio sam da se ve\u0107ina polling-a u \"Zabbixu\" radi sinkrono. Definitivno ga moramo preurediti za asinkroni na\u010din. Tada \u0107emo mo\u0107i dramati\u010dno pove\u0107ati broj metrika koje prikupljaju polleri, posebno ako pove\u0107amo broj metrika po iteraciji.<\/p>\n<p><b>MC:<\/b> \u2013 Super! I kada?<\/p>\n<p><b>MM:<\/b> \u2013 Kao obi\u010dno, ju\u010der.<\/p>\n<p><b>MC:<\/b> \u2013 Usporedili smo obje verzije fping i nmap:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/4be4cfe019b6b318ae2fbdbf82577111.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa velikom broju hostinga nmap je bio o\u010dekivano do pet puta u\u010dinkovitiji. Budu\u0107i da nmap provjerava samo dostupnost i vrijeme odgovora, broj gubitaka smo prebacili u triggere i zna\u010dajno smanjili intervale provjere dostupnosti. Optimalan broj hostova za nmap koji smo prona\u0161li bio je oko 4 tisu\u0107e po jednoj iteraciji. Nmap nam je omogu\u0107io da smanjimo tro\u0161kove CPU-a za provjeru dostupnosti tri puta i skratimo interval s 120 sekundi na 10.<\/p>\n<h3>Optimizacija polling-a<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Zatim smo se posvetili pollerima. Uglavnom nas je zanimala SNMP i agenti. U \u201eZabbixu\u201c je polling napravljen sinkrono i poduzete su posebne mjere kako bi se pove\u0107ala u\u010dinkovitost sustava. U sinkronom na\u010dinu nedostupnost hostova uzrokuje zna\u010dajnu degradaciju pollinga. Postoji cijeli sustav stanja, postoje posebni procesi \u2013 tzv. unreachable polleri, koji rade samo s nedostupnim hostovima:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/6a001eff121f2392fffda69d719ebad6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOvo je komentar koji prikazuje matricu stanja, svu slo\u017eenost sustava prijelaza potrebnih za odr\u017eavanje u\u010dinkovitosti sustava. Osim toga, sam sinkroni polling je prili\u010dno spor:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/3579a4a3de85c37f812ba2ca71cf4b3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZbog toga tisu\u0107e niti pollera na desetak proxyja nisu mogle prikupiti potrebnu koli\u010dinu podataka. Asinkrona realizacija rije\u0161ila je ne samo probleme s brojem niti, ve\u0107 je i zna\u010dajno pojednostavila sustav stanja nedostupnih hostova, jer je pri bilo kojem broju provjerenih u jednoj iteraciji pollinga maksimalno vrijeme \u010dekanja iznosilo 1 timeout:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/c5f2d9bb3e558f8bba6bd8a96d8ed6a6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOsim toga, modificirali smo i doradili sustav pollinga za SNMP upite. Naime, ve\u0107ina ne mo\u017ee odgovoriti na nekoliko SNMP upita istovremeno. Stoga smo uveli hibridni re\u017eim, kada SNMP polling jednog te istog hosta radi asinkrono:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/eb61766e8afce9bf72d6e9757492559e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo se radi za \u010ditavu grupu hostova. Ovaj na\u010din na kraju nije sporiji od potpuno asinkronog, jer ispitivanje preko 150 SNMP vrijednosti i dalje je znatno br\u017ee od 1 timeouta.<\/p>\n<p>Na\u0161i eksperimenti su pokazali da je optimalan broj upita u jednoj iteraciji otprilike 8 tisu\u0107a prilikom SNMP pollinga. Ukupno prelazak na asinkroni re\u017eim omogu\u0107io je ubrzanje performansi pollinga 200 puta, u nekoliko stotina puta.<\/p>\n<p><b>MC:<\/b> Optimizacije pollinga pokazale su da ne samo da mo\u017eemo eliminirati sve proksije, ve\u0107 i skratiti intervale za mnoge provjere, dok proksiji vi\u0161e ne\u0107e biti potrebni kao na\u010din optere\u0107enja.<\/p>\n<p><i>Prije otprilike tri mjeseca<\/i><\/p>\n<h3>Promijeni arhitekturu \u2013 pove\u0107aj optere\u0107enje!<\/h3>\n<p>\n<b>MM:<\/b> Pa, Max, je li vrijeme za proizvodnju? Trebam sna\u017ean server i dobrog in\u017eenjera.<\/p>\n<p><b>MC:<\/b> Dobro, planirajmo. Ve\u0107 je pro\u0161lo vrijeme da se pokrenemo s mrtve to\u010dke na 5000 metrika u sekundi.<\/p>\n<p><i>Jutro nakon nadogradnje<\/i><\/p>\n<p><b>MC:<\/b> Misha, nadogradili smo se, ali do jutra smo se vratili natrag\u2026 Pogodi kojoj brzini smo uspjeli do\u0107i?<\/p>\n<p><b>MM:<\/b> Maksimalno 20 tisu\u0107a.<\/p>\n<p><b>MC:<\/b> Aha, 25! Na\u017ealost, tu smo gdje smo po\u010deli.<\/p>\n<p><b>MM:<\/b> Za\u0161to je to tako? Jesmo li proveli neku dijagnostiku?<\/p>\n<p><b>MC:<\/b> Da, naravno! Evo, na primjer, zanimljiv top:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/09ac3336a820977b643ee5328ad2a851.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> Hajde da pogledamo. Vidim da smo probali ogroman broj pollinga:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/346e8047f1f6f2bb1b1dd91a728e437b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAli pritom nismo uspjeli iskoristiti sustav ni napola:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/be1843dbec0fb10d8da59e8c570adc5b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA ukupna u\u010dinkovitost je prili\u010dno mala, oko 4000 metrika u sekundi:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/02eaf0b56629ebc6d3d5c132374a91b8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIma li jo\u0161 ne\u0161to?<\/p>\n<p><b>MC:<\/b> Da, strace jednog od pollersa:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/73fc58bd2925859f6fbbcd118a0483c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> Ovde se jasno vidi da proces pollinga \u010deka 'semafore'. To su blokade:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/d0bec44a9677ec111066dccc1dd8c5dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> Nije jasno.<\/p>\n<p><b>MM:<\/b> Pogledaj, ovo li\u010di na situaciju kada hrpa niti poku\u0161ava raditi s resursom, s kojim istovremeno mo\u017ee raditi samo jedan. Tada sve \u0161to mogu raditi je dijeliti taj resurs kroz vrijeme:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/7dbb9e8941b01b666dd48f6301151ec9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI ukupna produktivnost rada s takvim resursom ograni\u010dena je brzinom jednog jezgra:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/e00b197577f4ea7350fe56665dbae299.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOvaj problem se mo\u017ee rije\u0161iti na dva na\u010dina.<\/p>\n<p>Nadograditi hardver ma\u0161ine, prije\u0107i na br\u017ea jezgra:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/296d84b434ed7277fb558a8a4dd5ac47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIli promijeniti arhitekturu i paralelno \u2013 optere\u0107enje:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/efea73106440db4e5eda5aa475dd088b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> Usput, na testnom stroju \u0107emo koristiti manje jezgri nego na produkcijskom, ali \u0107e one biti 1,5 puta br\u017ee po jezgri!<\/p>\n<p><b>MM:<\/b> Jasno? Trebamo pogledati kod servera.<\/p>\n<h3>Put podataka u Zabbix serveru<\/h3>\n<p>\n<b>MC:<\/b> Da bismo razumjeli, po\u010deli smo analizirati kako se podaci prenose unutar 'Zabbix' servera:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/b3d84e3fcb12e7afe3c974bdeacc357a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSuper slika, zar ne? Idemo korak po korak da malo razjasnimo. Tu su niti i servisi odgovorni za prikupljanje podataka:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/966db6fa84723d4d3bde8a23736294d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSakupljene metrike \u0161alju kroz soket u Preprocessor manager, gdje se pohranjuju u red:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/1e34fe2c4194f7bd71ec409d6169fb94.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMenad\u017eer preprocesora' \u0161alje podatke svojim radnicima, koji izvr\u0161avaju upute predobrade i vra\u0107aju ih nazad kroz isti soket:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/d647caf3886f0c9378a32314e812edc1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNakon toga, menad\u017eer preprocesora ih \u010duva u ke\u0161u istorije:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/ff0e29b0d974d76bd3a3b71d36a1cc68.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOdande ih uzimaju sinhronizatori istorije, koji obavljaju niz funkcija: na primer, izra\u010dunavanje okida\u010da, popunjavanje ke\u0161a vrednosti i, \u0161to je najva\u017enije, \u010duvanje metrika u skladi\u0161tu istorije. Ukratko, proces je slo\u017een i veoma zbunjuju\u0107i.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/c418a17edeb9153a03dff233aa8f715e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Prvo \u0161to smo primetili jeste da se ve\u0107ina tokova takmi\u010di za takozvani \"konfiguracijski ke\u0161\" (odeljak memorije u kojem se \u010duvaju sve konfiguracije servera). Posebno su mnogo blokada pravili tokovi odgovorni za preuzimanje podataka:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/589d8f564ece6e63457450e9c5081b80.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026budu\u0107i da u konfiguraciji nisu samo metrike s njihovim parametrima, ve\u0107 i redovi iz kojih preuzimalici uzimaju informacije o tome \u0161ta dalje da rade. Kada je preuzimalica mnogo, a jedan blokira konfiguraciju, ostali \u010dekaju na zahteve:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/8026cdfcd7def84cb3708b7255b08c66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Preuzimalice ne bi trebale da se sukobljavaju<\/h3>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/d436cd3415a6f58e1db5a609689c12b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZato smo prvo \u0161to smo uradili \u2013 podelili red na 4 dela i dozvolili preuzimalicama da u sigurnim uslovima istovremeno blokiraju te redove, te delove:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/9466e5f0053dff583e76713f10e30a89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo je uklonilo konkurenciju za konfiguracijski ke\u0161, i brzina rada preuzimalica znacajno je porasla. No, zatim smo se susreli sa problemom da je menad\u017eer preprocesora po\u010deo da skuplja red zadataka:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/dd58e625823310fb0a818ed81abdceac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Menad\u017eer preprocesora treba da zna kako da postavi prioritete<\/h3>\n<p>\nTo se de\u0161avalo u situacijama kada mu je nedostajala performansa. Tada je sve \u0161to je mogao da radi \u2013 skupljati zahteve od procesa prikupljanja podataka i slagati ih u bafer do trenutka kada ne bi pojeo svu memoriju i pao:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/b215d880863d470ea6ca960c6338b8ae.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDa bismo re\u0161ili ovaj problem, dodali smo drugi soket, koji je bio posebno dodeljen radnicima:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/09d1bb92a009f9d29ba68d966de54210.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTako je menad\u017eer preprocesora dobio mogu\u0107nost da prioritetizuje svoj rad i u slu\u010daju rasta bafera zadao je da uspori preuzimanje, pru\u017eaju\u0107i radnicima priliku da preuzmu taj bafer:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/8f4db3661c428e6e6dcfe4cc0c44c016.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZatim smo otkrili da je jedan od uzroka usporavanja sam radnik, jer su se takmi\u010dili za resurs koji nije bio va\u017ean za njihov rad. Ovaj problem smo re\u0161ili sa bug-fixom, i u novim verzijama \"Zabbiksa\" je ve\u0107 re\u0161en:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/eedb359823dd23d369339e3735e341fb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Pove\u0107avamo broj soketa \u2013 dobijamo rezultat<\/h3>\n<p>\nNakon toga, sam menad\u017eer preprocesora postao je usko grlo, jer je to jedan tok. Oslonio se na brzinu jezgra, daju\u0107i maksimalnu brzinu od otprilike 70 hiljada metrika u sekundi:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/f93ccbc656c0f9e103873d99a9397495.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZato smo napravili \u010detiri, sa \u010detiri skupa uti\u010dnica, radnika:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/81a3dea3aa0f8807add8d045cf64a609.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI to je omogu\u0107ilo pove\u0107anje brzine na otprilike 130 tisu\u0107a metrika:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/016ff07cd021a7221caef19e6ce36a9b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNelinearnost rasta obja\u0161njena je time \u0161to je do\u0161la konkurencija za ke\u0161 povijesti. Za njega su se natjecala \u010detiri menad\u017eera predprocesora i sinkronizatori povijesti. U tom trenutku dobijali smo na probnoj ma\u0161ini otprilike 130 tisu\u0107a metrika u sekundi, koriste\u0107i je otprilike 95 % po procesoru:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/62162254cd8bc66c1cef697158691588.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Prije otprilike 2,5 mjeseca<\/i><\/p>\n<h3>Odustajanje od snmp-community pove\u0107alo je NVPs jedan i pol puta<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Max, trebam novu probnu ma\u0161inu! U ovu vi\u0161e ne mo\u017eemo stati.<\/p>\n<p><b>MC:<\/b> \u2013 A \u0161to imamo sada?<\/p>\n<p><b>MM:<\/b> \u2013 Sada imamo 130k NVPs i procesor 'u skladi\u0161tu'.<\/p>\n<p><b>MC:<\/b> \u2013 Wow! Super! \u010cekaj, imam dva pitanja. Prema mojim izra\u010dunima, na\u0161a potreba je oko 15-20 tisu\u0107a metrika u sekundi. Za\u0161to nam vi\u0161e?<\/p>\n<p><b>MM:<\/b> \u2013 \u017delim zavr\u0161iti posao do kraja. \u017delim vidjeti koliko mo\u017eemo izvu\u0107i iz ovog sistema.<\/p>\n<p><b>MC:<\/b> \u2013 Ali...<\/p>\n<p><b>MM:<\/b> \u2013 Ali za biznis je beskorisno.<\/p>\n<p><b>MC:<\/b> \u2013 Razumijem. I drugo pitanje: to \u0161to imamo sada, mo\u017eemo li odr\u017eavati sami, bez pomo\u0107i developera?<\/p>\n<p><b>MM:<\/b> \u2013 Ne mislim. Promjena u radu s konfiguracijskim ke\u0161om je problem. To se odnosi na promjene u ve\u0107ini tokova i dovoljno je slo\u017eeno za podr\u0161ku. Vjerojatno \u0107e biti vrlo te\u0161ko odr\u017eavati.<\/p>\n<p><b>MC:<\/b> \u2013 Onda nam treba neka alternativa.<\/p>\n<p><b>MM:<\/b> \u2013 Ima takva opcija. Mo\u017eemo pre\u0107i na brza jezgra, uz odustajanje od novog sistema zaklju\u010davanja. U svakom slu\u010daju, dobit \u0107emo performanse od 60-80 tisu\u0107a metrika. Osim toga, mo\u017eemo zadr\u017eati sav ostatak koda. 'ClickHouse', asinhrono polling \u0107e raditi. I to \u0107e biti lako odr\u017eavati.<\/p>\n<p><b>MC:<\/b> \u2013 Sjajno! Predla\u017eem da stanemo ovdje.<\/p>\n<p>Nakon optimizacije serverskog dijela kona\u010dno smo uspjeli pokrenuti novi kod u produkciji. Odustali smo od dijela promjena u korist prelaska na ma\u0161inu s brzim jezgrama i minimiziranju broja promjena u kodu. Tako\u0111er smo pojednostavili konfiguraciju i, gdje god je mogu\u0107e, odustali od makroa u podacima, jer oni predstavljaju izvor dodatnih zaklju\u010davanja.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/2b1ed396b09bd815fba973ebb5f73d76.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa primjer, odustajanje od \u010desto vi\u0111enog makroa snmp-community u na\u0161oj dokumentaciji i primjerima omogu\u0107ilo je dodatno ubrzanje NVPs za otprilike 1,5 puta.<\/p>\n<p><i>Nakon dva dana u produkciji<\/i><\/p>\n<h3>Uklanjamo iska\u010du\u0107e prozore povijesti incidenata<\/h3>\n<p>\n<b>MC:<\/b> \u2013 Mi\u0161a, koristimo sustav ve\u0107 dva dana i sve radi. Ali samo kada sve funkcionira! Imali smo planirane radove s premje\u0161tanjem prili\u010dno velikog segmenta mre\u017ee i ponovno smo provjeravali rukama \u0161to je podignuto, a \u0161to nije.<\/p>\n<p><b>MM:<\/b> \u2013 Ne mo\u017ee biti! Sve smo provjerili 10 puta. Poslu\u017eitelj obra\u0111uje \u010dak i potpunu nedostupnost mre\u017ee trenutno.<\/p>\n<p><b>MC:<\/b> \u2013 Razumijem sve: poslu\u017eitelj, baza, top, austat, logovi \u2013 sve brzo\u2026 Ali gledamo web su\u010delje, a tamo \u2013 procesor \u201eu praznom hodu\u201d na poslu\u017eitelju i ovo:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/828a44d71f67ac585055bffcc01ab46e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Jasno. Pogledajmo web. Otkrili smo da u situacijama s velikim brojem aktivnih incidenata ve\u0107ina operativnih widgeta po\u010dinju raditi vrlo sporo:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/22fdb735aa6136cd9967b40341d2a5cf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUzrok tome je bila generacija iska\u010du\u0107ih prozora s povije\u0161\u0107u 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\u0161ilo na\u0161e probleme.<\/p>\n<p>Vrijeme u\u010ditavanja widgeta, \u010dak i pri potpunoj nedostupnosti, smanjeno je s nekoliko minuta na prihvatljivih na\u0161ih 10-15 sekundi, a povijest se i dalje mo\u017ee pogledati jednim klikom na vrijeme:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/d15341ce76578880a23651a7a68dd802.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Nakon posla. Prije 2 mjeseca<\/i><\/p>\n<p><b>MC:<\/b> \u2013 Mi\u0161a, odlazi\u0161? Trebam razgovarati.<\/p>\n<p><b>MM:<\/b> \u2013 Nisam planirao. Opet ne\u0161to s \u201eZabbixom\u201d?<\/p>\n<p><b>MC:<\/b> \u2013 Ma ne, opusti se! Samo sam htio re\u0107i: sve radi, hvala! Ja \u0107u platiti pivo.<\/p>\n<h3>Zabbix je u\u010dinkovit<\/h3>\n<p>\n\u201eZabbix\u201d je prili\u010dno univerzalan i bogat sustav i funkcija. Mo\u017ee se koristiti za male instalacije \u201eiz kutije\u201d, ali s rastom potreba mora se optimizirati. Za pohranu velikog arhiva metrika koristite odgovaraju\u0107e skladi\u0161te:<\/p>\n<ul>\n<li>mo\u017eete iskoristiti ugra\u0111ena sredstva u obliku integracije s \u201eElastisearchom\u201d ili izvoza povijesti u tekstualne datoteke (dostupno od \u010detvrte verzije);<\/li>\n<li>mo\u017eete iskoristiti na\u0161e iskustvo i integraciju s \u201eClickhouseom\u201d.<\/li>\n<\/ul>\n<p>\nZa radikalno pove\u0107anje brzine prikupljanja metrika, prikupljajte ih asinkronim metodama i prenosite putem trapper su\u010delja na \u201eZabbix\u201d poslu\u017eitelj; ili mo\u017eete iskoristiti zakrpu za asinkronost pollera samog \u201eZabbixa\u201d.<\/p>\n<p>\"Zabbix\" je napisan u C-u i vrlo je u\u010dinkovit. Rje\u0161enja za nekoliko uskih arhitektonskih mjesta dodatno pove\u0107avaju njegovu u\u010dinkovitost, a prema na\u0161em iskustvu, omogu\u0107uju dobivanje vi\u0161e od 100.000 metrika na jednoj procesorskoj ma\u0161ini.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/46559b481b5e53dc3cc3d2562a94531d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Taj poznati patch Zabbix<\/h3>\n<p>\n<b>MM:<\/b> \u2013 \u017delim dodati nekoliko to\u010daka. Sav trenutni izlaganje, svi testovi, podaci navedeni su za konfiguraciju koju koristimo. S nje trenutno uzimamo otprilike 20.000 metrika u sekundi. Ako poku\u0161avate razumjeti ho\u0107e li to raditi kod vas \u2013 mo\u017eete usporediti. Ono o \u010demu smo danas govorili je dostupno na GitHubu u obliku patcha: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/miklert\/zabbix\">github.com\/miklert\/zabbix<\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/e5880b2f01cb03809057db08306b23c7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPatch uklju\u010duje:<\/p>\n<ul>\n<li>potpunu integraciju s \"ClickHouse\" (tako za Zabbix server, kao i za frontend);<\/li>\n<li>rje\u0161avanje problema s preprocesor menad\u017eerom;<\/li>\n<li>asinhroni polling.<\/li>\n<\/ul>\n<p>\nPatch je kompatibilan sa svim verzijama 4, uklju\u010duju\u0107i lts. Vjerojatno \u0107e uz minimalne izmjene raditi i na verziji 3.4.<\/p>\n<p>Hvala na pa\u017enji.<\/p>\n<h3>Pitanja<\/h3>\n<p>\nPitanje iz publike (dalje \u2013 P): \u2013 Dobar dan! Mo\u017eete li molim vas re\u0107i imate li planove za intenzivnu suradnju s timom Zabbix ili oni s vama, kako bi to bio normalan rad Zabbixa, a ne samo patch?<\/p>\n<p><b>MM:<\/b> \u2013 Da, dio promjena \u0107emo definitivno commitirati. Ne\u0161to \u0107e ostati u patchu.<\/p>\n<p><b>A:<\/b> \u2013 Hvala vam puno na odli\u010dnom izlaganju! Mo\u017eete li molim vas re\u0107i, nakon primjene patcha, ho\u0107e li podr\u0161ka od strane Zabbixa ostati i kako se dalje nadograditi na vi\u0161e verzije? Ho\u0107e li biti mogu\u0107nosti nadograditi Zabbix nakon va\u0161eg patcha na 4.2, 5.0?<\/p>\n<p><b>MM:<\/b> \u2013 O podr\u0161ci ne mogu ni\u0161ta re\u0107i. Da sam bio tehni\u010dka podr\u0161ka Zabbixa, vjerojatno bih rekao ne, jer je to tu\u0111i kod. \u0160to se ti\u010de kodne baze 4.2, na\u0161 stav je ovakav: \"Idemo s vremenom i sami \u0107emo se nadograditi na sljede\u0107u verziju\". Tako da \u0107emo neko vrijeme objavljivati patch za a\u017eurirane verzije. Ve\u0107 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\u0161to promijenilo, ali ne toliko bitno.<\/p>\n<p><b>A:<\/b> \u2013 Dakle, planirate podr\u017eavati svoj patch i mo\u017ee se sigurno instalirati u produkciji, primaju\u0107i daljnje nadogradnje na neki na\u010din?<\/p>\n<p><b>MM:<\/b> \u2013 Mi to kategori\u010dki preporu\u010dujemo. To nam rje\u0161ava jako mnogo problema.<\/p>\n<p><b>MC:<\/b> \u017delim jo\u0161 jednom naglasiti da su promjene koje se ne ti\u010du arhitekture i ne odnose se na blokade, redove \u2013 modularne su i nalaze se u odvojenim modulima. \u010cak i sami, pri neznatnim promjenama, mogu se relativno lako odr\u017eavati.<\/p>\n<p><b>MM:<\/b> Ako vas zanimaju detalji, \u201eClickHouse\u201c koristi takozvanu biblioteku povijesti. Ona je nezavisna \u2013 to je kopija podr\u0161ke za \u201eElastics\u201c, tj. mo\u017ee se konfigurirati. Polling mijenja samo pollere. Smatramo da \u0107e ovo dugo raditi.<\/p>\n<p><b>A:<\/b> Hvala puno. Mo\u017eete li re\u0107i postoji li neka dokumentacija o unesenim promjenama?<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maksim \u010cernecov (Interzvaz): Zabbix, 100kNVPS na jednom serveru\" src=\"\/wp-content\/uploads\/2020\/02\/f3842ba578f736721c96794941b8f071.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> Dokumentacija je patch. O\u010digledno, s uvo\u0111enjem \u201eClickHousea\u201c, s novim vrstama pollera javljaju se nove konfiguracijske opcije. Na linku iz posljednjeg slajda postoji kratki opis kako koristiti ovo.<\/p>\n<h3>O zamjeni fping-a s nmap-om<\/h3>\n<p>\n<b>A:<\/b> Kako ste to kona\u010dno realizirali? Mo\u017eete li dati konkretne primjere: imate li strapere i vanjski skript? \u0160to na kraju provjerava tako brzo ogromnu koli\u010dinu hostova? Kako dolazite do tih hostova? Treba ih nekako dati nmap-u, dobiti negdje, pohraniti, ne\u0161to pokrenuti?<\/p>\n<p><b>MM:<\/b> Super. Vrlo pravo pitanje! Su\u0161tina je u tome. Modificirali smo biblioteku (ICMP ping, sastavni dio \u201eZabbixa\u201c) za ICMP provjere, gdje je broj paketa postavljen na jedan (1), a kod poku\u0161ava koristiti nmap. To jest, to je unutarnji rad \u201eZabbixa\u201c i postalo je unutarnji rad pingera. Prema tome, nikakva sinhronizacija ili kori\u0161tenje trappera nije potrebna. Ovo je u\u010dinjeno svjesno kako bi sustav ostao cjelovit i da se ne bavi sinhronizacijom dvaju sustava baza: \u0161to provjeravati, puniti putem pollera, a da li nam punjenje nije puklo? Ovo je znatno jednostavnije.<\/p>\n<p><b>A:<\/b> Da li to tako\u0111er radi za proxy?<\/p>\n<p><b>MM:<\/b> Da, ali nismo provjeravali. Kod polling-a i u \u201eZabbixu\u201c i na serveru je jedinstven. Trebalo bi raditi. Jo\u0161 jednom nagla\u0161avam: performanse sustava su takve da nam proxy nije potreban.<\/p>\n<p><b>MC:<\/b> Pravi odgovor na pitanje je: \u201eZa\u0161to vam treba proxy u ovakvom sustavu?\u201c Samo zbog NAT-a ili da biste nadgledali preko sporog kanala?<\/p>\n<p><b>A:<\/b> Koristite li \u201eZabbix\u201c kao alertor, ako sam dobro shvatio? Ili su grafovi (gdje je arhivski sloj) oti\u0161li u neki drugi sustav, poput Grafane? Ili ne koristite ovu funkcionalnost?<\/p>\n<p><b>MM:<\/b> \u2013 Ponovo nagla\u0161avam: napravili smo potpunu integraciju. Ispunjavamo historiju u \u201eClickHouse\u201c, ali smo pritom promijenili php frontend. Php frontend se povezuje s \u201eClickHouse\u201c i sve grafike izra\u0111uje odatle. Uz to, moram biti iskren, imamo dio koji gradi podatke iz istog \u201eClickHouse\u201c, iz istih podataka \u201eZabbixa\u201c u drugim sustavima grafi\u010dkog prikazivanja.<\/p>\n<p><b>MC:<\/b> \u2013 U \u201eGrafani\u201c uklju\u010duju\u0107i.<\/p>\n<h3>Kako je donesena odluka o izdavanju resursa?<\/h3>\n<p>\n<b>A:<\/b> \u2013 Podijelite malo unutarnju kuhinju. Kako je donesena odluka da se treba izdvojiti resurse za ozbiljno preure\u0111enje proizvoda? To, u osnovi, nosi odre\u0111ene rizike. I molim vas, recite u kontekstu toga \u0161to namjeravate podr\u017eavati nove verzije: kako se ta odluka opravdava s to\u010dke gledi\u0161ta upravljanja?<\/p>\n<p><b>MM:<\/b> \u2013 \u010cini se da nismo ba\u0161 dobro ispri\u010dali dramu povijesti. Na\u0161li smo se u situaciji kada je bilo potrebno ne\u0161to u\u010diniti, i krenuli smo su\u0161tinski s dvije paralelne ekipe:<\/p>\n<ul>\n<li>Jedna se bavila pokretanjem sustava pra\u0107enja novim metodama: pra\u0107enje kao usluga, standardni set open-source rje\u0161enja koja kombiniramo i zatim poku\u0161avamo mijenjati poslovne procese kako bismo radili s novim sustavom pra\u0107enja.<\/li>\n<li>Paralelno, imali smo entuzijasta-programera koji se time bavio (o sebi). Ispalo je da je on pobijedio.<\/li>\n<\/ul>\n<p>\n<b>A:<\/b> \u2013 Kolika je veli\u010dina tima?<\/p>\n<p><b>MC:<\/b> \u2013 On je pred vama.<\/p>\n<p><b>A:<\/b> \u2013 Dakle, kao i uvijek treba strastveni \u010dovjek?<\/p>\n<p><b>MM:<\/b> \u2013 Ne znam \u0161to je strastveni \u010dovjek.<\/p>\n<p><b>A:<\/b> \u2013 U ovom slu\u010daju, o\u010dito ste vi. Hvala puno, vi ste sjajni.<\/p>\n<p><b>MM:<\/b> \u2013 Hvala.<\/p>\n<h3>O zakrpama za Zabbix<\/h3>\n<p>\n<b>A:<\/b> \u2013 Za sustav koji koristi proksi (na primjer, u nekim distribuiranim sustavima), je li mogu\u0107e prilagoditi i zakrpati va\u0161e rje\u0161enje, recimo, puller-e, proksi i djelomi\u010dno preprocesor samog \u201eZabbixa\u201c; i njihovu interakciju? Je li mogu\u0107e optimizirati postoje\u0107e radove za sustav s vi\u0161e proksi?<\/p>\n<p><b>MM:<\/b> \u2013 Znam da se \u201eZabbix\u201c server gradi s pomo\u0107u proksi (kompajlira se i dobija kod). Nismo to provjeravali u produkciji. Nisam siguran u to, ali mislim da se preprocesor-menad\u017eer ne koristi u proksi. Zadatak proksi je uzeti set metrika iz \u201eZabbixa\u201c, ispuniti ih (tako\u0111er zapisuje konfiguraciju, lokalnu bazu) i vratiti \u201eZabbix\u201c serveru. Preprocesiranje \u0107e kasnije raditi sam server, kada ga primi.<\/p>\n<p>Interes za proxy je razumljiv. Provjerit \u0107emo to. To je zanimljiva tema.<\/p>\n<p><b>A:<\/b> \u2013 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\u0111ava samo na serveru.<\/p>\n<p><b>MM:<\/b> \u2013 Mislim da je to jo\u0161 jednostavnije. Uzimate kod, nanosete patch, zatim ga konfigurirate prema vlastitim potrebama \u2013 konfigurirate proxy servere (na primjer, s ODBC) i distribuirate patchirani kod po sustavima. Gdje je potrebno \u2013 postavljate proxy, gdje je potrebno \u2013 server.<\/p>\n<p><b>A:<\/b> \u2013 Dodatno, patchiranje prijenosa proxy na server vjerojatno ne\u0107e biti potrebno?<\/p>\n<p><b>MC:<\/b> \u2013 Ne, to je standardno.<\/p>\n<p><b>MM:<\/b> \u2013 U stvari, jedna od ideja nije zvu\u010dala. Uvijek smo nastojali odr\u017eati ravnote\u017eu izme\u0111u inflacije ideja i broja promjena, te lako\u0107e odr\u017eavanja.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"3yRt9jSwrlg\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/3yRt9jSwrlg\/hqdefault.jpg\" alt=\"Pogledajte video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Malo reklame \ud83d\ude42<\/h3>\n<p>\nHvala \u0161to ostajete s nama. Svi\u0111a li vam se na\u0161e \u010dlanke? \u017delite li vidjeti vi\u0161e zanimljivih materijala? Podr\u017eite nas narud\u017ebom ili preporu\u010dite prijateljima, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">obla\u010dni VPS za developere od 4,99 $<\/a><\/noindex>, <b>jedinstveni analog entry-level servera koji smo razvili za vas:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Sva istina o VPS-u (KVM) E5-2697 v3 (6 jezgri) 10GB DDR4 480GB SSD 1Gbps od 19 $ ili kako pravilno dijeliti server?<\/a><\/noindex> (dostupne opcije s RAID1 i RAID10, do 24 jezgre i do 40GB DDR4).<\/p>\n<p><b>Dell R730xd je 2 puta jeftiniji u data centaru Equinix Tier IV u Amsterdamu?<\/b> Samo kod nas <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB od 199 $<\/a><\/noindex> u Nizozemskoj! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 od 99 $!<\/b><\/b> Pro\u010ditajte o tome <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Kako izgraditi infrastrukturu korporacijske klase koriste\u0107i Dell R730xd E5-2650 v4 servere po cijeni od 9000 eura za sitni\u0161?<\/a><\/noindex><br \/>\n<br \/>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/486540\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435 \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435. HighLoad++ Moscow 2018. \u0417\u0430\u043b \u00ab\u041c\u043e\u0441\u043a\u0432\u0430\u00bb. 9 \u043d\u043e\u044f\u0431\u0440\u044f, 15:00. \u0422\u0435\u0437\u0438\u0441\u044b \u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f. * \u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u2014 \u043e\u043d\u043b\u0430\u0439\u043d \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430. * \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b ZABBIX. * \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438. * \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u0430 ZABBIX. * \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f UI. * \u041e\u043f\u044b\u0442 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-56049","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435 \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47HighLoad++, \u041c\u0438\u0445\u0430\u0438\u043b \u041c\u0430\u043a\u0443\u0440\u043e\u0432, \u041c\u0430\u043a\u0441\u0438\u043c \u0427\u0435\u0440\u043d\u0435\u0446\u043e\u0432 (\u0418\u043d\u0442\u0435\u0440\u0441\u0432\u044f\u0437\u044c): Zabbix, 100kNVPS \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435 \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-03T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:04:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47HighLoad++, Mihail Makurov, Maksim \u010cernecov (Intersvyaz): Zabbix, 100kNVPS na jednom serveru | ProHoster","description":"Sljede\u0107a konferencija HighLoad++ odr\u017eat \u0107e se 6. i 7. travnja 2020. godine u Sankt-Peterburgu. Detalji i karte dostupni su putem linka.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47HighLoad++, \u041c\u0438\u0445\u0430\u0438\u043b \u041c\u0430\u043a\u0443\u0440\u043e\u0432, \u041c\u0430\u043a\u0441\u0438\u043c \u0427\u0435\u0440\u043d\u0435\u0446\u043e\u0432 (\u0418\u043d\u0442\u0435\u0440\u0441\u0432\u044f\u0437\u044c): Zabbix, 100kNVPS \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 | ProHoster","og:description":"\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435 \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435.","og:url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-03T21:00:00+00:00","article:modified_time":"2020-02-18T11:04:13+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"56049","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:31:44","updated":"2022-09-30 17:33:39","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/56049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=56049"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/56049\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=56049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=56049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=56049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}