{"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\/sv\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere","title":{"rendered":"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>N\u00e4sta konferens HighLoad++ \u00e4ger rum den 6 och 7 april 2020 i Sankt Petersburg. Mer information och biljetter. <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/2sSxgBx\">via l\u00e4nken<\/a><\/noindex>. HighLoad++ Moskva 2018. Sal \"Moskva\". 9 november, 15:00. Sammanfattningar och <noindex><a rel=\"nofollow\" href=\"http:\/\/www.highload.ru\/moscow\/2018\/abstracts\/4141\">presentation<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/5c3e11c8449de7375d30b2cd75b5927e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n* \u00d6vervakning \u2013 online och analys.<br \/>\n* Grundl\u00e4ggande begr\u00e4nsningar av plattformen ZABBIX.<br \/>\n* L\u00f6sning f\u00f6r skalning av analyslagring.<br \/>\n* Optimering av ZABBIX-servern.<br \/>\n* Optimering av UI.<br \/>\n* Erfarenhet av systemdrift med belastningar \u00f6ver 40k NVPS.<br \/>\n* Kort sammanfattning.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>Mikhail Makurov (h\u00e4danefter \u2013 MM):<\/b> \u2013 Hej allihopa!<\/p>\n<p><b>Maxim Chernytsov (h\u00e4danefter \u2013 MC):<\/b> \u2013 God eftermiddag!<\/p>\n<p><b>MM:<\/b> \u2013 L\u00e5t mig f\u00e5 presentera Maxim. Max \u2013 en talangfull ingenj\u00f6r, den b\u00e4sta n\u00e4tverksspecialisten jag k\u00e4nner. Maxim arbetar med n\u00e4tverk och tj\u00e4nster, deras utveckling och drift.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/a7fc62a03c0aede46f4a4695845daa22.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> \u2013 Och jag skulle vilja ber\u00e4tta om Mikhail. Mikhail \u2013 en programmerare i C. Han har skrivit flera h\u00f6gpresterande l\u00f6sningar f\u00f6r trafikbehandling f\u00f6r v\u00e5rt f\u00f6retag. Vi bor och arbetar i Ural, i staden med str\u00e4nga m\u00e4n Tjeljabinsk, p\u00e5 f\u00f6retaget \"Intersvyaz\". V\u00e5rt f\u00f6retag \u00e4r en internet- och kabel-TV-leverant\u00f6r till en miljon m\u00e4nniskor i 16 st\u00e4der.<\/p>\n<p><b>MM:<\/b> \u2013 Och det \u00e4r v\u00e4rt att n\u00e4mna att \"Intersvyaz\" \u00e4r mycket mer \u00e4n bara en leverant\u00f6r, det \u00e4r ett IT-f\u00f6retag. De flesta av v\u00e5ra l\u00f6sningar har skapats av v\u00e5r IT-avdelning.<\/p>\n<p><b>A:<\/b> Fr\u00e5n servrar som hanterar trafik till callcenter och mobilapplikationer. IT-avdelningen har f\u00f6r n\u00e4rvarande cirka 80 personer med mycket varierande kompetens.<\/p>\n<h3>Om Zabbix och dess arkitektur<\/h3>\n<p>\n<b>MC:<\/b> \u2013 Och nu ska jag f\u00f6rs\u00f6ka s\u00e4tta ett personligt rekord och p\u00e5 en minut f\u00f6rklara vad Zabbix (h\u00e4danefter \u2013 \"Zabbix\") \u00e4r.<\/p>\n<p>\"Zabbix\" positionerar sig som ett \u00f6vervakningssystem \"out of the box\" p\u00e5 f\u00f6retagsniv\u00e5. Det har m\u00e5nga funktioner som f\u00f6renklar livet: avancerade eskaleringsregler, API f\u00f6r integration, gruppering och automatisk uppt\u00e4ckte av v\u00e4rdar och m\u00e4tv\u00e4rden. I \"Zabbix\" finns s\u00e5 kallade skalningsverktyg \u2013 proxyer. \"Zabbix\" \u00e4r ett system med \u00f6ppen k\u00e4llkod.<\/p>\n<p>Kort om arkitekturen. Man kan s\u00e4ga att den best\u00e5r av tre komponenter:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/0d2ae3ee04d00885d65e17b8cf44182b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ul>\n<li>Server. Skriven i C. Med relativt komplex bearbetning och \u00f6verf\u00f6ring av information mellan tr\u00e5dar. All bearbetning sker d\u00e4r: fr\u00e5n mottagning till lagring i databasen.<\/li>\n<li>All data lagras i en databas. \"Zabbix\" st\u00f6djer MySQL, PostgreSQL och Oracle.<\/li>\n<li>Webbgr\u00e4nssnittet \u00e4r skrivet i PHP. I de flesta system levereras det med Apache-servern, men det fungerar effektivare i kombination med nginx + php.<\/li>\n<\/ul>\n<p>\nI dag skulle vi vilja ber\u00e4tta en historia fr\u00e5n v\u00e5rt f\u00f6retags liv, kopplad till \"Zabbix\"\u2026<\/p>\n<h3>En historia fr\u00e5n f\u00f6retaget \"Intersvyaz\". Vad vi har och vad vi beh\u00f6ver?<\/h3>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/407c35b81995ddca6444fa418941063f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>F\u00f6r 5 eller 6 m\u00e5nader sedan. En dag efter arbetet\u2026<\/i><\/p>\n<p><b>MC:<\/b> \u2013 Misha, hej! Kul att jag lyckades f\u00e5 tag p\u00e5 dig \u2013 vi m\u00e5ste prata. Vi har haft problem med \u00f6vervakningen igen. Under en stor olycka stannade allt, och det fanns ingen information om n\u00e4tverksstatusen. Tyv\u00e4rr upprepas det h\u00e4r inte f\u00f6r f\u00f6rsta g\u00e5ngen. Jag beh\u00f6ver din hj\u00e4lp. L\u00e5t oss se till att v\u00e5r \u00f6vervakning fungerar under alla omst\u00e4ndigheter!<\/p>\n<p><b>MM:<\/b> \u2013 Men f\u00f6rst l\u00e5t oss synkronisera oss. Jag har inte tittat d\u00e4r p\u00e5 ett par \u00e5r. S\u00e5vitt jag minns avsade vi oss Nagios och gick \u00f6ver till \"Zabbix\" f\u00f6r ungef\u00e4r 8 \u00e5r sedan. Och nu har vi, verkar det som, 6 kraftfulla servrar och cirka ett dussin proxys. Jag blandar inte ihop n\u00e5got?<\/p>\n<p><b>MC:<\/b> \u2013 N\u00e4stan. 15 servrar, varav en del \u00e4r virtuella maskiner. Det viktigaste \u00e4r att det inte r\u00e4ddar oss i de \u00f6gonblick n\u00e4r vi beh\u00f6ver det som mest. Vid olyckor \u2013 servrarna h\u00e4nger sig och inget syns. Vi har f\u00f6rs\u00f6kt optimera konfigurationen, men det ger ingen optimal prestandaf\u00f6rb\u00e4ttring.<\/p>\n<p><b>MM:<\/b> \u2013 Jag f\u00f6rst\u00e5r. Har ni sett p\u00e5 n\u00e5got, har ni redan gr\u00e4vt i diagnostiken?<\/p>\n<p><b>MC:<\/b> \u2013 Det f\u00f6rsta vi har att g\u00f6ra med \u00e4r just databasen. MySQL \u00e4r st\u00e4ndigt belastad och lagrar nya m\u00e4tv\u00e4rden, och n\u00e4r \"Zabbix\" b\u00f6rjar generera en massa h\u00e4ndelser \u2013 g\u00e5r databasen in i sig sj\u00e4lv i bokstavligen flera timmar. Jag har redan ber\u00e4ttat om optimering av konfigurationen, men just i \u00e5r har vi uppdaterat h\u00e5rdvaran: servrarna har \u00f6ver hundra gigabyte minne och diskar p\u00e5 SSD RAID \u2013 det finns ingen po\u00e4ng i att \u00f6ka storleken l\u00e4ngre. Vad ska vi g\u00f6ra?<\/p>\n<p><b>MM:<\/b> \u2013 Jag f\u00f6rst\u00e5r. Generellt \u00e4r MySQL en LTP-databas. Det verkar som att den inte l\u00e4ngre passar f\u00f6r lagring av arkivet av m\u00e4tv\u00e4rden av v\u00e5r storlek. L\u00e5t oss analysera det.<\/p>\n<p><b>MC:<\/b> \u2013 L\u00e5t oss g\u00f6ra det!<\/p>\n<h3>Integrationen av Zabbix och Clickhouse som en resultat av hackathonet<\/h3>\n<p>\nEfter en tid fick vi intressanta data:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/46899e843b1e89524c6d762c1c167a6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen st\u00f6rsta delen av utrymmet i v\u00e5r databas var upptagen av en arkiv av m\u00e4tningar och mindre \u00e4n 1 % anv\u00e4ndes f\u00f6r konfiguration, mallar och inst\u00e4llningar. Vid den tidpunkten hade vi redan anv\u00e4nt en Big Data-l\u00f6sning baserad p\u00e5 Clickhouse i \u00f6ver ett \u00e5r. Riktningen f\u00f6r oss var uppenbar. P\u00e5 v\u00e5r v\u00e5r Hackathon skrev jag en integration av Zabbix med Clickhouse f\u00f6r servern och fronten. Vid den tidpunkten hade Zabbix redan st\u00f6d f\u00f6r ElasticSearch, och vi best\u00e4mde oss f\u00f6r att j\u00e4mf\u00f6ra dem.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/92fa3da527de48102cbdcf6959d46814.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>J\u00e4mf\u00f6relse mellan Clickhouse och Elasticsearch<\/h3>\n<p>\n<b>MM:<\/b> \u2013 F\u00f6r j\u00e4mf\u00f6relsen genererade vi en belastning som motsvarade den som Zabbix-servern levererar och s\u00e5g hur systemen skulle prestera. Vi skrev data i batchar om 1000 rader och anv\u00e4nde CURL. Vi antog p\u00e5 f\u00f6rhand att Clickhouse skulle vara mer effektivt f\u00f6r den belastningsprofil som Zabbix producerar. Resultaten \u00f6vertr\u00e4ffade till och med v\u00e5ra f\u00f6rv\u00e4ntningar:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/354be7147b23a0bcb9ada3af93f59fac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnder samma f\u00f6ruts\u00e4ttningar vid testerna skrev Clickhouse tre g\u00e5nger s\u00e5 mycket data. B\u00e5da systemen konsumerade mycket effektivt (lite resurser) vid l\u00e4sning av data. Men ElasticSearch kr\u00e4vde en stor m\u00e4ngd processorkraft vid skrivning:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/fea7f7f7801024cee0f9367c49d81d5b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSammanfattningsvis \u00f6vertr\u00e4ffade Clickhouse ElasticSearch betydligt b\u00e5de vad g\u00e4ller processoranv\u00e4ndning och hastighet. Genom datakomprimering anv\u00e4nder Clickhouse dessutom 11 g\u00e5nger mindre utrymme p\u00e5 h\u00e5rddisken och g\u00f6r ungef\u00e4r 30 g\u00e5nger f\u00e4rre diskoperationer:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/50c24c4615ed350d7d78ec8655423409.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> \u2013 Ja, arbetet med diskunderlaget i Clickhouse \u00e4r v\u00e4ldigt effektivt implementerat. F\u00f6r databaser kan man anv\u00e4nda stora SATA-diskar och uppn\u00e5 skrivhastigheter p\u00e5 hundratusentals rader per sekund. Systemet st\u00f6djer sharding och replikering direkt ur l\u00e5dan och \u00e4r ganska enkelt att st\u00e4lla in. Vi \u00e4r mer \u00e4n n\u00f6jda med dess drift under ett \u00e5r.<\/p>\n<p>F\u00f6r att optimera resurser kan Clickhouse installeras bredvid den befintliga huvuddatabasen och d\u00e4rmed spara en hel del processor- och diskoperationstid. Vi har flyttat arkivet av m\u00e4tningar till redan existerande Clickhouse-kluster:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/4cf44eae47a13f2fc50377fec884ecc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi har avlastat den huvudsakliga MySQL-databasen s\u00e5 mycket att vi kunde kombinera den p\u00e5 en och samma maskin med Zabbix-servern och avst\u00e5 fr\u00e5n en dedikerad server f\u00f6r MySQL.<\/p>\n<h3>Hur fungerar polling i Zabbix?<\/h3>\n<p>\n<i>4 m\u00e5nader sedan<\/i><\/p>\n<p><b>MM:<\/b> \u2013 Tja, kan vi gl\u00f6mma problemen med databasen?<\/p>\n<p><b>MC:<\/b> \u2013 Det st\u00e4mmer! En annan uppgift vi beh\u00f6ver l\u00f6sa \u00e4r den l\u00e5ngsamma datainsamlingen. Nu \u00e4r alla v\u00e5ra 15 proxyservrar \u00f6verbelastade med SNMP-processer och polling. Och det finns inget annat alternativ \u00e4n att s\u00e4tta upp fler och fler servrar.<\/p>\n<p><b>MM:<\/b> \u2013 Utm\u00e4rkt. Men ber\u00e4tta f\u00f6rst hur polling fungerar i \"Zabbix\"?<\/p>\n<p><b>MC:<\/b> \u2013 Kort sagt finns det 20 typer av m\u00e4tv\u00e4rden och ett dussin s\u00e4tt att f\u00e5 dem. \"Zabbix\" kan samla in data antingen i l\u00e4get \"request \u2013 response\" eller v\u00e4nta p\u00e5 nya data via \"Trappergr\u00e4nssnittet\".<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/cb2d974ee113b4147a4a588c1f35c730.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet \u00e4r v\u00e4rt att notera att i det ursprungliga \"Zabbix\" \u00e4r den h\u00e4r metoden (Trapper) den snabbaste. <\/p>\n<p>Det finns proxyservrar f\u00f6r lastbalansering:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/7b5c94a82b7e06aff6df6ea5549babdf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProxyer kan utf\u00f6ra samma insamlingsfunktioner som \"Zabbix-servern\", genom att f\u00e5 uppgifter fr\u00e5n den och skicka de insamlade m\u00e4tv\u00e4rdena direkt via Trapper-gr\u00e4nssnittet. Detta \u00e4r det officiellt rekommenderade s\u00e4ttet att balansera lasten. Proxyer \u00e4r ocks\u00e5 anv\u00e4ndbara f\u00f6r att \u00f6vervaka fj\u00e4rrinfrastruktur som arbetar genom NAT eller en l\u00e5ngsam kanal:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/dbfb2777f9dd9b4adb81f1fa89f3bdd5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Arkitekturen \u00e4r tydlig. Vi m\u00e5ste titta p\u00e5 k\u00e4llkoden...<\/p>\n<p><i>N\u00e5gra dagar senare<\/i><\/p>\n<h3>Sagan om hur nmap fping segrade<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Det verkar som om jag har hittat n\u00e5got.<\/p>\n<p><b>MC:<\/b> \u2013 Ber\u00e4tta!<\/p>\n<p><b>MM:<\/b> \u2013 Jag uppt\u00e4ckte att n\u00e4r \"Zabbix\" g\u00f6r tillg\u00e4nglighetstester kontrollerar den h\u00f6gst 128 v\u00e4rdar samtidigt. Jag f\u00f6rs\u00f6kte \u00f6ka det h\u00e4r talet till 500 och tog bort mellanpaketsintervallet i deras ping \u2013 vilket dubblerade prestandan. Men jag skulle vilja ha st\u00f6rre siffror.<\/p>\n<p><b>MC:<\/b> \u2013 I min praktik m\u00e5ste jag ibland kontrollera tillg\u00e4ngligheten av tusentals v\u00e4rdar, och jag har inte sett n\u00e5got som \u00e4r snabbare \u00e4n nmap f\u00f6r det. Jag \u00e4r s\u00e4ker p\u00e5 att det \u00e4r det snabbaste s\u00e4ttet. L\u00e5t oss prova det! Vi m\u00e5ste signifikant \u00f6ka antalet v\u00e4rdar per iteration.<\/p>\n<p><b>MM:<\/b> \u2013 Kontrollera fler \u00e4n fem hundra? 600?<\/p>\n<p><b>MC:<\/b> \u2013 Minst ett par tusen.<\/p>\n<p><b>MM:<\/b> \u2013 Okej. Det viktigaste jag ville s\u00e4ga: jag har funnit att det mesta av pollingen i \"Zabbix\" g\u00f6rs synkront. Vi m\u00e5ste definitivt g\u00f6ra om det i asynkront l\u00e4ge. D\u00e5 kan vi radikalt \u00f6ka antalet m\u00e4tv\u00e4rden som samlas in av pollers, speciellt om vi \u00f6kar antalet m\u00e4tv\u00e4rden per iteration.<\/p>\n<p><b>MC:<\/b> \u2013 Fantastiskt! Och n\u00e4r?<\/p>\n<p><b>MM:<\/b> \u2013 Som vanligt, ig\u00e5r.<\/p>\n<p><b>MC:<\/b> \u2013 Vi j\u00e4mf\u00f6rde b\u00e5da versionerna av fping och nmap:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/4be4cfe019b6b318ae2fbdbf82577111.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e5 ett stort antal v\u00e4rdar visade sig nmap vara upp till fem g\u00e5nger effektivare \u00e4n v\u00e4ntat. Eftersom nmap bara kontrollerar tillg\u00e4nglighet och svarstid flyttade vi f\u00f6rlustber\u00e4kningarna till triggers och minskade avsev\u00e4rt intervallen f\u00f6r tillg\u00e4nglighetskontroll. Det optimala antalet v\u00e4rdar f\u00f6r nmap fann vi vara runt 4000 per iteration. Nmap gjorde det m\u00f6jligt f\u00f6r oss att minska CPU-kostnaderna f\u00f6r tillg\u00e4nglighetskontroller med tre g\u00e5nger och f\u00f6rkorta intervallet fr\u00e5n 120 sekunder till 10.<\/p>\n<h3>Optimering av polling<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Sedan tog vi oss an pollarna. Framf\u00f6rallt var vi intresserade av att h\u00e4mta SNMP och agenter. I \"Zabbix\" g\u00f6rs polling synkront och speciella \u00e5tg\u00e4rder har vidtagits f\u00f6r att \u00f6ka systemets effektivitet. I synkront l\u00e4ge orsakar otillg\u00e4nglighet av v\u00e4rdar en betydande nedg\u00e5ng i pollingen. Det finns ett helt system av tillst\u00e5nd och speciella processer \u2013 de s\u00e5 kallade unreachable-pollarna, som endast arbetar med otillg\u00e4ngliga v\u00e4rdar:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/6a001eff121f2392fffda69d719ebad6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDetta \u00e4r en kommentar som visar tillst\u00e5ndsmatrisen, hela komplexiteten i tillst\u00e5nds\u00f6verg\u00e5ngarna som kr\u00e4vs f\u00f6r att systemet ska f\u00f6rbli effektivt. Dessutom \u00e4r sj\u00e4lva den synkrona pollingen ganska l\u00e5ngsam:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/3579a4a3de85c37f812ba2ca71cf4b3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet \u00e4r d\u00e4rf\u00f6r tusentals tr\u00e5dar av pollare p\u00e5 ett dussin proxyservrar inte kunde samla in det \u00f6nskade antalet uppgifter f\u00f6r oss. Den asynkrona implementeringen l\u00f6ste inte bara problemen med antalet tr\u00e5dar, utan f\u00f6renklade ocks\u00e5 tillst\u00e5ndssystemet f\u00f6r otillg\u00e4ngliga v\u00e4rdar avsev\u00e4rt, eftersom den maximala v\u00e4ntetiden vid vilket antal kontrollerade i en iterationspolling var 1 timeout:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/c5f2d9bb3e558f8bba6bd8a96d8ed6a6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDessutom modifierade och utvecklade vi polling-systemet f\u00f6r SNMP-f\u00f6rfr\u00e5gningar. Det \u00e4r s\u00e5 att de flesta inte kan svara p\u00e5 flera SNMP-f\u00f6rfr\u00e5gningar samtidigt. D\u00e4rf\u00f6r gjorde vi ett hybridl\u00e4ge, d\u00e4r SNMP-pollingen f\u00f6r samma v\u00e4rd g\u00f6rs asynkront:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/eb61766e8afce9bf72d6e9757492559e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDetta g\u00f6rs f\u00f6r hela gruppen av v\u00e4rdar. Detta l\u00e4ge \u00e4r i slut\u00e4ndan inte l\u00e5ngsammare \u00e4n helt asynkront, eftersom en f\u00f6rfr\u00e5gan av 150 SNMP-v\u00e4rden fortfarande \u00e4r mycket snabbare \u00e4n 1 timeout.<\/p>\n<p>V\u00e5ra experiment visade att det optimala antalet f\u00f6rfr\u00e5gningar per iteration \u00e4r cirka 8000 vid SNMP-polling. Sammanfattningsvis har \u00f6verg\u00e5ngen till asynkront l\u00e4ge m\u00f6jliggjort att \u00f6ka pollingens prestanda 200 g\u00e5nger, i flera hundra g\u00e5nger.<\/p>\n<p><b>MC:<\/b> De erh\u00e5llna optimeringarna av polling har visat att vi inte bara kan bli av med alla proxyer, utan ocks\u00e5 minska intervallen f\u00f6r m\u00e5nga kontroller, och proxyer kommer att bli \u00f6verfl\u00f6diga som metod f\u00f6r lastf\u00f6rdelning.<\/p>\n<p><i>F\u00f6r cirka tre m\u00e5nader sedan<\/i><\/p>\n<h3>\u00c4ndra arkitekturen \u2013 \u00f6ka lasten!<\/h3>\n<p>\n<b>MM:<\/b> N\u00e5v\u00e4l, Max, \u00e4r det dags f\u00f6r produktion? Jag beh\u00f6ver en kraftfull server och en bra ingenj\u00f6r.<\/p>\n<p><b>MC:<\/b> Okej, vi planerar det. Det \u00e4r verkligen dags att komma vidare fr\u00e5n deadlocken p\u00e5 5 000 m\u00e4tv\u00e4rden per sekund.<\/p>\n<p><i>Morgonen efter uppgraderingen<\/i><\/p>\n<p><b>MC:<\/b> Misha, vi uppdaterade, men till morgonen \u00e5tergick vi tillbaka\u2026 Gissa vilken hastighet vi lyckades uppn\u00e5?<\/p>\n<p><b>MM:<\/b> Cirka 20 tusen h\u00f6gst.<\/p>\n<p><b>MC:<\/b> Aha, 25! Tyv\u00e4rr \u00e4r vi d\u00e4r vi b\u00f6rjade.<\/p>\n<p><b>MM:<\/b> Vad h\u00e4nde? Har ni gjort n\u00e5gon diagnos?<\/p>\n<p><b>MC:<\/b> Ja, sj\u00e4lvklart! H\u00e4r \u00e4r till exempel en intressant top:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/09ac3336a820977b643ee5328ad2a851.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> L\u00e5t oss titta. Jag ser att vi f\u00f6rs\u00f6kte med ett enormt antal pollingtr\u00e5dar:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/346e8047f1f6f2bb1b1dd91a728e437b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMen vi har samtidigt inte kunnat utnyttja systemet ens till h\u00e4lften:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/be1843dbec0fb10d8da59e8c570adc5b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOch den totala prestandan \u00e4r ganska l\u00e5g, runt 4 000 m\u00e4tv\u00e4rden per sekund:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/02eaf0b56629ebc6d3d5c132374a91b8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFinns det n\u00e5got mer?<\/p>\n<p><b>MC:<\/b> Ja, strace av en av pollrarna:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/73fc58bd2925859f6fbbcd118a0483c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> H\u00e4r ser vi tydligt att pollingprocessen v\u00e4ntar p\u00e5 \"semaforer\". Det \u00e4r blockeringar:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/d0bec44a9677ec111066dccc1dd8c5dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> Oklart.<\/p>\n<p><b>MM:<\/b> Titta, det liknar en situation d\u00e4r m\u00e5nga tr\u00e5dar f\u00f6rs\u00f6ker arbeta med en resurs, som bara kan anv\u00e4ndas av en \u00e5t g\u00e5ngen. D\u00e5 kan de allt de kan g\u00f6ra \u2013 dela den h\u00e4r resursen \u00f6ver tid:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/7dbb9e8941b01b666dd48f6301151ec9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOch den sammanlagda prestandan med en s\u00e5dan resurs begr\u00e4nsas av hastigheten av en k\u00e4rna:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/e00b197577f4ea7350fe56665dbae299.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet finns tv\u00e5 s\u00e4tt att l\u00f6sa ett s\u00e5dant problem.<\/p>\n<p>Uppgradera maskinens h\u00e5rdvara, g\u00e5 till snabbare k\u00e4rnor:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/296d84b434ed7277fb558a8a4dd5ac47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEller \u00e4ndra arkitektur och parallellt \u2013 lasten:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/efea73106440db4e5eda5aa475dd088b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> F\u00f6r \u00f6vrigt kommer vi att anv\u00e4nda ett mindre antal k\u00e4rnor p\u00e5 testmaskinen \u00e4n p\u00e5 produktionsmaskinen, men de \u00e4r cirka 1,5 g\u00e5nger snabbare i klockfrekvens per k\u00e4rna!<\/p>\n<p><b>MM:<\/b> F\u00f6rst\u00e5r du? Vi m\u00e5ste kolla serverkoden.<\/p>\n<h3>Datav\u00e4gen i Zabbix-servern<\/h3>\n<p>\n<b>MC:<\/b> F\u00f6r att f\u00f6rst\u00e5, b\u00f6rjade vi analysera hur data \u00f6verf\u00f6rs inom \"Zabbix\"-servern:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/b3d84e3fcb12e7afe3c974bdeacc357a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn cool bild, eller hur? L\u00e5t oss g\u00e5 igenom den steg f\u00f6r steg f\u00f6r att mer eller mindre klarg\u00f6ra. Det finns tr\u00e5dar och tj\u00e4nster som \u00e4r ansvariga f\u00f6r att samla in data:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/966db6fa84723d4d3bde8a23736294d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe insamlade m\u00e4tv\u00e4rdena skickar de via en socket till Preprocessor manager, d\u00e4r de sparas i en k\u00f6:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/1e34fe2c4194f7bd71ec409d6169fb94.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\"Preprocessor manager\" vidarebefordrar data till sina arbetare, som utf\u00f6r instruktionerna f\u00f6r f\u00f6rbehandling och returnerar dem tillbaka via samma socket:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/d647caf3886f0c9378a32314e812edc1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEfter detta sparar preprocessormanagern dem i historikk\u00f6len:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/ff0e29b0d974d76bd3a3b71d36a1cc68.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nD\u00e4r h\u00e4mtas de av historiesynkroniserare som utf\u00f6r flera funktioner: till exempel ber\u00e4kning av triggar, fyllning av v\u00e4rdek\u00f6len och, viktigast av allt, lagring av m\u00e4tv\u00e4rden i historiklagret. Sammanfattningsvis \u00e4r processen komplicerad och ganska f\u00f6rvirrande.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/c418a17edeb9153a03dff233aa8f715e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Det f\u00f6rsta vi s\u00e5g var att de flesta tr\u00e5dar konkurrerade om den s\u00e5 kallade \"konfigurationscache\" (ett minnesomr\u00e5de d\u00e4r alla serverkonfigurationer lagras). S\u00e4rskilt m\u00e5nga l\u00e5s g\u00f6rs av tr\u00e5dar som ansvarar f\u00f6r datainsamling:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/589d8f564ece6e63457450e9c5081b80.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026eftersom konfigurationen lagrar inte bara m\u00e4tv\u00e4rden med deras parametrar, utan ocks\u00e5 k\u00f6er fr\u00e5n vilka pollare h\u00e4mtar information om vad de ska g\u00f6ra h\u00e4rn\u00e4st. N\u00e4r det finns m\u00e5nga pollare, och en blockerar konfigurationen, v\u00e4ntar de andra p\u00e5 f\u00f6rfr\u00e5gningar:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/8026cdfcd7def84cb3708b7255b08c66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Pollare b\u00f6r inte konfliktera<\/h3>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/d436cd3415a6f58e1db5a609689c12b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nD\u00e4rf\u00f6r var det f\u00f6rsta vi gjorde att dela upp k\u00f6n i 4 delar och till\u00e5ta pollarna att s\u00e4kert blockera dessa k\u00f6er, dessa delar samtidigt:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/9466e5f0053dff583e76713f10e30a89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDetta eliminerade konkurrensen om konfigurationscache, och pollarnas arbets hastighet \u00f6kade avsev\u00e4rt. Men sedan st\u00f6tte vi p\u00e5 problemet att preprocessormanagern b\u00f6rjade samla p\u00e5 sig en k\u00f6 av uppgifter:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/dd58e625823310fb0a818ed81abdceac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Preprocessormanagern m\u00e5ste kunna prioritera<\/h3>\n<p>\nDetta h\u00e4nde n\u00e4r det saknades prestanda. D\u00e5 var allt han kunde g\u00f6ra att samla in f\u00f6rfr\u00e5gningar fr\u00e5n datainsamlingsprocesser och lagra dem i bufferten tills den tog hela minnet och kraschade:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/b215d880863d470ea6ca960c6338b8ae.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r att l\u00f6sa detta problem lade vi till en andra socket som var speciellt avsedd f\u00f6r arbetare:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/09d1bb92a009f9d29ba68d966de54210.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5ledes fick preprocessormanagern m\u00f6jlighet att prioritera sitt arbete och i h\u00e4ndelse av bufferttillv\u00e4xt f\u00f6rdr\u00f6ja insamlingen, vilket gav arbetarna m\u00f6jlighet att ta den bufferten:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/8f4db3661c428e6e6dcfe4cc0c44c016.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nD\u00e4refter uppt\u00e4ckte vi att en av anledningarna till f\u00f6rdr\u00f6jningen var arbetarna sj\u00e4lva, eftersom de konkurrerade om en resurs som var helt oviktig f\u00f6r deras arbete. Detta problem formulerade vi som en buggfix, och i de nya versionerna av \"Zabbix\" \u00e4r det redan l\u00f6st:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/eedb359823dd23d369339e3735e341fb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>\u00d6kar antalet sockets \u2013 f\u00e5r resultat<\/h3>\n<p>\nD\u00e4refter blev sj\u00e4lva preprocessormanagern en flaskhals, eftersom detta \u00e4r en tr\u00e5d. Den n\u00e5dde k\u00e4rnans hastighet och gav en maximal hastighet p\u00e5 cirka 70 000 m\u00e4tv\u00e4rden per sekund:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/f93ccbc656c0f9e103873d99a9397495.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5 vi gjorde fyra, med fyra upps\u00e4ttningar av sockets, arbetare:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/81a3dea3aa0f8807add8d045cf64a609.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOch det gjorde att vi kunde \u00f6ka hastigheten till ungef\u00e4r 130 000 m\u00e4tningar:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/016ff07cd021a7221caef19e6ce36a9b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIcke-linj\u00e4riteten i tillv\u00e4xten f\u00f6rklaras av att det uppstod konkurrens om cache-historiken. Fyra preprocessormanagers och history-synkroniserare t\u00e4vlade om den. Vid den tidpunkten fick vi p\u00e5 testmaskinen ungef\u00e4r 130 000 m\u00e4tningar per sekund, och utnyttjade den ungef\u00e4r 95 % av processorn:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/62162254cd8bc66c1cef697158691588.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>F\u00f6r ungef\u00e4r 2,5 m\u00e5nader sedan<\/i><\/p>\n<h3>Att \u00f6verge snmp-community \u00f6kade NVP:erna med en och en halv g\u00e5ng<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Max, jag beh\u00f6ver en ny testmaskin! I den nuvarande f\u00e5r vi inte plats l\u00e4ngre.<\/p>\n<p><b>MC:<\/b> \u2013 Vad har vi just nu?<\/p>\n<p><b>MM:<\/b> \u2013 Just nu \u2013 130k NVP:er och processorn \"i hyllan\".<\/p>\n<p><b>MC:<\/b> \u2013 Wow! Coolt! V\u00e4nta, jag har tv\u00e5 fr\u00e5gor. Enligt mina ber\u00e4kningar ligger v\u00e5rt behov p\u00e5 cirka 15-20 000 m\u00e4tningar per sekund. Varf\u00f6r beh\u00f6ver vi mer?<\/p>\n<p><b>MM:<\/b> \u2013 Jag vill g\u00f6ra jobbet f\u00e4rdigt. Jag vill se hur mycket vi kan f\u00e5 ut av det h\u00e4r systemet.<\/p>\n<p><b>MC:<\/b> \u2013 Men\u2026<\/p>\n<p><b>MM:<\/b> \u2013 Men det \u00e4r v\u00e4rdel\u00f6st f\u00f6r verksamheten.<\/p>\n<p><b>MC:<\/b> \u2013 F\u00f6rst\u00e5r. Och den andra fr\u00e5gan: kommer vi att kunna st\u00f6dja det vi har nu p\u00e5 egen hand, utan hj\u00e4lp av utvecklaren?<\/p>\n<p><b>MM:<\/b> \u2013 Jag tror inte det. Att \u00e4ndra hur konfigurationscachen fungerar \u00e4r ett problem. Det ber\u00f6r \u00e4ndringar i de flesta tr\u00e5dar och \u00e4r ganska sv\u00e5rt att underh\u00e5lla. Det kommer sannolikt att bli v\u00e4ldigt tufft att st\u00f6dja.<\/p>\n<p><b>MC:<\/b> \u2013 D\u00e5 beh\u00f6ver vi n\u00e5got alternativ.<\/p>\n<p><b>MM:<\/b> \u2013 Det finns ett alternativ. Vi kan g\u00e5 \u00f6ver till snabba k\u00e4rnor och \u00f6verge det nya l\u00e5sningssystemet. Vi f\u00e5r fortfarande en prestanda p\u00e5 60-80 000 m\u00e4tningar. Samtidigt kan vi beh\u00e5lla all annan kod. \"Clickhouse\" och asynkron polling kommer att fungera. Och det kommer att vara l\u00e4tt att underh\u00e5lla.<\/p>\n<p><b>MC:<\/b> \u2013 Utm\u00e4rkt! Jag f\u00f6resl\u00e5r att vi stannar h\u00e4r.<\/p>\n<p>Efter optimering av serverdelen kunde vi \u00e4ntligen lansera den nya koden i produktion. Vi avstod fr\u00e5n vissa \u00e4ndringar f\u00f6r att g\u00e5 \u00f6ver till en maskin med snabba k\u00e4rnor och minimera antalet \u00e4ndringar i koden. Vi f\u00f6renklade ocks\u00e5 konfigurationen och avstod fr\u00e5n makron i datakomponenterna n\u00e4r det var m\u00f6jligt, eftersom de \u00e4r en k\u00e4lla till extra l\u00e5sningar.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/2b1ed396b09bd815fba973ebb5f73d76.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTill exempel ledde \u00f6vergivandet av det makro snmp-community som ofta f\u00f6rekommer i dokumentationen och exemplen i v\u00e5rt fall till en ytterligare \u00f6kning av NVP:erna med cirka 1,5 g\u00e5nger.<\/p>\n<p><i>Efter tv\u00e5 dagar i produktion<\/i><\/p>\n<h3>Vi tar bort popup-f\u00f6nster f\u00f6r incidenthistorik<\/h3>\n<p>\n<b>MC:<\/b> \u2013 Misha, vi har anv\u00e4nt systemet i tv\u00e5 dagar, och allt fungerar. Men bara n\u00e4r allt fungerar! Vi hade planerat arbete med att flytta en ganska stor del av n\u00e4tverket, och vi kontrollerade \u00e5terigen manuellt vad som fungerade och vad som inte gjorde.<\/p>\n<p><b>MM:<\/b> \u2013 Det kan inte vara sant! Vi har kontrollerat allt tio g\u00e5nger. Servern hanterar till och med fullst\u00e4ndig n\u00e4tverksavbrott omedelbart.<\/p>\n<p><b>MC:<\/b> \u2013 Jag f\u00f6rst\u00e5r allt: servern, databasen, top, austat, loggar \u2013 allt g\u00e5r snabbt\u2026 Men vi tittar p\u00e5 webbgr\u00e4nssnittet, och d\u00e4r \u00e4r CPU:n p\u00e5 servern \u00abi vilol\u00e4ge\u00bb och detta:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/828a44d71f67ac585055bffcc01ab46e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 F\u00f6rst\u00e5r. L\u00e5t oss titta p\u00e5 webbgr\u00e4nssnittet. Vi uppt\u00e4ckte att i situationer med ett stort antal aktiva incidenter, b\u00f6rjade de flesta operativa widgets att arbeta mycket l\u00e5ngsamt:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/22fdb735aa6136cd9967b40341d2a5cf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOrsaken till detta var generering av popup-f\u00f6nster med incidenthistorik, som genereras f\u00f6r varje element i listan. D\u00e4rf\u00f6r avstod vi fr\u00e5n att generera dessa f\u00f6nster (kommenterade 5 rader i koden), och detta l\u00f6ste v\u00e5ra problem.<\/p>\n<p>Laddningstiden f\u00f6r widgets, \u00e4ven vid fullst\u00e4ndig otillg\u00e4nglighet, minskade fr\u00e5n flera minuter till acceptabla 10-15 sekunder f\u00f6r oss, och historik kan fortfarande granskas genom att klicka p\u00e5 tidslinjen:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/d15341ce76578880a23651a7a68dd802.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Efter jobbet. F\u00f6r tv\u00e5 m\u00e5nader sedan<\/i><\/p>\n<p><b>MC:<\/b> \u2013 Misha, g\u00e5r du? Vi m\u00e5ste prata.<\/p>\n<p><b>MM:<\/b> \u2013 Jag t\u00e4nkte inte g\u00f6ra det. \u00c4r det n\u00e5got med \u00abZabbix\u00bb igen?<\/p>\n<p><b>MC:<\/b> \u2013 Nej, slappna av! Jag ville bara s\u00e4ga: allt fungerar, tack! Jag bjuder p\u00e5 \u00f6l.<\/p>\n<h3>Zabbix \u00e4r effektiv<\/h3>\n<p>\n\u00abZabbix\u00bb \u00e4r ett ganska m\u00e5ngsidigt och rikt system och funktion. Det g\u00e5r bra att anv\u00e4nda det f\u00f6r sm\u00e5 installationer \u00abur l\u00e5dan\u00bb, men med \u00f6kade behov m\u00e5ste det optimeras. F\u00f6r att lagra ett stort arkiv av metrik, anv\u00e4nd ett l\u00e4mpligt lagringssystem:<\/p>\n<ul>\n<li>Du kan anv\u00e4nda de inbyggda funktionerna i form av integration med \u00abElasticsearch\u00bb eller exportering av historik till textfiler (tillg\u00e4ngligt fr\u00e5n fj\u00e4rde versionen);<\/li>\n<li>Du kan anv\u00e4nda v\u00e5r erfarenhet och integration med \u00abClickHouse\u00bb.<\/li>\n<\/ul>\n<p>\nF\u00f6r att radikalt \u00f6ka hastigheten p\u00e5 insamlingen av metrik, samla dem med asynkrona metoder och \u00f6verf\u00f6r dem via trapper-gr\u00e4nssnittet till \u00abZabbix\u00bb-servern; eller s\u00e5 kan du anv\u00e4nda en patch f\u00f6r asynkronitet f\u00f6r Zabbix:s poller.<\/p>\n<p>Zabbix \u00e4r skrivet i C och \u00e4r ganska effektivt. De specifika arkitekturproblem som finns g\u00f6r det m\u00f6jligt att ytterligare \u00f6ka dess prestanda och, enligt v\u00e5r erfarenhet, att f\u00e5 mer \u00e4n 100 000 metrik p\u00e5 en enprocessor-maskin.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/46559b481b5e53dc3cc3d2562a94531d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Den d\u00e4r patchen Zabbix<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Jag vill l\u00e4gga till ett par punkter. Hela den aktuella presentationen, alla tester och siffror \u00e4r presenterade f\u00f6r den konfiguration som vi anv\u00e4nder. Fr\u00e5n den f\u00e5r vi just nu cirka 20 000 metrik per sekund. Om du f\u00f6rs\u00f6ker f\u00f6rst\u00e5 om detta kommer att fungera f\u00f6r dig \u2013 kan du j\u00e4mf\u00f6ra. Det som har presenterats idag finns p\u00e5 GitHub som en patch: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/miklert\/zabbix\">github.com\/miklert\/zabbix<\/a><\/noindex><\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/e5880b2f01cb03809057db08306b23c7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPatchen inkluderar:<\/p>\n<ul>\n<li>fullst\u00e4ndig integration med ClickHouse (b\u00e5de Zabbix-servern och frontend);<\/li>\n<li>l\u00f6sning av problem med preprocessormanagern;<\/li>\n<li>asynkron polling.<\/li>\n<\/ul>\n<p>\nPatchen \u00e4r kompatibel med hela version 4, inklusive lts. Troligtvis kommer den att fungera med minimala \u00e4ndringar p\u00e5 version 3.4.<\/p>\n<p>Tack f\u00f6r uppm\u00e4rksamheten.<\/p>\n<h3>Fr\u00e5gor<\/h3>\n<p>\nFr\u00e5ga fr\u00e5n publiken (h\u00e4danefter \u2013 A): \u2013 Goddag! Kan ni ber\u00e4tta om ni har planer f\u00f6r intensivt samarbete med Zabbix-teamet eller om de har med er, s\u00e5 att det inte bara blir en patch, utan en normal funktionalitet i Zabbix?<\/p>\n<p><b>MM:<\/b> \u2013 Ja, vi kommer definitivt att committa delar av \u00e4ndringarna. Vissa saker kommer att stanna i patchen.<\/p>\n<p><b>A:<\/b> \u2013 Tack s\u00e5 mycket f\u00f6r den utm\u00e4rkta presentationen! Kan ni ber\u00e4tta om st\u00f6d fr\u00e5n Zabbix kommer att finnas kvar efter att patchen har till\u00e4mpats och hur man sedan uppdaterar till h\u00f6gre versioner? Kommer det att vara m\u00f6jligt att uppdatera Zabbix efter er patch till 4.2, 5.0?<\/p>\n<p><b>MM:<\/b> \u2013 N\u00e4r det g\u00e4ller st\u00f6det kan jag inte s\u00e4ga. Om jag var teknisk support f\u00f6r Zabbix skulle jag f\u00f6rmodligen s\u00e4ga nej, eftersom det \u00e4r en tredjeparts kod. N\u00e4r det g\u00e4ller kodbasen 4.2 \u00e4r v\u00e5r st\u00e5ndpunkt denna: \"Vi kommer att f\u00f6lja med tiden och sj\u00e4lva uppdatera till n\u00e4sta version.\" S\u00e5 under en tid kommer vi att publicera patchar f\u00f6r uppdaterade versioner. Jag sa redan i presentationen att antalet \u00e4ndringar mellan versionerna hittills \u00e4r ganska litet. Jag tror att \u00f6verg\u00e5ngen fr\u00e5n 3.4 till 4 tog oss, verkar det som, cirka 15 minuter. Det har \u00e4ndrats n\u00e5got, men inte s\u00e4rskilt viktigt.<\/p>\n<p><b>A:<\/b> \u2013 S\u00e5 ni planerar att st\u00f6dja er patch och man kan tryggt installera den i produktion, och f\u00e5 uppdateringar p\u00e5 n\u00e5got s\u00e4tt fram\u00f6ver?<\/p>\n<p><b>MM:<\/b> \u2013 Vi rekommenderar det kraftigt. Det l\u00f6ser m\u00e5nga av v\u00e5ra problem.<\/p>\n<p><b>MC:<\/b> \u2013 Jag vill \u00e4nnu en g\u00e5ng betona att f\u00f6r\u00e4ndringar som inte r\u00f6r arkitekturen och som inte r\u00f6r blockeringar eller k\u00f6er \u2013 de \u00e4r modul\u00e4ra, de finns i separata moduler. \u00c4ven vid sm\u00e5 f\u00f6r\u00e4ndringar kan de st\u00f6djas ganska enkelt.<\/p>\n<p><b>MM:<\/b> \u2013 Om du \u00e4r intresserad av detaljer, s\u00e5 anv\u00e4nder \"ClickHouse\" det s\u00e5 kallade historikbiblioteket. Det \u00e4r oberoende \u2013 en kopia av st\u00f6det f\u00f6r \"Elastix\", vilket betyder att det kan \u00e4ndras i configuration. Polling \u00e4ndrar bara pollarna. Vi tror att detta kommer att fungera l\u00e4nge.<\/p>\n<p><b>A:<\/b> \u2013 Tack s\u00e5 mycket. Kan du s\u00e4ga om det finns n\u00e5gon dokumentation f\u00f6r de \u00e4ndringar som gjorts?<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server\" src=\"\/wp-content\/uploads\/2020\/02\/f3842ba578f736721c96794941b8f071.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Dokumentationen \u00e4r en patch. Det \u00e4r uppenbart att med inf\u00f6randet av \"ClickHouse\" och nya typer av pollare uppst\u00e5r nya konfigurationsalternativ. P\u00e5 l\u00e4nken i den senaste sliden finns en kort beskrivning av hur man anv\u00e4nder detta.<\/p>\n<h3>Om att byta ut fping mot nmap<\/h3>\n<p>\n<b>A:<\/b> \u2013 Hur genomf\u00f6rde ni detta? Kan ni ge konkreta exempel: har ni strappare och ett externt skript? Vad kontrollerar s\u00e5 snabbt s\u00e5 m\u00e5nga v\u00e4rdar? Hur f\u00e5r ni tag p\u00e5 dessa v\u00e4rdar? M\u00e5ste ni p\u00e5 n\u00e5got s\u00e4tt mata nmap med dem, h\u00e4mta dem n\u00e5gonstans, spara dem, och sedan k\u00f6ra n\u00e5got?<\/p>\n<p><b>MM:<\/b> \u2013 Coolt. Mycket bra fr\u00e5ga! K\u00e4rnan \u00e4r denna. Vi modifierade biblioteket (ICMP-ping, en del av \"Zabbix\") f\u00f6r ICMP-kontroller, d\u00e4r antalet paket anges \u2013 en enhet (1), och koden f\u00f6rs\u00f6ker anv\u00e4nda nmap. Det vill s\u00e4ga, detta \u00e4r Zabbix interna arbete, som blev det interna arbetet f\u00f6r pingaren. D\u00e4rmed beh\u00f6vs ingen synkronisering eller anv\u00e4ndning av trapper. Detta gjordes medvetet f\u00f6r att beh\u00e5lla systemet intakt och f\u00f6r att inte beh\u00f6va sy ihop tv\u00e5 system av databaser: vad som ska kontrolleras, laddas upp via pollern, och om vi inte har problem med uppladdningen\u2026 Det \u00e4r mycket enklare.<\/p>\n<p><b>A:<\/b> \u2013 Fungerar det ocks\u00e5 f\u00f6r proxy?<\/p>\n<p><b>MM:<\/b> \u2013 Ja, men vi har inte testat det. Koden f\u00f6r pollingen \u00e4r densamma i Zabbix och servern. Det borde fungera. Jag betonar igen: systemets prestanda \u00e4r s\u00e5dan att vi inte beh\u00f6ver proxy.<\/p>\n<p><b>MC:<\/b> \u2013 R\u00e4tt svar p\u00e5 fr\u00e5gan \u00e4r: \"Varf\u00f6r skulle ni ha proxy i ett s\u00e5dant system?\" Bara p\u00e5 grund av NAT eller om ni ska \u00f6vervaka genom n\u00e5gon l\u00e5ngsam kanal...<\/p>\n<p><b>A:<\/b> \u2013 Anv\u00e4nder ni \"Zabbix\" som en alert-l\u00f6sning, om jag f\u00f6rstod r\u00e4tt. Eller har ni grafer (d\u00e4r arkivlagret finns) flyttat till ett annat system, som Grafana? Eller anv\u00e4nder ni inte den funktionen?<\/p>\n<p><b>MM:<\/b> \u2013 Jag vill betona en g\u00e5ng till: vi har gjort en fullst\u00e4ndig integration. Vi dumpade historik i \"Clickhouse\", men \u00e4ndrade samtidigt PHP-frontenden. PHP-frontenden g\u00e5r till \"Clickhouse\" och skapar alla diagram d\u00e4rifr\u00e5n. \u00c4rligt talat har vi en del som bygger p\u00e5 samma \"Clickhouse\", fr\u00e5n samma data fr\u00e5n \"Zabbix\", data f\u00f6r andra grafiska visningssystem.<\/p>\n<p><b>MC:<\/b> \u2013 I \"Grafana\" ocks\u00e5.<\/p>\n<h3>Hur fattades beslutet och om resursf\u00f6rdelningen?<\/h3>\n<p>\n<b>A:<\/b> \u2013 Ber\u00e4tta lite om den interna processen. Hur fattades beslutet att resurser skulle avs\u00e4ttas f\u00f6r en betydande omarbetning av produkten? Det medf\u00f6r ju faktiskt vissa risker. Och sn\u00e4lla, ber\u00e4tta i kontexten av att ni avser att st\u00f6dja nya versioner: hur motiveras detta beslut fr\u00e5n ett managementperspektiv?<\/p>\n<p><b>MM:<\/b> \u2013 Tydligen har vi inte ber\u00e4ttat dramahistorien s\u00e4rskilt bra. Vi befann oss i en situation d\u00e4r n\u00e5got beh\u00f6vde g\u00f6ras, och vi gick p\u00e5 s\u00e4tt och vis fram med tv\u00e5 parallella team:<\/p>\n<ul>\n<li>Ett team arbetade med att starta ett \u00f6vervakningssystem med nya metoder: \u00f6vervakning som tj\u00e4nst, en standard upps\u00e4ttning av \u00f6ppen k\u00e4llkods-l\u00f6sningar som vi kombinerar och sedan f\u00f6rs\u00f6ker \u00e4ndra aff\u00e4rsprocessen f\u00f6r att arbeta med det nya \u00f6vervakningssystemet.<\/li>\n<li>Parallellt hade vi en entusiastisk programmerare som arbetade med detta (om sig sj\u00e4lv). Det blev s\u00e5 att han vann.<\/li>\n<\/ul>\n<p>\n<b>A:<\/b> \u2013 Hur stor \u00e4r teamet?<\/p>\n<p><b>MC:<\/b> \u2013 Det st\u00e5r framf\u00f6r er.<\/p>\n<p><b>A:<\/b> \u2013 S\u00e5 en passionerad person beh\u00f6vs alltid?<\/p>\n<p><b>MM:<\/b> \u2013 Jag vet inte vad en passionerad person \u00e4r.<\/p>\n<p><b>A:<\/b> \u2013 I det h\u00e4r fallet \u00e4r det tydligen du. Tack s\u00e5 mycket, ni \u00e4r fantastiska.<\/p>\n<p><b>MM:<\/b> \u2013 Tack.<\/p>\n<h3>Om patchar f\u00f6r Zabbix<\/h3>\n<p>\n<b>A:<\/b> \u2013 F\u00f6r ett system som anv\u00e4nder proxy (till exempel i vissa distribuerade system), \u00e4r det m\u00f6jligt att anpassa och patcha er l\u00f6sning, s\u00e4g, pollare, proxy och delvis preprocessor av Zabbix; och deras interaktion? \u00c4r det m\u00f6jligt att optimera befintliga arbetsmetoder f\u00f6r ett system med flera proxys?<\/p>\n<p><b>MM:<\/b> \u2013 Jag vet att Zabbix-servern kompileras med hj\u00e4lp av proxy (den kompilerar och ger kod). Vi har inte testat detta i produktion. Jag \u00e4r os\u00e4ker p\u00e5 detta, men enligt min mening anv\u00e4nds preprocessor-managern inte i proxyn. Uppgiften f\u00f6r proxyn \u00e4r att ta en upps\u00e4ttning metrik fr\u00e5n Zabbix, spola dem (den skriver ocks\u00e5 konfigurationen och en lokal databas) och ge tillbaka till Zabbix-servern. Preprocessing kommer att g\u00f6ras av servern senare, n\u00e4r den f\u00e5r det.<\/p>\n<p>Intresset f\u00f6r proxy \u00e4r f\u00f6rst\u00e5eligt. Vi kommer att kontrollera detta. Det \u00e4r ett intressant \u00e4mne.<\/p>\n<p><b>A:<\/b> \u2013 Id\u00e9n var att om man kan patcha pollare, kan man patcha dem p\u00e5 proxy och anpassa interaktionen med servern, medan f\u00f6rprocessorn anpassas f\u00f6r dessa syften endast p\u00e5 servern.<\/p>\n<p><b>MM:<\/b> \u2013 Jag tror att det \u00e4r \u00e4nnu enklare. Du tar koden, l\u00e4gger p\u00e5 en patch, konfigurerar den som du vill \u2013 samlar proxy-servrar (till exempel med ODBC) och distribuerar den patchade koden \u00f6ver systemen. D\u00e4r det beh\u00f6vs \u2013 samlar du proxy, d\u00e4r det beh\u00f6vs \u2013 server.<\/p>\n<p><b>A:<\/b> \u2013 Beh\u00f6ver man inte patcha \u00f6verf\u00f6ringen av proxy till servern dessutom?<\/p>\n<p><b>MC:<\/b> \u2013 Nej, den \u00e4r standard.<\/p>\n<p><b>MM:<\/b> \u2013 Egentligen l\u00e4t en av id\u00e9erna inte s\u00e5. Vi har alltid str\u00e4vat efter att uppr\u00e4tth\u00e5lla balansen mellan att f\u00e5 nya id\u00e9er och m\u00e4ngden f\u00f6r\u00e4ndringar, samt enkelheten i underh\u00e5llet.<\/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=\"Spela 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>Lite reklam \ud83d\ude42<\/h3>\n<p>\nTack f\u00f6r att ni stannar kvar hos oss. Gillar ni v\u00e5ra artiklar? Vill ni se fler intressanta material? St\u00f6d oss genom att g\u00f6ra en best\u00e4llning eller rekommendera oss till era v\u00e4nner, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">moln-VPS f\u00f6r utvecklare fr\u00e5n $4,99<\/a><\/noindex>, <b>en unik motsvarighet till entry-level servrar som vi har skapat f\u00f6r er:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Allt om VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps fr\u00e5n $19 eller hur man korrekt delar en server?<\/a><\/noindex> (alternativ med RAID1 och RAID10 finns tillg\u00e4ngliga, upp till 24 k\u00e4rnor och upp till 40GB DDR4).<\/p>\n<p><b>Dell R730xd \u00e4r tv\u00e5 g\u00e5nger billigare i datacentret Equinix Tier IV i Amsterdam?<\/b> Bara hos oss <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 100TB fr\u00e5n $199<\/a><\/noindex> i Nederl\u00e4nderna! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 fr\u00e5n $99!<\/b><\/b> L\u00e4s om <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Hur man bygger en f\u00f6retagsinfrastruktur med Dell R730xd E5-2650 v4-servrar som kostar 9000 euro f\u00f6r en br\u00e5kdel?<\/a><\/noindex><br \/>\n<br \/>K\u00e4lla: <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\/sv\/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=\"sv_SE\" \/>\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\/sv\/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++, Michail Makurov, Maxim Tjernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 en server | ProHoster","description":"Den n\u00e4sta konferensen HighLoad++ kommer att h\u00e5llas den 6 och 7 april 2020 i Sankt Petersburg. Mer information och biljetter finns p\u00e5 l\u00e4nken.","canonical_url":"https:\/\/prohoster.info\/sv\/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":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/56049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=56049"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/56049\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=56049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=56049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=56049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}