{"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\/da\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere","title":{"rendered":"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Den n\u00e6ste HighLoad++ konference finder sted den 6. og 7. april 2020 i Sankt Petersborg. Detaljer og billetter <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/2sSxgBx\">via linket<\/a><\/noindex>. HighLoad++ Moskva 2018. Sal \"Moskva\". 9. november, 15:00. Resum\u00e9 og <noindex><a rel=\"nofollow\" href=\"http:\/\/www.highload.ru\/moscow\/2018\/abstracts\/4141\">pr\u00e6sentation<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/5c3e11c8449de7375d30b2cd75b5927e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n* Overv\u00e5gning \u2013 online og analyse.<br \/>\n* Prim\u00e6re begr\u00e6nsninger ved ZABBIX platformen.<br \/>\n* L\u00f8sning til skalerbar analyseopbevaring.<br \/>\n* Optimering af ZABBIX serveren.<br \/>\n* Optimering af UI.<br \/>\n* Erfaring med systemdrift med belastninger over 40k NVPS.<br \/>\n* Kort konklusion.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>Mikhail Makurov (herefter \u2013 MM):<\/b> \u2013 Hej alle sammen!<\/p>\n<p><b>Maksim Chernetsov (herefter \u2013 MCh):<\/b> \u2013 Goddag!<\/p>\n<p><b>MM:<\/b> \u2013 Tillad mig at pr\u00e6sentere Maksim. Maks \u2013 en talentfuld ingeni\u00f8r, den bedste netv\u00e6rksekspert, jeg kender. Maksim arbejder med netv\u00e6rk og services, deres udvikling og drift.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/a7fc62a03c0aede46f4a4695845daa22.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MCh:<\/b> \u2013 Og jeg vil gerne fort\u00e6lle om Mikhail. Mikhail \u2013 en udvikler i C. Han har skrevet flere h\u00f8jtydende l\u00f8sninger til trafikbehandling for vores virksomhed. Vi lever og arbejder i Ural, i byen med de h\u00e5rde m\u00e6nd, Tjeljabinsk, i firmaet \"Intersvyaz\". Vores firma er en udbyder af internet- og kabel-tv-services til en million mennesker i 16 byer.<\/p>\n<p><b>MM:<\/b> \u2013 Og det skal siges, at \"Intersvyaz\" er meget mere end bare en udbyder, det er et IT-firma. St\u00f8rstedelen af vores l\u00f8sninger er udviklet af vores IT-afdeling.<\/p>\n<p><b>A:<\/b> fra servere, der behandler trafik, til callcenter og mobilapplikation. IT-afdelingen har nu cirka 80 medarbejdere med meget forskellige kompetencer.<\/p>\n<h3>Om Zabbix og dets arkitektur<\/h3>\n<p>\n<b>MCh:<\/b> \u2013 Og nu vil jeg fors\u00f8ge at s\u00e6tte personlig rekord og p\u00e5 et minut fort\u00e6lle, hvad Zabbix (herefter \u2013 \"Zabbix\") er.<\/p>\n<p>\"Zabbix\" positionerer sig som et enterprise overv\u00e5gningssystem \"out of the box\". Det har mange funktioner, der g\u00f8r livet lettere: avancerede eskalationsregler, API til integration, gruppering og automatisk opdagelse af v\u00e6rter og metrikker. I \"Zabbix\" er der s\u00e5kaldte skaleringsv\u00e6rkt\u00f8jer \u2013 proxyer. \"Zabbix\" er et open source system.<\/p>\n<p>Kort om arkitekturen. Man kan sige, at den best\u00e5r af tre komponenter:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/0d2ae3ee04d00885d65e17b8cf44182b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ul>\n<li>Server. Skrevet i C. Med rimeligt kompleks behandling og overf\u00f8rsel af information mellem tr\u00e5de. Al behandling sker her: fra modtagelse til lagring i database.<\/li>\n<li>Alle data opbevares i databasen. \"Zabbix\" underst\u00f8tter MySQL, PostgreSQL og Oracle.<\/li>\n<li>Webgr\u00e6nsefladen er skrevet i PHP. Den leveres som regel med Apache-serveren, men fungerer mere effektivt i kombination med nginx + php.<\/li>\n<\/ul>\n<p>\nI dag vil vi gerne fort\u00e6lle en historie fra vores virksomhed, der handler om 'Zabbix'\u2026<\/p>\n<h3>En historie fra virksomheden 'Intersvyaz'. Hvad har vi, og hvad har vi brug for?<\/h3>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/407c35b81995ddca6444fa418941063f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>For 5 eller 6 m\u00e5neder siden. En dag efter arbejde\u2026<\/i><\/p>\n<p><b>MCh:<\/b> \u2013 Misha, hej! Glad for at jeg fik fat i dig \u2013 jeg har noget at tale om. Vi har igen haft problemer med overv\u00e5gningen. Under en stor nedetid gik alt i st\u00e5, og der var ingen information om netv\u00e6rkets tilstand. Desv\u00e6rre sker det ikke for f\u00f8rste gang. Jeg har brug for din hj\u00e6lp. Lad os s\u00f8rge for, at vores overv\u00e5gning fungerer under alle omst\u00e6ndigheder!<\/p>\n<p><b>MM:<\/b> \u2013 Men lad os f\u00f8rst synkronisere os. Jeg har ikke kigget derovre i et par \u00e5r. Hvis jeg husker korrekt, s\u00e5 skiftede vi fra Nagios til 'Zabbix' for omkring 8 \u00e5r siden. Og nu har vi, virker det som om, 6 kraftige servere og omkring et dusin proxies. Jeg blander ikke noget sammen?<\/p>\n<p><b>MCh:<\/b> \u2013 N\u00e6sten. 15 servere, hvoraf nogle er virtuelle maskiner. Det vigtigste er, at det ikke redder os i det \u00f8jeblik, hvor vi har brug for det mest. Hver gang der er en nedetid, h\u00e6nger serverne, og vi ser ingenting. Vi har fors\u00f8gt at optimere konfigurationen, men det giver ikke et optimalt l\u00f8ft i ydeevnen.<\/p>\n<p><b>MM:<\/b> \u2013 Forst\u00e5eligt. Har I allerede kigget p\u00e5 noget, eller har I fundet noget i diagnostikken?<\/p>\n<p><b>MCh:<\/b> \u2013 Det f\u00f8rste, vi skal tage fat p\u00e5, er faktisk databasen. MySQL er konstant belasted med at gemme nye m\u00e5linger, og n\u00e5r 'Zabbix' begynder at generere en masse h\u00e6ndelser, g\u00e5r databasen bogstaveligt talt i st\u00e5 i flere timer. Jeg har allerede fortalt dig om optimeringen af konfigurationen, men vi opdaterede faktisk hardwaren i \u00e5r: serverne har over hundrede gigabyte RAM, og der er SSD RAID-array p\u00e5 disken \u2013 der er ikke nogen mening i at vokse det line\u00e6rt. Hvad skal vi g\u00f8re?<\/p>\n<p><b>MM:<\/b> \u2013 Forst\u00e5eligt. Generelt set er MySQL en LTP-database. Det ser ud til, at den ikke l\u00e6ngere egner sig til at gemme arkivet af m\u00e5linger i vores st\u00f8rrelse. Lad os finde ud af det.<\/p>\n<p><b>MCh:<\/b> \u2013 Lad os g\u00f8re det!<\/p>\n<h3>Integration af Zabbix og Clickhouse som resultat af hackathonen<\/h3>\n<p>\nEfter noget tid fik vi interessante data:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/46899e843b1e89524c6d762c1c167a6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSt\u00f8rstedelen af pladsen i vores database var optaget af metrics-arkivet, og mindre end 1 % blev brugt til konfiguration, skabeloner og indstillinger. P\u00e5 det tidspunkt havde vi allerede anvendt en Big Data-l\u00f8sning baseret p\u00e5 Clickhouse i over et \u00e5r. Retningen for os var klar. P\u00e5 vores for\u00e5r 'Hackathon' skrev jeg en integration mellem Zabbix og Clickhouse for serveren og frontend. P\u00e5 det tidspunkt havde Zabbix allerede st\u00f8tte til ElasticSearch, og vi besluttede at sammenligne dem.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/92fa3da527de48102cbdcf6959d46814.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Sammenligning af Clickhouse og Elasticsearch<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Til sammenligningen genererede vi en belastning svarende til den, som Zabbix-serveren skaber, og s\u00e5 p\u00e5, hvordan systemerne ville klare sig. Vi skrev data i mellem 1000 r\u00e6kker pr. gang og brugte CURL. Vi formodede p\u00e5 forh\u00e5nd, at Clickhouse ville v\u00e6re mere effektiv til den belastningsprofil, som Zabbix skaber. Resultaterne overraskede os endda:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/354be7147b23a0bcb9ada3af93f59fac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnder ens betingelser skrev Clickhouse tre gange s\u00e5 mange data under testen. Begge systemer brugte meget f\u00e5 ressourcer til at l\u00e6se data. Men ElasticSearch kr\u00e6vede betydeligt flere CPU-ressourcer ved skrivning:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/fea7f7f7801024cee0f9367c49d81d5b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGenerelt overgik Clickhouse ElasticSearch betydeligt b\u00e5de i CPU-forbrug og hastighed. Desuden bruger Clickhouse 11 gange mindre plads p\u00e5 harddisken takket v\u00e6re datakompression og udf\u00f8rer omtrent 30 gange f\u00e6rre diskoperationer:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/50c24c4615ed350d7d78ec8655423409.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MCh:<\/b> \u2013 Ja, arbejdet med disksystemet i Clickhouse er meget effektivt. Store SATA-diske kan bruges til databaser og opn\u00e5 skrivehastigheder p\u00e5 hundredtusinder af r\u00e6kker pr. sekund. Systemet underst\u00f8tter 'out of the box' sharding, replikering og er meget nemt at konfigurere. Vi er mere end tilfredse med driften i et \u00e5r.<\/p>\n<p>For at optimere ressourcerne kan Clickhouse installeres ved siden af den eksisterende hoveddatabase, hvilket sparer meget CPU-tid og diskoperationer. Vi har flyttet metrics-arkivet til allerede eksisterende Clickhouse-klynger:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/4cf44eae47a13f2fc50377fec884ecc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVi har lettet den prim\u00e6re MySQL-database s\u00e5 meget, at vi kunne kombinere den p\u00e5 \u00e9n maskine med Zabbix-serveren og undg\u00e5 at have en dedikeret server til MySQL.<\/p>\n<h3>Hvordan fungerer polling i Zabbix?<\/h3>\n<p>\n<i>4 m\u00e5neder siden<\/i><\/p>\n<p><b>MM:<\/b> \u2013 N\u00e5, kan vi glemme problemerne med databasen?<\/p>\n<p><b>MCh:<\/b> \u2013 Det er helt rigtigt! En anden opgave, vi skal l\u00f8se, er langsom datainsamling. Nu er alle vores 15 proxy-servere overbelastede med SNMP-processer og polling. Vi har ikke andet valg end at anskaffe nye servere igen og igen.<\/p>\n<p><b>MM:<\/b> \u2013 Fantastisk. Men fort\u00e6l mig f\u00f8rst, hvordan polling fungerer i 'Zabbix'?<\/p>\n<p><b>MCh:<\/b> \u2013 Kort sagt er der 20 typer metric og ti m\u00e5der at indsamle dem p\u00e5. 'Zabbix' kan samle data enten i 'request \u2013 response' tilstand, eller vente p\u00e5 nye data via 'Trapper Interface'.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/cb2d974ee113b4147a4a588c1f35c730.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet er v\u00e6rd at bem\u00e6rke, at denne metode (Trapper) i den originale 'Zabbix' er den hurtigste. <\/p>\n<p>Der findes proxy-servere til belastningsfordeling:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/7b5c94a82b7e06aff6df6ea5549babdf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProxy kan udf\u00f8re de samme indsamlingfunktioner som 'Zabbix'-serveren ved at modtage opgaver fra den og sende de indsamlede metrics via Trapper-interfacet. Dette er den officielt anbefalede metode til at fordele belastningen. Proxy'er er ogs\u00e5 nyttige til at overv\u00e5ge fjerna infrastrukturen, der arbejder gennem NAT eller en langsom forbindelse:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/dbfb2777f9dd9b4adb81f1fa89f3bdd5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Arkitekturen er forst\u00e5et. Vi skal kigge p\u00e5 kildekoden\u2026<\/p>\n<p><i>Et par dage senere<\/i><\/p>\n<h3>Sagnet om, hvordan nmap fping besejrede<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Det ser ud til, at jeg har fundet noget.<\/p>\n<p><b>MCh:<\/b> \u2013 Fort\u00e6l!<\/p>\n<p><b>MM:<\/b> \u2013 Jeg har opdaget, at 'Zabbix' ved tilg\u00e6ngelighedskontroller kun tjekker maksimalt 128 v\u00e6rter samtidigt. Jeg pr\u00f8vede at \u00f8ge dette tal til 500 og fjernede inter-pakke intervallet i deres ping \u2013 det fordoblede hastigheden. Men jeg vil gerne have st\u00f8rre tal.<\/p>\n<p><b>MCh:<\/b> \u2013 I mit arbejde m\u00e5 jeg nogle gange kontrollere tilg\u00e6ngeligheden af tusinder af v\u00e6rter, og jeg har ikke set noget hurtigere end nmap til dette. Jeg er sikker p\u00e5, at det er den hurtigste metode. Lad os pr\u00f8ve det! Vi skal markant \u00f8ge antallet af v\u00e6rter ad gangen.<\/p>\n<p><b>MM:<\/b> \u2013 Tjekke mere end fem hundrede? 600?<\/p>\n<p><b>MCh:<\/b> \u2013 Minimum et par tusinde.<\/p>\n<p><b>MM:<\/b> \u2013 Okay. Det vigtigste, jeg gerne vil sige: jeg fandt ud af, at det meste af polling i 'Zabbix' bliver udf\u00f8rt synkront. Vi skal helt sikkert \u00e6ndre det til asynkront. S\u00e5 kan vi dramatisk \u00f8ge antallet af metrics, der indsamles af pollere, is\u00e6r hvis vi \u00f8ger antallet af metrics per iteration.<\/p>\n<p><b>MCh:<\/b> \u2013 Det lyder godt! Og hvorn\u00e5r?<\/p>\n<p><b>MM:<\/b> \u2013 Som s\u00e6dvanligt, i g\u00e5r.<\/p>\n<p><b>MCh:<\/b> \u2013 Vi sammenlignede begge versioner af fping og nmap:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/4be4cfe019b6b318ae2fbdbf82577111.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e5 et stort antal v\u00e6rter var nmap forventeligt op til fem gange mere effektivt. Da nmap kun tjekker for tilg\u00e6ngelighed og svartid, har vi flyttet tabst\u00e6lling til triggere og betydeligt forkortet intervallerne for tilg\u00e6ngelighedstjek. Det optimale antal v\u00e6rter til nmap, fandt vi, l\u00e5 omkring 4000 pr. iteration. Nmap har gjort det muligt for os at reducere CPU-omkostningerne til tilg\u00e6ngelighedstjek med tre gange og forkorte intervallet fra 120 sekunder til 10.<\/p>\n<h3>Optimering af polling<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Derefter tog vi fat p\u00e5 pollere. Vi var is\u00e6r interesserede i SNMP-afl\u00e6sninger og agenter. I \"Zabbix\" er polling lavet synkront, og der er truffet s\u00e6rlige foranstaltninger for at \u00f8ge systemets effektivitet. I det synkrone regime for\u00e5rsager utilg\u00e6ngelighed af v\u00e6rter betydelig nedgradering af polling. Der findes et helt system af tilstande og specielle processer \u2013 s\u00e5kaldte unreachable-pollere, som kun arbejder med utilg\u00e6ngelige v\u00e6rter:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/6a001eff121f2392fffda69d719ebad6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDette er en kommentar, der demonstrerer tilstandsmatrixen, hele kompleksiteten af de overgange, der kr\u00e6ves for at systemet kan forblive effektivt. Derudover er selve den synkrone polling ret langsom:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/3579a4a3de85c37f812ba2ca71cf4b3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNetop derfor kunne tusinder af pollertr\u00e5de p\u00e5 et dusin proxies ikke samle det n\u00f8dvendige antal data til os. Den asynkrone implementering l\u00f8ste ikke kun problemerne med antallet af tr\u00e5de, men forenklede ogs\u00e5 betydeligt systemet for tilstande af utilg\u00e6ngelige v\u00e6rter, fordi uanset hvor mange der blev tjekket i \u00e9n polling-iteration, var den maksimale ventetid 1 timeout:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/c5f2d9bb3e558f8bba6bd8a96d8ed6a6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDerudover modificerede og forbedrede vi polling-systemet for SNMP-foresp\u00f8rgsler. Problemet er, at de fleste ikke kan svare p\u00e5 flere SNMP-foresp\u00f8rgsler samtidigt. Derfor lavede vi en hybridtilstand, hvor SNMP-polling af den samme v\u00e6rt udf\u00f8res asynkront:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/eb61766e8afce9bf72d6e9757492559e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDette g\u00f8res for en hel bunke v\u00e6rter. Denne tilstand er i sidste ende ikke langsommere end den helt asynkrone, da foresp\u00f8rgslen af 150 SNMP-v\u00e6rdier stadig er meget hurtigere end 1 timeout.<\/p>\n<p>Vores eksperimenter viste, at det optimale antal foresp\u00f8rgsler pr. iteration er omkring 8000 ved SNMP-polling. Samlet set har overgangen til den asynkrone tilstand gjort det muligt at fremskynde pollingens ydeevne med 200 gange, i flere hundrede gange.<\/p>\n<p><b>MCh:<\/b> \u2013 De optimeringer af polling har vist, at vi ikke kun kan slippe af med alle proxies, men ogs\u00e5 forkorte intervallerne for mange kontroller, s\u00e5 proxies ikke l\u00e6ngere er n\u00f8dvendige som en metode til belastningsfordeling.<\/p>\n<p><i>For cirka tre m\u00e5neder siden<\/i><\/p>\n<h3>\u00c6ndr arkitekturen \u2013 \u00f8g belastningen!<\/h3>\n<p>\n<b>MM:<\/b> \u2013 N\u00e5, Max, er det tid til produktion? Jeg har brug for en kraftfuld server og en god ingeni\u00f8r.<\/p>\n<p><b>MCh:<\/b> \u2013 Godt, lad os planl\u00e6gge det. Det er p\u00e5 h\u00f8je tid at komme videre fra de 5.000 metrics i sekundet.<\/p>\n<p><i>Morgen efter opgraderingen<\/i><\/p>\n<p><b>MCh:<\/b> \u2013 Misha, vi er blevet opgraderet, men til morgen er vi tilbage igen\u2026 G\u00e6t hvilken hastighed vi n\u00e5ede?<\/p>\n<p><b>MM:<\/b> \u2013 Maksimalt 20.000.<\/p>\n<p><b>MCh:<\/b> \u2013 Aha, 25! Desv\u00e6rre er vi der, hvor vi startede.<\/p>\n<p><b>MM:<\/b> \u2013 Hvad er der galt? Har I foretaget nogen diagnose?<\/p>\n<p><b>MCh:<\/b> \u2013 Ja, selvf\u00f8lgelig! Her, for eksempel, et interessant top:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/09ac3336a820977b643ee5328ad2a851.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Lad os tage et kig. Jeg kan se, at vi har fors\u00f8gt med en enorm m\u00e6ngde polling-tr\u00e5de:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/346e8047f1f6f2bb1b1dd91a728e437b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMen samtidig kunne vi ikke engang udnytte systemet halvt:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/be1843dbec0fb10d8da59e8c570adc5b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOg den samlede ydeevne er ret lav, omkring 4.000 metrics i sekundet:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/02eaf0b56629ebc6d3d5c132374a91b8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEr der noget andet?<\/p>\n<p><b>MCh:<\/b> \u2013 Ja, strace fra en af pollerne:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/73fc58bd2925859f6fbbcd118a0483c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Her kan man tydeligt se, at polling-processen venter p\u00e5 'semaforer'. Det er l\u00e5sninger:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/d0bec44a9677ec111066dccc1dd8c5dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MCh:<\/b> \u2013 Uforst\u00e5eligt.<\/p>\n<p><b>MM:<\/b> \u2013 Se, det ligner en situation, hvor en masse tr\u00e5de fors\u00f8ger at arbejde med en ressource, som kun \u00e9n kan arbejde med ad gangen. S\u00e5 alt, hvad de kan g\u00f8re, er at dele denne ressource over tid:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/7dbb9e8941b01b666dd48f6301151ec9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOg den samlede ydeevne ved arbejde med en s\u00e5dan ressource er begr\u00e6nset af hastigheden p\u00e5 \u00e9n kerne:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/e00b197577f4ea7350fe56665dbae299.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5dan et problem kan l\u00f8ses p\u00e5 to m\u00e5der.<\/p>\n<p>Opgradere maskinens hardware, skifte til hurtigere kerner:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/296d84b434ed7277fb558a8a4dd5ac47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEller \u00e6ndre arkitekturen og samtidig \u2013 belastningen:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/efea73106440db4e5eda5aa475dd088b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MCh:<\/b> \u2013 For \u00f8vrigt, p\u00e5 den testmaskine bruger vi f\u00e6rre kerner end p\u00e5 den produktionsmaskine, men de er 1,5 gange hurtigere i frekvens pr. kerne!<\/p>\n<p><b>MM:<\/b> \u2013 Forst\u00e5et? Vi m\u00e5 se p\u00e5 serverkoden.<\/p>\n<h3>Dataflowet i Zabbix-serveren<\/h3>\n<p>\n<b>MCh:<\/b> \u2013 For at finde ud af det, begyndte vi at analysere, hvordan data overf\u00f8res inden i 'Zabbix'-serveren:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/b3d84e3fcb12e7afe3c974bdeacc357a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn flot illustration, ikke? Lad os se p\u00e5 den trin for trin for at g\u00f8re det mere klart. Der er tr\u00e5de og tjenester, der er ansvarlige for indsamling af data:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/966db6fa84723d4d3bde8a23736294d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe indsamlede metrics sendes via en socket til Preprocessor manager, hvor de gemmes i en k\u00f8:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/1e34fe2c4194f7bd71ec409d6169fb94.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPreprocessor manageren sender dataene til sine arbejdere, som udf\u00f8rer forbehandlingsinstruktionerne og sender dem tilbage gennem den samme socket:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/d647caf3886f0c9378a32314e812edc1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEfter dette gemmer forbehandlingschefen dem i historikens cache:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/ff0e29b0d974d76bd3a3b71d36a1cc68.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDerfra hentes de af historik-synkere, der udf\u00f8rer en hel del funktioner: for eksempel trigonometrisk beregning, udfyldning af cachev\u00e6rdier og, vigtigst af alt, lagring af m\u00e5linger i historiklagringen. Generelt er processen kompleks og ret forvirrende.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n 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\u00f8rste, vi s\u00e5, var, at de fleste tr\u00e5de konkurrerede om den s\u00e5kaldte \"konfigurationscache\" (et hukommelsesomr\u00e5de, hvor alle serverkonfigurationer opbevares). Is\u00e6r mange l\u00e5sninger stammer fra tr\u00e5de, der er ansvarlige for at hente data:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/589d8f564ece6e63457450e9c5081b80.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026da konfigurationen ikke kun indeholder m\u00e5linger med deres parametre, men ogs\u00e5 k\u00f8er, hvorfra pollere henter information om, hvad de skal g\u00f8re n\u00e6ste gang. N\u00e5r der er mange pollere, og en l\u00e5ser konfigurationen, venter de andre p\u00e5 anmodninger:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/8026cdfcd7def84cb3708b7255b08c66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Pollere m\u00e5 ikke konflikte<\/h3>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/d436cd3415a6f58e1db5a609689c12b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5 det f\u00f8rste, vi gjorde, var at opdele k\u00f8en i 4 dele og tillade pollerne at l\u00e5se disse k\u00f8er, disse dele samtidigt under sikre forhold:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/9466e5f0053dff583e76713f10e30a89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDette fjernede konkurrencen om konfigurationscachen, og pollernes hastighed steg betydeligt. Men derefter st\u00f8dte vi p\u00e5, at forbehandlingschefen begyndte at opbygge en pulje af opgaver:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/dd58e625823310fb0a818ed81abdceac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Forbehandlingschefen skal kunne prioritere<\/h3>\n<p>\nDette skete i tilf\u00e6lde, hvor han manglede ydeevne. S\u00e5 alt, hvad han kunne g\u00f8re, var at samle anmodninger fra dataindsamlingsprocesserne og l\u00e6gge dem i en buffer indtil han fyldte al hukommelsen og gik ned:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/b215d880863d470ea6ca960c6338b8ae.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor at l\u00f8se dette problem tilf\u00f8jede vi en anden sokkel, der var dedikeret specifikt til arbejderne:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/09d1bb92a009f9d29ba68d966de54210.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDermed fik forbehandlingschefen mulighed for at prioritere sit arbejde, og i tilf\u00e6lde af at bufferen voksede, ville opgaven bremse indsamlingen og give arbejderne mulighed for at tage bufferen:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/8f4db3661c428e6e6dcfe4cc0c44c016.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDerefter opdagede vi, at en af \u00e5rsagerne til bremserne var selve arbejderne, da de konkurrerede om en ressource, der ikke var vigtig for deres arbejde. Dette problem blev l\u00f8st med en bug-fix, og i de nye versioner af \"Zabbix\" er det allerede afhjulpet:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/eedb359823dd23d369339e3735e341fb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Vi \u00f8ger antallet af sokler \u2013 vi f\u00e5r resultater<\/h3>\n<p>\nDern\u00e6st blev selve forbehandlingschefen et sn\u00e6vert punkt, da det er en enkelt tr\u00e5d. Den ramte hastigheden af kernen, hvilket gav en maksimal hastighed p\u00e5 cirka 70.000 m\u00e5linger pr. sekund:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/f93ccbc656c0f9e103873d99a9397495.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDerfor har vi lavet fire, med fire s\u00e6t af stik, arbejdere:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/81a3dea3aa0f8807add8d045cf64a609.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOg det har gjort det muligt at \u00f8ge hastigheden til cirka 130.000 metrikker:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/016ff07cd021a7221caef19e6ce36a9b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen ikke-line\u00e6re v\u00e6kst skyldes, at der er kommet konkurrence om cache-historikken. Fire pr\u00e6processormanager og history-synkere konkurrerede om det. P\u00e5 det tidspunkt opn\u00e5ede vi omkring 130.000 metrikker pr. sekund p\u00e5 testmaskinen, og udnyttede den cirka 95 % p\u00e5 CPU'en:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/62162254cd8bc66c1cef697158691588.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>For omkring 2,5 m\u00e5neder siden<\/i><\/p>\n<h3>Afskaffelse af snmp-community \u00f8gede NVP'erne med halvanden gang<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Max, jeg har brug for en ny testmaskine! Vi passer ikke l\u00e6ngere ind i den nuv\u00e6rende.<\/p>\n<p><b>MCh:<\/b> \u2013 Hvad har vi nu?<\/p>\n<p><b>MM:<\/b> \u2013 Lige nu \u2013 130k NVP'er og CPU'en \"i stedet\".<\/p>\n<p><b>MCh:<\/b> \u2013 Wow! Fantastisk! Vent, jeg har to sp\u00f8rgsm\u00e5l. If\u00f8lge mine beregninger har vi brug for omkring 15-20.000 metrikker pr. sekund. Hvorfor har vi brug for mere?<\/p>\n<p><b>MM:<\/b> \u2013 Jeg vil gerne g\u00f8re arbejdet helt f\u00e6rdigt. Jeg vil gerne se, hvor meget vi kan presse ud af dette system.<\/p>\n<p><b>MCh:<\/b> \u2013 Men\u2026<\/p>\n<p><b>MM:<\/b> \u2013 Men det er ubrugeligt for forretningen.<\/p>\n<p><b>MCh:<\/b> \u2013 Forst\u00e5et. Og det andet sp\u00f8rgsm\u00e5l: kan vi selv vedligeholde det, vi har nu, uden hj\u00e6lp fra udvikleren?<\/p>\n<p><b>MM:<\/b> \u2013 Jeg tror ikke det. \u00c6ndring af arbejdet med konfigurationscachen er et problem. Det involverer \u00e6ndringer i de fleste str\u00f8mme og er ret komplekst at vedligeholde. Det vil sandsynligvis v\u00e6re meget sv\u00e6rt at vedligeholde.<\/p>\n<p><b>MCh:<\/b> \u2013 S\u00e5 skal vi find en alternativ l\u00f8sning.<\/p>\n<p><b>MM:<\/b> \u2013 Der er en mulighed. Vi kan skifte til hurtige kerner, samtidig med at vi opgiver det nye l\u00e5sesystem. Vi vil stadig opn\u00e5 en ydeevne p\u00e5 60-80.000 metrikker. Samtidig kan vi bevare al anden kode. 'ClickHouse', asynkron polling vil fungere. Og det vil v\u00e6re nemt at vedligeholde.<\/p>\n<p><b>MCh:<\/b> \u2013 Fantastisk! Jeg foresl\u00e5r, at vi stopper her.<\/p>\n<p>Efter optimeringen af serverdelen kunne vi endelig lancerer den nye kode i produktion. Vi opgav nogle \u00e6ndringer til fordel for overgangen til en maskine med hurtige kerner og minimalisering af antallet af \u00e6ndringer i koden. Vi forenklede ogs\u00e5 konfigurationen og opgav makroer i datakomponenterne, n\u00e5r det var muligt, da de er kilden til yderligere blokeringer.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/2b1ed396b09bd815fba973ebb5f73d76.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor eksempel har afskaffelsen af den makro, der ofte findes i dokumentationen og eksemplerne, snmp-community, i vores tilf\u00e6lde tilladt yderligere at accelerere NVP'erne med cirka 1,5 gang.<\/p>\n<p><i>Efter to dage i produktion<\/i><\/p>\n<h3>Vi fjerner pop op-vinduerne for h\u00e6ndelseshistorik<\/h3>\n<p>\n<b>MCh:<\/b> \u2013 Misha, vi har brugt systemet i to dage, og det fungerer. Men kun n\u00e5r det fungerer! Vi havde planlagt vedligeholdelse med flytning af et ret stort netv\u00e6rkssegment, og vi kontrollerede manuelt, hvad der var oppe, og hvad der ikke var.<\/p>\n<p><b>MM:<\/b> \u2013 Det kan ikke v\u00e6re muligt! Vi har tjekket det 10 gange. Serveren h\u00e5ndterer selv en komplet netv\u00e6rksnedbrud \u00f8jeblikkeligt.<\/p>\n<p><b>MCh:<\/b> \u2013 Jeg forst\u00e5r det hele: server, database, top, austat, logs \u2013 alt g\u00e5r hurtigt\u2026 Men vi kigger p\u00e5 webgr\u00e6nsefladen, og der er CPU'en \"i hvile\" p\u00e5 serveren, og s\u00e5 er der dette:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/828a44d71f67ac585055bffcc01ab46e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Forst\u00e5et. Lad os kigge p\u00e5 web'en. Vi opdagede, at i situationer med mange aktive h\u00e6ndelser, begyndte de fleste operativwidgetter at k\u00f8re meget langsomt:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/22fdb735aa6136cd9967b40341d2a5cf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c5rsagen var genereringen af pop-up vinduer med h\u00e6ndelseshistorik, der genereres for hvert element i listen. Derfor stoppede vi med at generere disse vinduer (vi kommenterede 5 linjer i koden), og det l\u00f8ste vores problemer.<\/p>\n<p>Indl\u00e6sningstiden for widgetter selv ved komplet nedbrud reduceredes fra flere minutter til acceptable 10-15 sekunder for os, og historien kan stadig ses med et klik p\u00e5 tiden:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/d15341ce76578880a23651a7a68dd802.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Efter arbejdet. For 2 m\u00e5neder siden<\/i><\/p>\n<p><b>MCh:<\/b> \u2013 Misha, g\u00e5r du? Vi skal tale.<\/p>\n<p><b>MM:<\/b> \u2013 Jeg havde ikke t\u00e6nkt mig det. Er der igen noget med \"Zabbix\"?<\/p>\n<p><b>MCh:<\/b> \u2013 Nej, slap af! Jeg ville bare sige: alt fungerer, tak! \u00d8l p\u00e5 mig.<\/p>\n<h3>Zabbix er effektivt<\/h3>\n<p>\n\"Zabbix\" er et ret universelt og rigt system og funktion. Det kan sagtens bruges til sm\u00e5 installationer \"out of the box\", men med voksende behov skal det optimeres. Brug et passende lager til at opbevare et stort arkiv af m\u00e5linger:<\/p>\n<ul>\n<li>du kan bruge de indbyggede v\u00e6rkt\u00f8jer i form af integration med \"Elasticsearch\" eller eksportere historikken til tekstfiler (tilg\u00e6ngeligt fra fjerde version);<\/li>\n<li>du kan dra nytte af vores erfaring og integration med \"ClickHouse\".<\/li>\n<\/ul>\n<p>\nFor at radikalt \u00f8ge hastigheden af dataindsamling, saml dem med asynkrone metoder og overf\u00f8r dem via trapper-interface til \"Zabbix\"-serveren; eller du kan bruge en patch til asynkronitet for selve \"Zabbix\"'s pollere.<\/p>\n<p>\u00abZabbix\u00bb er skrevet i C og er ret effektiv. Nogle l\u00f8sninger p\u00e5 smalle arkitektoniske steder g\u00f8r det muligt at \u00f8ge dens ydeevne yderligere, og efter vores erfaring kan man f\u00e5 mere end 100.000 metrikker p\u00e5 en enkeltprocessor-maskine.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/46559b481b5e53dc3cc3d2562a94531d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Den samme Zabbix-patch<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Jeg vil gerne tilf\u00f8je et par punkter. Hele den nuv\u00e6rende pr\u00e6sentation, alle testene, tallene er givet for den konfiguration, vi bruger. Fra den tager vi nu cirka 20.000 metrikker i sekundet. Hvis du fors\u00f8ger at forst\u00e5, om det vil fungere for dig \u2013 kan du sammenligne. Det, vi har pr\u00e6senteret i dag, er tilg\u00e6ngeligt 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++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/e5880b2f01cb03809057db08306b23c7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPatchen inkluderer:<\/p>\n<ul>\n<li>fuld integration med \u00abClickHouse\u00bb (b\u00e5de Zabbix-servere og frontend);<\/li>\n<li>l\u00f8sning af problemer med pr\u00e6processor-manageren;<\/li>\n<li>asynkron polling.<\/li>\n<\/ul>\n<p>\nPatchen er kompatibel med hele version 4, inklusive lts. Sandsynligvis vil den fungere med minimale \u00e6ndringer p\u00e5 version 3.4.<\/p>\n<p>Tak for opm\u00e6rksomheden.<\/p>\n<h3>Sp\u00f8rgsm\u00e5l<\/h3>\n<p>\nSp\u00f8rgsm\u00e5l fra publikum (herefter \u2013 A): \u2013 Goddag! Kan I fort\u00e6lle mig, om I har planer om intenst samarbejde med Zabbix-teamet eller de med jer, s\u00e5 dette ikke vil v\u00e6re en patch, men et normalt adf\u00e6rd for \u00abZabbix\u00bb?<\/p>\n<p><b>MM:<\/b> \u2013 Ja, nogle \u00e6ndringer vil vi helt sikkert commite. Nogle ting vil blive, som de er, i patchen.<\/p>\n<p><b>A:<\/b> \u2013 Tusind tak for en fremragende pr\u00e6sentation! Kan I fort\u00e6lle mig, efter anvendelse af patchen, vil st\u00f8tten fra \u00abZabbix\u00bb forblive, og hvordan kan man derefter opgradere til h\u00f8jere versioner? Vil det v\u00e6re muligt at opgradere \u00abZabbix\u00bb til 4.2, 5.0 efter jeres patch?<\/p>\n<p><b>MM:<\/b> \u2013 Om support kan jeg ikke sige. Hvis jeg var support for \u00abZabbix\u00bb, ville jeg sandsynligvis sige nej, fordi det er anden parts kode. Hvad ang\u00e5r kodebasen 4.2, er vores position s\u00e5dan: \u00abVi vil f\u00f8lge med tiden og selv opgradere til den n\u00e6ste version\u00bb. Derfor vil vi i et stykke tid udgive patchen til de opdaterede versioner. Jeg sagde allerede i pr\u00e6sentationen: Antallet af \u00e6ndringer mellem versionerne er indtil videre ret lille. Jeg tror, at overgangen fra 3.4 til 4 tog os cirka 15 minutter. Der \u00e6ndrede sig lidt, men ikke noget vigtigt.<\/p>\n<p><b>A:<\/b> \u2013 S\u00e5 I planl\u00e6gger at st\u00f8tte jeres patch, og man kan trygt installere det i produktionen, og senere f\u00e5 opdateringer p\u00e5 en eller anden m\u00e5de?<\/p>\n<p><b>MM:<\/b> \u2013 Vi anbefaler det kraftigt. Det l\u00f8ser mange problemer for os.<\/p>\n<p><b>MCh:<\/b> \u2013 Jeg vil endnu engang understrege, at \u00e6ndringer, der ikke vedr\u00f8rer arkitekturen og ikke involverer blokeringer eller k\u00f8er, de er modulerede, de er i separate moduler. Selv ved mindre \u00e6ndringer kan de holdes ret nemt.<\/p>\n<p><b>MM:<\/b> \u2013 Hvis du er interesseret i detaljerne, s\u00e5 bruger \u00abKlikhaus\u00bb det s\u00e5kaldte historiebibliotek. Det er adskilt \u2013 det er en kopi af \u00abElastix\u00bb's st\u00f8tte, det vil sige, det kan konfigureres. Polling \u00e6ndrer kun pollere. Vi mener, at det vil fungere i lang tid.<\/p>\n<p><b>A:<\/b> \u2013 Mange tak. Kan du fort\u00e6lle, om der findes nogen dokumentation for de foretagne \u00e6ndringer?<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mikhail Makurov, Maksim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server\" src=\"\/wp-content\/uploads\/2020\/02\/f3842ba578f736721c96794941b8f071.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Dokumentationen er et patch. Det er \u00e5benlyst, at med introduktionen af \u00abKlikhaus\u00bb, med indf\u00f8relsen af nye typer pollere, opst\u00e5r der nye konfigurationsmuligheder. Der er et kort beskrivelser i linket fra den sidste slide, om hvordan man bruger dette.<\/p>\n<h3>Om udskiftning af fping med nmap<\/h3>\n<p>\n<b>A:<\/b> \u2013 Hvordan har I i sidste ende implementeret dette? Kan du give konkrete eksempler: bruger I strappere og et eksternt script? Hvad kontrollerer s\u00e5 hurtigt et s\u00e5 stort antal v\u00e6rter? Hvordan f\u00e5r I de v\u00e6rter? Skal man p\u00e5 en eller anden m\u00e5de fodre nmap med dem, f\u00e5 dem fra et sted, l\u00e6gge dem ind, starte noget op?..<\/p>\n<p><b>MM:<\/b> \u2013 Fedt. Meget relevant sp\u00f8rgsm\u00e5l! Essensen er denne. Vi har modificeret biblioteket (ICMP ping, en del af \u00abZabbix\u00bb) til ICMP-tjek, hvor antallet af pakker er \u00e9n (1), og koden fors\u00f8ger at bruge nmap. S\u00e5 det er Zabbix' interne arbejde, det er blevet til pingers interne arbejde. Derfor kr\u00e6ves der ingen synkronisering eller brug af en trapper. Dette blev gjort bevidst for at bevareystemet intakt og undg\u00e5 at synkronisere to systemer, som skal kontrolleres, uploads via polleren, og om vores upload er brudt?.. Det er meget enklere.<\/p>\n<p><b>A:<\/b> \u2013 G\u00e6lder dette ogs\u00e5 for proxy?<\/p>\n<p><b>MM:<\/b> \u2013 Ja, men vi har ikke testet det. Koden til polling er den samme i b\u00e5de Zabbix og serveren. Det burde fungere. Jeg vil endnu en gang understrege: systemets ydeevne er s\u00e5dan, at vi ikke har brug for en proxy.<\/p>\n<p><b>MCh:<\/b> \u2013 Det rigtige svar p\u00e5 sp\u00f8rgsm\u00e5let er: \u00abHvorfor har I brug for en proxy med et s\u00e5dant system?\u00bb Kun p\u00e5 grund af NAT eller for at overv\u00e5ge gennem en langsom kanal\u2026<\/p>\n<p><b>A:<\/b> \u2013 Og bruger I \u00abZabbix\u00bb som alerter, hvis jeg har forst\u00e5et det korrekt? Eller er grafikkerne (hvor det arkiverede lag er) flyttet til et andet system, som Grafana? Eller bruger I ikke denne funktion?<\/p>\n<p><b>MM:<\/b> \u2013 Jeg vil endnu en gang understrege: vi har gennemf\u00f8rt fuld integration. Vi sender historikken til \u2018Clickhouse\u2019, men har samtidig \u00e6ndret PHP-frontenden. PHP-frontenden henter data fra \u2018Clickhouse\u2019 og laver alle grafer derfra. \u00c6rligt talt har vi ogs\u00e5 en del, der bygger data i andre grafiske systemer baseret p\u00e5 de samme data fra \u2018Zabbix\u2019.<\/p>\n<p><b>MCh:<\/b> \u2013 Inkluderet i \u2018Grafana\u2019.<\/p>\n<h3>Hvordan blev beslutningen om tildeling af ressourcer truffet?<\/h3>\n<p>\n<b>A:<\/b> \u2013 Del lidt af den interne proces. Hvordan blev beslutningen om at tildele ressourcer til en seri\u00f8s omarbejdning af produktet truffet? Det indeb\u00e6rer jo visse risici. Og fort\u00e6l mig venligst i forhold til at I planl\u00e6gger at st\u00f8tte nye versioner: hvordan retf\u00e6rdigg\u00f8res denne beslutning i forhold til ledelsen?<\/p>\n<p><b>MM:<\/b> \u2013 Tilsyneladende har vi ikke fortalt dramaet i historien s\u00e6rlig godt. Vi befandt os i en situation, hvor der skulle g\u00f8res noget, og vi gik i praksis med to parallelle teams:<\/p>\n<ul>\n<li>Det ene arbejdede p\u00e5 at lancere et overv\u00e5gningssystem med nye metoder: overv\u00e5gning som en service, et standard s\u00e6t af open source-l\u00f8sninger, som vi kombinerer og derefter fors\u00f8ger at \u00e6ndre forretningsprocesserne for at arbejde med det nye overv\u00e5gningssystem.<\/li>\n<li>Samtidig havde vi en entusiastisk programm\u00f8r, der besk\u00e6ftigede sig med det (om sig selv). Det viste sig, at han vandt.<\/li>\n<\/ul>\n<p>\n<b>A:<\/b> \u2013 Og hvad er teamets st\u00f8rrelse?<\/p>\n<p><b>MCh:<\/b> \u2013 De st\u00e5r foran jer.<\/p>\n<p><b>A:<\/b> \u2013 S\u00e5 som altid er der brug for en passioneret leder?<\/p>\n<p><b>MM:<\/b> \u2013 Jeg ved ikke, hvad en passioneret leder er.<\/p>\n<p><b>A:<\/b> \u2013 I det tilf\u00e6lde, ser det ud til, at det er dig. Mange tak, I er fantastiske.<\/p>\n<p><b>MM:<\/b> \u2013 Tak.<\/p>\n<h3>Om patches til Zabbix<\/h3>\n<p>\n<b>A:<\/b> \u2013 For et system, der bruger proxy (for eksempel i nogle distribuerede systemer), er det muligt at tilpasse og patch dine l\u00f8sninger, lad os sige, pullere, proxy og delvist pr\u00e6processor for selve \u2018Zabbix\u2019; og deres interaktion? Er det muligt at optimere de eksisterende l\u00f8sninger til et system med flere proxyer?<\/p>\n<p><b>MM:<\/b> \u2013 Jeg ved, at \u2018Zabbix\u2019-serveren bygges med hj\u00e6lp fra proxy (kompileres og koden genereres). Vi har ikke testet dette i produktion. Jeg er ikke sikker p\u00e5 det, men efter min mening bruges pr\u00e6processor-manager ikke i proxy. Proxyens opgave er at tage et s\u00e6t metric fra \u2018Zabbix\u2019, indsamle dem (den registrerer ogs\u00e5 konfigurationen, den lokale database) og sende dem tilbage til \u2018Zabbix\u2019-serveren. Pr\u00e6processeringen vil blive udf\u00f8rt af serveren selv, n\u00e5r den modtager dataene.<\/p>\n<p>Interessen for proxy er forst\u00e5elig. Vi vil unders\u00f8ge det. Det er et interessant emne.<\/p>\n<p><b>A:<\/b> \u2013 Ideen var, at hvis man kan patche pollere, kan man patche dem til proxy og tilpasse interaktionen med serveren, og preprocessoren kun tilpasse disse form\u00e5l p\u00e5 serveren.<\/p>\n<p><b>MM:<\/b> \u2013 Jeg tror, det er faktisk enklere. Du tager koden, anvender patchen, konfigurerer som du \u00f8nsker \u2013 samler proxy-servere (for eksempel med ODBC) og distribuerer den patcherede kode til systemerne. Hvor det er n\u00f8dvendigt, samler du proxy, hvor det er n\u00f8dvendigt, server.<\/p>\n<p><b>A:<\/b> \u2013 Skal man ikke ogs\u00e5 patch overf\u00f8rslen af proxy til serveren, sandsynligvis?<\/p>\n<p><b>MCh:<\/b> \u2013 Nej, det er standard.<\/p>\n<p><b>MM:<\/b> \u2013 Faktisk l\u00f8d det ikke som en af id\u00e9erne. Vi har altid str\u00e6bt efter at opretholde en balance mellem ideernes eksplosion og antallet af \u00e6ndringer, nemhedsgraden ved vedligeholdelse.<\/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=\"Afspil 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>Lidt reklame \ud83d\ude42<\/h3>\n<p>\nTak fordi du bliver hos os. Kan du lide vores artikler? \u00d8nsker du at se flere interessante materialer? St\u00f8t os ved at bestille eller anbefale os til dine bekendte, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">cloud VPS til udviklere fra 4,99 $<\/a><\/noindex>, <b>en unik analog til entry-level servere, som vi har designet til dig:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Alt om VPS (KVM) E5-2697 v3 (6 kerner) 10 GB DDR4 480 GB SSD 1 Gbps fra 19 $ eller hvordan man deler serveren korrekt?<\/a><\/noindex> (tilg\u00e6ngelige muligheder med RAID1 og RAID10, op til 24 kerner og op til 40 GB DDR4).<\/p>\n<p><b>Dell R730xd til halv pris i datacenteret Equinix Tier IV i Amsterdam?<\/b> Kun hos os <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 fra 199 $<\/a><\/noindex> i Holland! <b>Dell R420 - 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - fra 99 $!<\/b><\/b> L\u00e6s om hvordan <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">man bygger enterprise-infrastruktur ved hj\u00e6lp af Dell R730xd E5-2650 v4 servere til 9000 euro for en br\u00f8kdel af prisen?<\/a><\/noindex><br \/>\n<br \/>Kilde: <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.3 - 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\/da\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS p\u00e5 \u00e9n server | ProHoster","description":"Den n\u00e6ste HighLoad++ konference finder sted den 6. og 7. april 2020 i St. Petersborg. Detaljer og billetter findes via linket.","canonical_url":"https:\/\/prohoster.info\/da\/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":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/56049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=56049"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/56049\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=56049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=56049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=56049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}