HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Déi nächst HighLoad++ Konferenz gëtt de 6. a 7. Abrëll 2020 zu St. Link. HighLoad++ Moskau 2018. Hall "Moskau". 9. November, 15:00. Theses et Presentatioun.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

* Iwwerwaachung - online an Analyse.
* Basis Aschränkungen vun der ZABBIX Plattform.
* Léisung fir d'Analytikspäicherung ze skaléieren.
* Optimiséierung vum ZABBIX Server.
* UI Optimisatioun.
* Erlieft de System ënner Laascht vu méi wéi 40k NVPS ze bedreiwen.
* Kuerz Conclusiounen.

Mikhail Makurov (nodréiglech - MM): - Moien alleguer!

Maxim Chernetsov (nach – MCH): - Gudde Mëtteg!

MM: – Loosst mech de Maxim virstellen. De Max ass en talentéierten Ingenieur, dee beschten Netzwierker deen ech kennen. Maxim ass an Netzwierker a Servicer, hir Entwécklung an Operatioun involvéiert.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MCH: - An ech wéilt Iech iwwer Mikhail soen. De Mikhail ass en C Entwéckler. Hien huet e puer High-load Verkéiersveraarbechtungsléisungen fir eis Firma geschriwwen. Mir liewen a schaffen am Urals, an der Stad vun haarde Männer Chelyabinsk, an der Firma Intersvyaz. Eis Firma ass e Fournisseur vun Internet- a Kabelfernsehservicer fir eng Millioun Leit a 16 Stied.

MM: - An et ass derwäert ze soen datt Intersvyaz vill méi ass wéi nëmmen e Provider, et ass eng IT Firma. Déi meescht vun eise Léisunge gi vun eisem IT Departement gemaach.

A: vu Serveren, déi Traffic veraarbecht hunn, zu engem Call Center an enger mobiler Applikatioun. D'IT Departement huet elo eng 80 Leit mat ganz, ganz verschiddenste Kompetenzen.

Iwwer Zabbix a seng Architektur

MCH: - An elo probéieren ech e perséinleche Rekord opzestellen an an enger Minutt ze soen wat den Zabbix ass (nodréiglech als "Zabbix" bezeechent).

Zabbix positionéiert sech als Entreprise-Niveau Out-of-the-Box Iwwerwaachungssystem. Et huet vill Funktiounen, déi d'Liewen méi einfach maachen: fortgeschratt Eskalatiounsregelen, API fir Integratioun, Gruppéierung an Auto-Detektioun vu Hosten a Metriken. Zabbix huet sougenannte Scaling Tools - Proxyen. Zabbix ass en Open Source System.

Kuerz iwwer Architektur. Mir kënne soen datt et aus dräi Komponenten besteet:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

  • Server. Geschriwwen an C. Mat zimlech komplexer Veraarbechtung an Transfert vun Informatioun tëscht Threads. All Veraarbechtung fënnt an der Plaz statt: vum Empfang bis an d'Datebank späicheren.
  • All Daten ginn an der Datebank gespäichert. Zabbix ënnerstëtzt MySQL, PostreSQL an Oracle.
  • De Webinterface ass a PHP geschriwwen. Op de meeschte Systemer kënnt et mat engem Apache Server, awer funktionnéiert méi effizient a Kombinatioun mat nginx + php.

Haut wëlle mir eng Geschicht aus dem Liewen vun eiser Firma am Zesummenhang mat Zabbix erzielen ...

Eng Geschicht aus dem Liewen vun der Firma Intersvyaz. Wat hu mir a wat brauche mir?

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server
Virun 5 oder 6 Méint. Een Dag no der Aarbecht...

MCH: - Misha, Moien! Ech si frou, datt ech et fäerdeg bruecht hunn dech ze fänken - et gëtt e Gespréich. Mir haten erëm Problemer mat der Iwwerwaachung. Bei engem groussen Accident war alles lues an et gouf keng Informatioun iwwer den Zoustand vum Netz. Leider ass dëst net déi éischte Kéier datt dëst geschitt ass. Ech brauch deng Hëllef. Loosst eis Iwwerwachung ënner all Ëmstänn funktionnéieren!

MM: - Ma loosst eis als éischt synchroniséieren. Ech hunn zënter e puer Joer net méi do gekuckt. Souwäit ech mech erënneren, hu mir Nagios opginn a virun ongeféier 8 Joer op Zabbix gewiesselt. An elo schénge mir 6 mächteg Serveren an ongeféier eng Dosen Proxyen ze hunn. Duercherneen ech eppes?

MCH: - Bal. 15 Serveren, e puer vun deenen sinn virtuell Maschinnen. Dat Wichtegst ass datt et eis net am Moment rett wou mir et am meeschte brauchen. Wéi en Accident - d'Server verlangsamt an Dir kënnt näischt gesinn. Mir hu probéiert d'Konfiguratioun ze optimiséieren, awer dëst huet net déi optimal Leeschtungserhéijung geliwwert.

MM: - Et ass kloer. Hutt Dir eppes gekuckt, hutt Dir schonn eppes aus der Diagnostik erausgegruewen?

MCH: - Dat éischt wat Dir maache musst ass d'Datebank. MySQL gëtt dauernd gelueden, späichert nei Metriken, a wann Zabbix ufänkt eng Rëtsch Eventer ze generéieren, geet d'Datebank wuertwiertlech e puer Stonnen an Overdrive. Ech hunn Iech scho gesot iwwer d'Optimiséierung vun der Konfiguratioun, awer wuertwiertlech dëst Joer hunn se d'Hardware aktualiséiert: d'Server hunn méi wéi honnert Gigabytes Erënnerung an Disk Arrays op SSD RAIDs - et ass kee Sënn fir se op laang Siicht linear ze wuessen. Wat maache mir?

MM: - Et ass kloer. Am Allgemengen ass MySQL eng LTP Datebank. Anscheinend ass et net méi gëeegent fir en Archiv vu Metriken vun eiser Gréisst ze späicheren. Loosst eis et erausfannen.

MCH: - Loosst eis!

Integratioun vun Zabbix a Clickhouse als Resultat vum Hackathon

No enger Zäit krute mir interessant Daten:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

De gréissten Deel vum Raum an eiser Datebank gouf vum Metrikenarchiv besat a manner wéi 1% gouf fir Konfiguratioun, Templates an Astellunge benotzt. Zu där Zäit hu mir d'Big Data Léisung baséiert op Clickhouse fir méi wéi engem Joer operéiert. D'Bewegungsrichtung war eis kloer. Bei eisem Fréijoer Hackathon hunn ech d'Integratioun vu Zabbix mat Clickhouse fir de Server a Frontend geschriwwen. Zu där Zäit hat Zabbix schonn Ënnerstëtzung fir ElasticSearch, a mir hu beschloss se ze vergläichen.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Verglach vu Clickhouse an Elasticsearch

MM: - Zum Verglach hu mir déiselwecht Laascht generéiert wéi den Zabbix Server ubitt a gekuckt wéi d'Systemer sech behuelen. Mir hunn Daten a Chargen vun 1000 Zeilen geschriwwen, mat CURL. Mir hunn am Viraus ugeholl datt Clickhouse méi effizient wier fir de Laaschtprofil deen Zabbix mécht. D'Resultater hunn souguer eis Erwaardungen iwwerschratt:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Ënnert déiselwecht Testbedéngungen huet Clickhouse dräimol méi Daten geschriwwen. Zur selwechter Zäit hu béid Systemer ganz effizient verbraucht (eng kleng Quantitéit u Ressourcen) beim Liesen vun Daten. Awer Elastik erfuerdert eng grouss Quantitéit u Prozessor beim Opnam:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Am Ganzen war Clickhouse wesentlech besser wéi Elastix wat de Prozessorverbrauch a Geschwindegkeet ugeet. Zur selwechter Zäit, duerch Datekompressioun, benotzt Clickhouse 11 Mol manner op der Festplack a mécht ongeféier 30 Mol manner Diskoperatiounen:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MCH: - Jo, d'Aarbecht vum Clickhouse mam Disk Subsystem ass ganz effizient ëmgesat. Dir kënnt rieseg SATA Scheiwen fir Datenbanken benotzen a Schreifgeschwindegkeet vun Honnerte vun Dausende vu Linnen pro Sekonn kréien. Den Out-of-the-Box System ënnerstëtzt Sharding, Replikatioun an ass ganz einfach ze konfiguréieren. Mir si méi wéi zefridden mat senger Notzung am ganze Joer.

Fir Ressourcen ze optimiséieren, kënnt Dir Clickhouse nieft Ärer existenter Haaptdatenbank installéieren an doduerch vill CPU-Zäit an Diskoperatiounen spueren. Mir hunn den Archiv vu Metriken op existent Clickhouse Cluster geplënnert:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Mir hunn d'Haapt MySQL Datebank sou vill erliichtert datt mir et op enger Maschinn mam Zabbix Server kombinéiere konnten an den dedizéierten Server fir MySQL opginn.

Wéi funktionnéiert d'Wahle zu Zabbix?

4 Méint

MM: - Ma, kënne mir iwwer d'Problemer mat der Basis vergiessen?

MCH: - Dat ass sécher! En anere Problem dee mir musse léisen ass lues Datensammlung. Elo sinn all eis 15 Proxy Serveren iwwerlaascht mat SNMP a Pollingprozesser. An et gëtt kee Wee ausser fir nei an nei Serveren z'installéieren.

MM: - Super. Awer als éischt, sot eis wéi d'Wahle funktionnéiert an Zabbix?

MCH: - Kuerz gesot, et ginn 20 Aarte vu Metriken an eng Dose Weeër fir se ze kréien. Zabbix kann Daten entweder am "Request-Response" Modus sammelen, oder op nei Daten duerch den "Trapper Interface" waarden.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Et ass derwäert ze bemierken datt am Original Zabbix dës Method (Trapper) déi séierst ass.

Et gi Proxy-Server fir d'Laaschtverdeelung:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Proxies kënnen déiselwecht Sammlungsfunktiounen wéi den Zabbix Server ausféieren, Aufgaben dovunner kréien an déi gesammelt Metriken duerch d'Trapper Interface schécken. Dëst ass déi offiziell recommandéiert Manéier fir d'Laascht ze verdeelen. Proxies sinn och nëtzlech fir d'Iwwerwaachung vun der Ferninfrastruktur, déi duerch NAT oder e luesen Kanal funktionnéiert:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MM: - Alles ass kloer mat der Architektur. Mir mussen d'Quelle kucken ...

E puer Deeg méi spéit

D'Geschicht vu wéi nmap fping gewonnen huet

MM: "Ech mengen, ech hunn eppes gegruewen."

MCH: - Ziel mir!

MM: - Ech hunn entdeckt datt wann Dir Disponibilitéit iwwerpréift, Zabbix iwwerpréift maximal 128 Hosten gläichzäiteg. Ech hu probéiert dës Zuel op 500 ze erhéijen an den Inter-Paket-Intervall an hirem Ping (Ping) ze läschen - dëst huet d'Performance verduebelt. Awer ech hätt gär méi grouss Zuelen.

MCH: - A menger Praxis muss ech heiansdo d'Disponibilitéit vun Dausende vu Hosten iwwerpréiwen, an ech hunn ni eppes méi séier wéi nmap fir dëst gesinn. Ech si sécher datt dëst de schnellsten Wee ass. Loosst eis et probéieren! Mir mussen d'Zuel vun de Hosten pro Iteratioun wesentlech erhéijen.

MM: - Check méi wéi fënnef honnert? 600?

MCH: - Op d'mannst e puer dausend.

MM: - OK. Dat Wichtegst wat ech wollt soen ass datt ech fonnt hunn datt déi meescht Ëmfroen zu Zabbix synchron gemaach ginn. Mir mussen et definitiv op asynchrone Modus änneren. Da kënne mir d'Zuel vun de Metriken, déi vu Poller gesammelt ginn, dramatesch erhéijen, besonnesch wa mir d'Zuel vun de Metriken pro Iteratioun erhéijen.

MCH: - Super! A wéini?

MM: - Wéi gewinnt, gëschter.

MCH: - Mir verglach béid Versioune vu fping an nmap:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Op enger grousser Zuel vu Hosten gouf nmap erwaart bis zu fënnef Mol méi effektiv ze sinn. Zënter nmap kontrolléiert nëmmen d'Disponibilitéit an d'Äntwertzäit, hu mir d'Berechnung vun de Verloschter op Ausléiser geplënnert an d'Disponibilitéitskontrollintervaller wesentlech reduzéiert. Mir hunn déi optimal Zuel vu Hosten fir nmap fonnt fir ongeféier 4 Tausend pro Iteratioun ze sinn. Nmap huet eis erlaabt d'CPU Käschte vun Disponibilitéitskontrollen ëm dräimol ze reduzéieren an den Intervall vun 120 Sekonnen op 10 ze reduzéieren.

Polling Optimisatioun

MM: "Da hu mir ugefaang Poller ze maachen. Mir waren haaptsächlech interesséiert SNMP Detektioun an Agenten. Am Zabbix gëtt d'Polling synchron gemaach a speziell Moossname gi geholl fir d'Effizienz vum System ze erhéijen. Am Synchrone Modus verursaacht Hostunverfügbarkeet eng bedeitend Ëmfrodegradatioun. Et gëtt e ganze System vu Staaten, et gi speziell Prozesser - déi sougenannte onerreechbar Poller, déi nëmme mat onerreechbaren Hosten funktionnéieren:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Dëst ass e Kommentar, deen d'Staatsmatrix beweist, all d'Komplexitéit vum System vun Iwwergäng, déi néideg sinn fir datt de System effektiv bleift. Zousätzlech ass d'synchron Ëmfro selwer zimlech lues:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Dofir konnten Dausende vu Pollerstreamen op Dosende vu Proxyen net déi néideg Quantitéit un Daten fir eis sammelen. D'asynchron Ëmsetzung huet net nëmmen d'Problemer mat der Unzuel vun de Threads geléist, awer och de Staatssystem vun net verfügbare Hosten vereinfacht, well fir all Zuel, déi an enger Ëmfro-Iteratioun gepréift gëtt, war déi maximal Waardezäit 1 Timeout:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Zousätzlech hu mir de Wahlsystem fir SNMP Ufroe geännert a verbessert. De Fakt ass datt déi meescht Leit net op verschidde SNMP Ufroe zur selwechter Zäit äntweren kënnen. Dofir hu mir en Hybrid Modus gemaach, wann SNMP Polling vum selwechte Host asynchron gemaach gëtt:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Dëst gëtt fir de ganze Pack vu Hosten gemaach. Dëse Modus ass schlussendlech net méi lues wéi e komplett asynchronen, well d'Ëmfro vun annerhallefhonnert SNMP Wäerter nach ëmmer vill méi séier ass wéi 1 Timeout.

Eis Experimenter hu gewisen datt déi optimal Unzuel vun Ufroen an enger Iteratioun ongeféier 8 Tausend mat SNMP Polling ass. Am Ganzen huet den Iwwergank zum asynchrone Modus eis erlaabt d'Performance vun der Polling ëm 200 Mol, e puer honnert Mol ze beschleunegen.

MCH: - Déi doraus resultéierend Ëmfro Optimisatiounen gewisen, datt mir net nëmmen all Proxy lass kann, mä och d'Intervalle fir vill Kontrollen reduzéieren, an Proxy wäert net méi gebraucht ginn als Manéier d'Laascht ze deelen.

Virun ongeféier dräi Méint

Ännert d'Architektur - erhéicht d'Laascht!

MM: - Ma, Max, ass et Zäit fir produktiv ze ginn? Ech brauch e mächtege Server an e gudden Ingenieur.

MCH: - Okay, loosst eis et plangen. Et ass héich Zäit aus dem Doudege Punkt vun 5 dausend Metriken pro Sekonn ze plënneren.

Moien no der Upgrade

MCH: - Misha, mir hunn eis aktualiséiert, awer de Moien hu mir eis zréck gerullt ... Guess wéi eng Geschwindegkeet mir et fäerdeg bruecht hunn?

MM: - 20 dausend maximal.

MCH: -jo, 25! Leider si mir richteg wou mer ugefaang hunn.

MM: - Firwat? Hutt Dir eng Diagnostik gemaach?

MCH: - Jo, sécher! Hei ass zum Beispill eng interessant Top:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MM: - Loosst eis kucken. Ech gesinn datt mir eng riesech Unzuel vu Wahlbefehle probéiert hunn:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Awer gläichzäiteg konnten se de System net souguer ëm d'Halschent recycléieren:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

An d'Gesamtleeschtung ass relativ kleng, ongeféier 4 dausend Metriken pro Sekonn:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Gëtt et nach eppes?

MCH: – Jo, Strace vun engem vun de Poller:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MM: – Hei gesitt Dir kloer, datt de Wahlprozess op "Semaphoren" waart. Dëst sinn d'Schlässer:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MCH: - Onkloer.

MM: - Kuckt, dëst ass ähnlech wéi eng Situatioun wou eng Rëtsch Threads probéieren mat Ressourcen ze schaffen, mat deenen nëmmen een gläichzäiteg ka schaffen. Dann alles wat se maache kënnen ass dës Ressource iwwer Zäit ze deelen:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

An d'Gesamtleeschtung vun der Aarbecht mat esou enger Ressource ass limitéiert duerch d'Geschwindegkeet vun engem Kär:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Et ginn zwou Méiglechkeeten dëse Problem ze léisen.

Upgrade d'Hardware vun der Maschinn, schalt op méi séier Cores:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Oder d'Architektur änneren a gläichzäiteg d'Laascht änneren:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MCH: - Iwwregens, op der Testmaschinn benotze mir manner Käre wéi op der Kampf, awer si sinn 1,5 Mol méi séier an der Frequenz pro Kär!

MM: - Kloer? Dir musst de Servercode kucken.

Datewee am Zabbix Server

MCH: - Fir et erauszefannen, hu mir ugefaang ze analyséieren wéi Daten am Zabbix Server transferéiert ginn:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Cool Bild, richteg? Loosst eis et Schrëtt fir Schrëtt duerchgoen fir et méi oder manner kloer ze maachen. Et gi thread a Servicer verantwortlech fir Daten ze sammelen:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Si iwwerdroen déi gesammelt Metriken iwwer e Socket un de Preprocessor Manager, wou se an enger Schlaang gespäichert ginn:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

De "Preprocessor Manager" iwwerdréit Daten un seng Aarbechter, déi Virveraarbechtungsinstruktiounen ausféieren an se duerch déiselwecht Socket zréckginn:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Duerno späichert de Preprocessor Manager se am Geschicht Cache:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Vun do aus gi se vu Geschichtsinker geholl, déi zimmlech vill Funktiounen ausféieren: zum Beispill Ausrechnung auszerechnen, de Wäertcache ausfëllen an am wichtegsten Metriken an der Geschichtspäicherung späicheren. Am Allgemengen ass de Prozess komplex a ganz konfus.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MM: - Déi éischt Saach, déi mir gesinn hunn, war datt déi meescht Threads fir de sougenannten "Configuration Cache" konkurréiere (d'Erënnerungsgebitt wou all Serverkonfiguratioune gespäichert sinn). Threads verantwortlech fir Daten ze sammelen maachen besonnesch vill Blockéierung:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

... well d'Konfiguratioun späichert net nëmmen Metriken mat hiren Parameteren, mee och Schlaangen, aus deenen d'Poller Informatiounen iwwerhuelen, wat se duerno maache sollen. Wann et vill Poller sinn an een d'Konfiguratioun blockéiert, waarden déi aner op Ufroen:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Poller sollen net konflikt

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Dofir ass dat éischt wat mir gemaach hunn, d'Schlaang an 4 Deeler opzedeelen an erlaabt Poller dës Schlaangen ze blockéieren, dës Deeler gläichzäiteg, ënner séchere Konditiounen:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Dëst huet d'Konkurrenz fir de Konfiguratiounscache ewechgeholl, an d'Geschwindegkeet vun de Poller ass wesentlech eropgaang. Awer dunn hu mir d'Tatsaach begéint datt de Preprocessor Manager ugefaang eng Schlaang vun Aarbechtsplazen ze sammelen:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Preprocessor Manager muss Prioritéit kënnen

Dëst geschitt a Fäll wou hien Leeschtung feelt. Dann alles wat hie konnt maachen war Ufroe vun Datesammlungsprozesser sammelen an hire Puffer derbäisetzen bis et all d'Erënnerung verbraucht an erofgefall ass:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Fir dëse Problem ze léisen, hu mir eng zweet Socket bäigefüügt, déi speziell fir d'Aarbechter gewidmet ass:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Also huet de Preprocessor Manager d'Méiglechkeet seng Aarbecht ze prioritäréieren an, wann de Puffer wiisst, ass d'Aufgab d'Entfernung ze luesen, sou datt d'Aarbechter d'Méiglechkeet ginn dëse Puffer ze huelen:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Dunn hu mer erausfonnt, datt ee vun de Grënn fir d'Verzögerung d'Aarbechter selwer war, well se sech ëm eng Ressource konkurréiere, déi fir hir Aarbecht komplett onwichteg war. Mir hunn dëse Problem als Bugfix dokumentéiert, an et ass schonn an neie Versioune vun Zabbix geléist ginn:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Mir erhéijen d'Zuel vun de Sockets - mir kréien d'Resultat

Weider gouf de Preprocessor Manager selwer e Flaschenhals, well et ass ee Fuedem. Et huet op der Kärgeschwindegkeet geréit, wat eng maximal Geschwindegkeet vu ronn 70 Tausend Metrik pro Sekonn gëtt:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Dofir hu mir véier, mat véier Sätz vu Sockets, Aarbechter gemaach:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

An dëst huet eis erlaabt d'Geschwindegkeet op ongeféier 130 Tausend Metriken ze erhéijen:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

D'Net-Linearitéit vum Wuesstum gëtt erkläert duerch d'Tatsaach datt d'Konkurrenz fir de Geschichtscache opgetaucht ass. 4 Preprocessor Manager a Geschicht Sinkers hunn dofir konkurréiert. Zu dësem Zäitpunkt krute mir ongeféier 130 Tausend Metriken pro Sekonn op der Testmaschinn, déi se vun ongeféier 95% vum Prozessor benotzt:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Virun ongeféier 2,5 Méint

Refus vun snmp-Community huet NVPs ëm een ​​annerhallef Mol erhéicht

MM: – Max, ech brauch en neien Testauto! Mir passen net méi an déi aktuell.

MCH: - Wat hutt Dir elo?

MM: - Elo - 130k NVPs an e Regal-prett Prozessor.

MCH: - Wow! Cool! Waart, ech hunn zwou Froen. No menge Berechnungen ass eise Bedierfnes ongeféier 15-20 Tausend Metriken pro Sekonn. Firwat brauche mir méi?

MM: "Ech wëll d'Aarbecht fäerdeg maachen." Ech géif gären gesinn, wéi vill mir aus dësem System ausdrécke kënnen.

MCH: - Awer ...

MM: "Awer et ass nëtzlos fir d'Geschäft."

MCH: - Et ass kloer. An déi zweet Fro: kënne mir dat ënnerstëtzen, wat mir elo eleng hunn, ouni d'Hëllef vun engem Entwéckler?

MM: - Ech mengen net. Änneren wéi de Configuratiounscache funktionnéiert ass e Problem. Et beaflosst Ännerungen an de meeschte thread an ass zimmlech schwéier ze pflegen. Wahrscheinlech wäert et ganz schwéier sinn et z'erhalen.

MCH: "Da brauche mir eng Zort Alternativ."

MM: - Et gëtt esou eng Optioun. Mir kënnen op séier Käre wiesselen, wärend den neie Sperrsystem opginn. Mir kréien nach ëmmer eng Leeschtung vun 60-80 dausend Metriken. Zur selwechter Zäit kënne mir all de Rescht vum Code verloossen. Clickhouse an asynchrone Polling funktionnéieren. An et wäert einfach ze pflegen.

MCH: - Erstaunlech! Ech proposéiere mir hei ophalen.

Nodeems mir d'Server Säit optiméiert hunn, konnte mir endlech den neie Code an d'Produktioun lancéieren. Mir hunn e puer vun den Ännerungen opginn fir op eng Maschinn mat schnelle Kären ze wiesselen an d'Zuel vun de Code Ännerungen ze minimiséieren. Mir hunn och d'Konfiguratioun vereinfacht an Makroen an Datenartikelen eliminéiert wa méiglech, well se zousätzlech Sperrung aféieren.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Zum Beispill, de snmp-Community Makro opzeginn, deen dacks an der Dokumentatioun a Beispiller fonnt gëtt, an eisem Fall huet et méiglech gemaach NVPs ëm ongeféier 1,5 Mol weider ze beschleunegen.

No zwee Deeg an der Produktioun

Ewechzehuelen Tëschefall Geschicht Pop-ups

MCH: - Misha, mir hunn de System fir zwee Deeg benotzt, an alles funktionnéiert. Awer nëmmen wann alles funktionnéiert! Mir haten d'Aarbecht mat dem Transfert vun engem zimlech grousse Segment vum Netz geplangt, a mir hunn erëm mat den Hänn gepréift wat opgaang ass a wat net.

MM: - Kann net sinn! Mir hunn alles 10 Mol iwwerpréift. De Server handhabt souguer komplett Netzverfügbarkeet direkt.

MCH: - Jo, ech verstinn alles: Server, Datebank, Top, Austat, Logbicher - alles ass séier ... Awer mir kucken d'Webinterface, an et gëtt e Prozessor "am Regal" um Server an dëst:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MM: - Et ass kloer. Loosst eis de Web kucken. Mir hu festgestallt datt an enger Situatioun wou et eng grouss Zuel vun aktiven Tëschefäll waren, déi meescht Live Widgets ugefaang ganz lues ze schaffen:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

De Grond dofir war d'Generatioun vun Tëschefällgeschicht Pop-ups déi fir all Element an der Lëscht generéiert ginn. Dofir hu mir d'Generatioun vun dëse Fënsteren opginn (kommentéiert 5 Zeilen am Code), an dëst huet eis Probleemer geléist.

D'Laaschtzäit fir Widgets, och wa komplett net verfügbar ass, gouf vun e puer Minutten op déi akzeptabel 10-15 Sekonnen fir eis reduzéiert, an d'Geschicht kann nach ëmmer gekuckt ginn andeems Dir op d'Zäit klickt:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

No der Aarbecht. virun 2 Méint

MCH: - Misha, gitt Dir fort? Mir mussen schwätzen.

MM: - Ech hat net virgesinn. Eppes mam Zabbix erëm?

MCH: - Nee, relax! Ech wollt just soen: alles klappt, merci! Ech hunn e Béier.

Zabbix ass effizient

Zabbix ass eng zimlech universell a räich System a Funktioun. Et kann fir kleng Installatiounen aus der Këscht benotzt ginn, awer wéi d'Bedierfnesser wuessen, muss et optimiséiert ginn. Fir e grousst Archiv vu Metriken ze späicheren, benotzt eng passend Späichere:

  • Dir kënnt agebaute Tools a Form vun Integratioun mat Elasticsearch benotzen oder d'Geschicht op Textdateien eropluede (verfügbar vun der Versioun XNUMX);
  • Dir kënnt vun eiser Erfahrung an Integratioun mat Clickhouse profitéieren.

Fir d'Geschwindegkeet vun de Metriken ze sammelen dramatesch ze erhéijen, sammelen se mat asynchrone Methoden a vermëttelen se duerch d'Trapper-Interface op den Zabbix-Server; oder Dir kënnt e Patch benotze fir Zabbix Poller asynchron ze maachen.

Zabbix ass an C geschriwwen an ass zimmlech effizient. D'Léisung vun verschiddenen architektoneschen Flaschenhalsen erlaabt Iech seng Leeschtung weider ze erhéijen an, an eiser Erfahrung, méi wéi 100 Tausend Metriken op enger eenzeger Prozessor Maschinn ze kréien.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

Déi selwecht Zabbix Patch

MM: - Ech wëll e puer Punkten derbäi. De ganzen aktuelle Bericht, all Tester, Zuelen gi fir d'Konfiguratioun uginn déi mir benotzen. Mir huelen elo ongeféier 20 dausend Metriken pro Sekonn dovunner. Wann Dir probéiert ze verstoen ob dëst fir Iech funktionnéiert, kënnt Dir vergläichen. Wat haut diskutéiert gouf gëtt op GitHub a Form vun engem Patch gepost: github.com/miklert/zabbix

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

De Patch enthält:

  • voll Integratioun mat Clickhouse (souwuel Zabbix Server a Frontend);
  • Problemer mat der Preprocessor Manager léisen;
  • asynchrone Ëmfro.

De Patch ass kompatibel mat all Versioun 4, dorënner lts. Wahrscheinlech, mat minimalen Ännerungen, funktionnéiert et op der Versioun 3.4.

Merci fir Är Opmierksamkeet.

Är Froen

Fro vum Publikum (nodréiglech – A): – Gudde Mëtteg! Sot mir w.e.g., hutt Dir Pläng fir eng intensiv Interaktioun mam Zabbix Team oder mat hinnen mat Iech, sou datt dëst kee Patch ass, awer normal Verhalen vum Zabbix?

MM: - Jo, mir wäerten definitiv e puer vun den Ännerungen engagéieren. Eppes wäert geschéien, eppes bleift am Patch.

A: – Villmols Merci fir den excellenten Bericht! Sot mir w.e.g., nodeems Dir de Patch ugewannt hutt, bleift d'Ënnerstëtzung vum Zabbix a wéi Dir weider op méi héich Versioune aktualiséieren? Ass et méiglech Zabbix no Ärem Patch op 4.2, 5.0 ze aktualiséieren?

MM: - Ech kann näischt iwwer Ënnerstëtzung soen. Wann ech Zabbix technesch Ënnerstëtzung wier, géif ech wahrscheinlech nee soen, well dëst de Code vun engem aneren ass. Wat d'4.2 Codebase ugeet, ass eis Positioun: "Mir wäerte mat der Zäit bewegen, a mir aktualiséieren eis op déi nächst Versioun." Dofir, fir eng Zäit wäerte mir e Patch fir aktualiséiert Versiounen posten. Ech sot schonn am Rapport: d'Zuel vun Ännerungen mat Versiounen ass nach relativ kleng. Ech mengen den Iwwergang vun 3.4 op 4 huet eis ronn 15 Minutten gedauert, do huet sech eppes geännert, awer net ganz wichteg.

A: - Also plangt Dir Äre Patch z'ënnerstëtzen an Dir kënnt et sécher an der Produktioun installéieren an Updates op iergendeng Manéier an der Zukunft kréien?

MM: - Mir recommandéieren et staark. Dëst léist vill Problemer fir eis.

MCH: – Ech wëll nach eng Kéier drop opmierksam maachen, datt d’Ännerungen, déi d’Architektur net betreffen a keng Spären oder Schlaangen betreffen, modulär sinn, si sinn a separat Moduler. Och mat klengen Ännerungen kënnt Dir se ganz einfach erhalen.

MM: - Wann Dir un d'Detailer interesséiert sidd, da benotzt "Clickhouse" déi sougenannt Geschichtsbibliothéik. Et ass untied - et ass eng Kopie vun Elastics Support, dat heescht, et ass konfiguréierbar. Polling ännert nëmme Poller. Mir gleewen datt dëst fir eng laang Zäit funktionnéiert.

A: - Villmols merci. Sot mir, gëtt et Dokumentatioun vun den Ännerungen gemaach?

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS op engem Server

MM: - Dokumentatioun ass e Patch. Natierlech, mat der Aféierung vum Clickhouse, mat der Aféierung vun neien Typen vu Poller, entstinn nei Konfiguratiounsoptiounen. De Link vun der leschter Rutsch huet eng kuerz Beschreiwung wéi et benotzt gëtt.

Iwwer d'Ersetzen vun fping mat nmap

A: – Wéi hutt Dir dat endlech ëmgesat? Kënnt Dir spezifesch Beispiller ginn: Hutt Dir Strapper an en externen Skript? Wat schlussendlech esou eng grouss Zuel vu Hosten esou séier iwwerpréift? Wéi mengt Dir dës Hosten? Musse mir se fidderen fir iergendwéi ze nmapéieren, se vun iergendwou ze kréien, se anzesetzen, eppes lafen? ..

MM: - Cool. Eng ganz korrekt Fro! De Punkt ass dëst. Mir hunn d'Bibliothéik geännert (ICMP Ping, Deel vun Zabbix) fir ICMP Kontrollen, déi d'Zuel vu Paketen uginn - een (1), an de Code probéiert nmap ze benotzen. Dat ass, dëst ass d'intern Aarbecht vum Zabbix, déi d'intern Aarbecht vum Pinger ginn ass. Deementspriechend ass keng Synchroniséierung oder Notzung vun engem Trapper erfuerderlech. Dëst gouf bewosst gemaach fir de System intakt ze loossen an net mat der Synchroniséierung vun zwee Datebanksystemer ze këmmeren: wat fir ze kontrolléieren, duerch de Poller eropzelueden, an ass eisen Upload futti?.. Dat ass vill méi einfach.

A: - Geet et och fir Proxyen?

MM: - Jo, awer mir hunn net gepréift. De Wahlcode ass d'selwecht a béid Zabbix an um Server. Sollt schaffen. Loosst mech nach eng Kéier ënnersträichen: D'Performance vum System ass sou datt mir kee Proxy brauchen.

MCH: - Déi richteg Äntwert op d'Fro ass: "Firwat braucht Dir e Proxy mat esou engem System?" Nëmme wéinst NAT oder Iwwerwaachung duerch eng Aart vu luesen Kanal ...

A: – An Dir benotzt Zabbix als Allertor, wann ech richteg verstinn. Oder hunn Är Grafiken (wou d'Archivschicht ass) an en anere System geplënnert, wéi Grafana? Oder benotzt Dir dës Funktionalitéit net?

MM: – Ech ënnersträichen nach eng Kéier: Mir hunn eng komplett Integratioun erreecht. Mir schëdden d'Geschicht an Clickhouse, awer gläichzäiteg hu mir de php Frontend geännert. De Php Frontend geet op Clickhouse a mécht all d'Grafiken vun do. Zur selwechter Zäit, fir éierlech ze sinn, hu mir en Deel deen Daten an anere Grafike Displaysystemer aus dem selwechte Clickhouse baut, aus dem selwechten Zabbix-Daten.

MCH: - Och am "Grafan".

Wéi goufen Entscheedungen iwwer d'Verdeelung vun de Ressourcen geholl?

A: - Deelt e bësse vun Ärer bannenzeger Kichen. Wéi gouf d'Decisioun geholl datt et néideg ass Ressourcen fir eng sérieux Veraarbechtung vum Produkt ze verdeelen? Dëst sinn allgemeng gewësse Risiken. A sot mir w.e.g., am Kader vun der Tatsaach, datt Dir nei Versiounen ënnerstëtzt: Wéi justifiéiert dës Decisioun aus enger Gestiounssiicht?

MM: - Anscheinend hu mir den Drama vun der Geschicht net ganz gutt erzielt. Mir hunn eis an enger Situatioun fonnt, wou eppes muss gemaach ginn, a mir sinn am Fong mat zwou parallele Teams gaang:

  • Eent war de Start vun engem Iwwerwachungssystem mat neie Methoden: Iwwerwaachung als Service, e Standardset vu Open Source Léisungen, déi mir kombinéieren an dann probéieren de Geschäftsprozess z'änneren, fir mam neien Iwwerwaachungssystem ze schaffen.
  • Zur selwechter Zäit hate mir e begeeschterte Programméierer deen dëst (iwwer sech selwer) gemaach huet. Et ass geschitt, datt hien gewonnen huet.

A: - A wat ass d'Gréisst vun der Equipe?

MCH: - Si ass virun Iech.

A: - Also, wéi ëmmer, braucht Dir e Passionär?

MM: - Ech weess net wat e passionéierte ass.

A: - An dësem Fall, anscheinend, Dir. Villmols Merci, Dir sidd genial.

MM: - Merci.

Iwwer Patches fir Zabbix

A: - Fir e System datt Proxy benotzt (zum Beispill, an e puer verdeelt Systemer), ass et méiglech ze adaptéieren an Patch, soen, Poller, Proxy an deelweis de Preprocessor vun Zabbix selwer; an hir Interaktioun? Ass et méiglech existent Entwécklungen fir e System mat multiple Proxyen ze optimiséieren?

MM: - Ech weess datt den Zabbix Server mat engem Proxy zesummegesat ass (de Code ass kompiléiert a kritt). Mir hunn dëst net an der Produktioun getest. Ech net sécher op dëser, mee ech mengen, datt de Preprocessor Manager net am Proxy benotzt gëtt. D'Aufgab vum Proxy ass eng Rei vu Metriken aus Zabbix ze huelen, se ze fusionéieren (et registréiert och d'Konfiguratioun, d'lokal Datebank) an et zréck op den Zabbix Server. De Server selwer wäert dann d'Virveraarbechtung maachen wann en et kritt.

Den Interessi un Proxyen ass verständlech. Mir kucken et eraus. Dëst ass en interessant Thema.

A: - D'Iddi war dëst: wann Dir Poller patch kann, Dir kënnt se op de Proxy patchen an d'Interaktioun mam Server patchen, an de Preprocessor fir dës Zwecker nëmmen op de Server adaptéieren.

MM: - Ech mengen et ass nach méi einfach. Dir huelt de Code, applizéiert e Patch, konfiguréiert et dann wéi Dir braucht - Sammelt Proxy-Server (zum Beispill mat ODBC) a verdeelt de patched Code iwwer Systemer. Wou néideg - sammelen e Proxy, wou néideg - e Server.

A: - Wahrscheinlech musst Dir d'Proxy-Transmissioun op de Server zousätzlech net patchen?

MCH: - Nee, et ass Standard.

MM: - Tatsächlech huet eng vun den Iddien net geklongen. Mir hunn ëmmer e Gläichgewiicht tëscht der Explosioun vun Iddien an der Quantitéit vun Ännerungen an einfacher Ënnerstëtzung behalen.

Puer Annoncen 🙂

Merci datt Dir bei eis bleift. Hutt Dir eis Artikelen gär? Wëllt Dir méi interessant Inhalt gesinn? Ënnerstëtzt eis andeems Dir eng Bestellung maacht oder Frënn empfeelt, Cloud VPS fir Entwéckler vun $ 4.99, en eenzegaartegen Analog vun Entry-Level Serveren, dee vun eis fir Iech erfonnt gouf: Déi ganz Wourecht iwwer VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps vun $19 oder wéi een e Server deelt? (verfügbar mat RAID1 an RAID10, bis zu 24 Kären a bis zu 40GB DDR4).

Dell R730xd 2 Mol méi bëlleg an Equinix Tier IV Daten Zentrum zu Amsterdam? Nëmmen hei 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV vun $199 an Holland! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - vun $99! Liest iwwer Wéi bauen ech Infrastructure Corp. Klass mat der Benotzung vun Dell R730xd E5-2650 v4 Serveren Wäert 9000 Euro fir e Penny?

Source: will.com

Setzt e Commentaire