{"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\/ro\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere","title":{"rendered":"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Conferin\u021ba HighLoad++ va avea loc pe 6 \u0219i 7 aprilie 2020 \u00een Sankt Petersburg. Detalii \u0219i bilete <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/2sSxgBx\">la link<\/a><\/noindex>. HighLoad++ Moscova 2018. Sala \u201eMoscova\u201d. 9 noiembrie, 15:00. Teze \u0219i <noindex><a rel=\"nofollow\" href=\"http:\/\/www.highload.ru\/moscow\/2018\/abstracts\/4141\">prezentare<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/5c3e11c8449de7375d30b2cd75b5927e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n* Monitorizare \u2014 online \u0219i analiz\u0103.<br \/>\n* Principalele limit\u0103ri ale platformei ZABBIX.<br \/>\n* Solu\u021bie pentru scalarea depozitului de analize.<br \/>\n* Optimizarea serverului ZABBIX.<br \/>\n* Optimizarea UI.<br \/>\n* Experien\u021ba \u00een exploatarea sistemului sub \u00eenc\u0103rc\u0103ri de peste 40k NVPS.<br \/>\n* Pe scurt, concluzii.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>Mihail Makurov (\u00een continuare \u2013 MM):<\/b> \u2013 Bun\u0103 ziua tuturor!<\/p>\n<p><b>Maxim Cerne\u021bov (\u00een continuare \u2013 MC):<\/b> \u2013 Bun\u0103 ziua!<\/p>\n<p><b>MM:<\/b> \u2013 Permite\u021bi-mi s\u0103-l prezint pe Maxim. Max este un inginer talentat, cel mai bun specialist \u00een re\u021bele pe care \u00eel cunosc. Maxim se ocup\u0103 de re\u021bele \u0219i servicii, dezvoltarea \u0219i exploatarea acestora.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/a7fc62a03c0aede46f4a4695845daa22.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> \u2013 A\u0219 dori s\u0103 vorbesc despre Mihail. Mihail este dezvoltator C. A scris c\u00e2teva solu\u021bii cu \u00eenc\u0103rcare mare pentru procesarea traficului pentru compania noastr\u0103. Locuim \u0219i lucr\u0103m \u00een Urali, \u00een ora\u0219ul dur al b\u0103rba\u021bilor, Celiabinsk, \u00een compania \u201eIntersvyaz\u201d. Compania noastr\u0103 este un furnizor de servicii de internet \u0219i televiziune prin cablu pentru un milion de oameni \u00een 16 ora\u0219e.<\/p>\n<p><b>MM:<\/b> \u2013 \u0218i trebuie s\u0103 spun c\u0103 \u201eIntersvyaz\u201d este mult mai mult dec\u00e2t un simplu provider, este o companie IT. Majoritatea solu\u021biilor noastre sunt realizate de echipa noastr\u0103 IT.<\/p>\n<p><b>A:<\/b> de la servere care proceseaz\u0103 traficul, p\u00e2n\u0103 la call-center \u0219i aplica\u021bii mobile. \u00cen echipa IT sunt acum aproximativ 80 de oameni cu competen\u021be foarte diverse.<\/p>\n<h3>Despre Zabbix \u0219i arhitectura sa<\/h3>\n<p>\n<b>MC:<\/b> \u2013 Acum voi \u00eencerca s\u0103-mi stabilesc un record personal \u0219i \u00een mai pu\u021bin de un minut s\u0103 explic ce este Zabbix (\u00een continuare \u2013 \u201eZabbix\u201d).<\/p>\n<p>\u201eZabbix\u201d se pozi\u021bioneaz\u0103 ca un sistem de monitorizare \u201epront de utilizare\u201d la nivel de \u00eentreprindere. Are multe func\u021bii care simplific\u0103 via\u021ba: reguli avansate de escaladare, API pentru integrare, grupare \u0219i descoperire automat\u0103 a gazdelor \u0219i metricelor. \u201eZabbix\u201d dispune de a\u0219a-numitele instrumente de scalare \u2013 proxy-uri. \u201eZabbix\u201d este un sistem open-source.<\/p>\n<p>Pe scurt, despre arhitectur\u0103. Se poate spune c\u0103 aceasta const\u0103 din trei componente:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/0d2ae3ee04d00885d65e17b8cf44182b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<ul>\n<li>Server. Scris \u00een C. Cu un proces complex de prelucrare \u0219i transmitere a informa\u021biilor \u00eentre fire. Toat\u0103 prelucrarea are loc \u00een acesta: de la recep\u021bie p\u00e2n\u0103 la salvarea \u00een baza de date.<\/li>\n<li>Toate datele sunt stocate \u00een baz\u0103. \u201eZabbix\u201d suport\u0103 MySQL, PostgreSQL \u0219i Oracle.<\/li>\n<li>Interfa\u021ba web este scris\u0103 \u00een PHP. \u00cen majoritatea sistemelor vine cu serverul Apache, dar func\u021bioneaz\u0103 mai eficient \u00een combina\u021bie cu nginx + php.<\/li>\n<\/ul>\n<p>\nAst\u0103zi dorim s\u0103 \u00eemp\u0103rt\u0103\u0219im o poveste din via\u021ba companiei noastre, legat\u0103 de \u201eZabbix\u201d\u2026<\/p>\n<h3>O poveste din via\u021ba companiei \u201eIntersvyaz\u201d. Ce avem \u0219i ce avem nevoie?<\/h3>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/407c35b81995ddca6444fa418941063f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Acum 5 sau 6 luni. Odat\u0103, dup\u0103 munc\u0103\u2026<\/i><\/p>\n<p><b>MC:<\/b> \u2013 Misha, salut! M\u0103 bucur c\u0103 te-am prins \u2013 am nevoie s\u0103 discut\u0103m. Din nou am avut probleme cu monitorizarea. \u00cen timpul unei mari avarii, totul era lent \u0219i nu aveam nicio informa\u021bie despre starea re\u021belei. Din p\u0103cate, aceasta se repet\u0103 deja pentru a nu \u0219tiu c\u00e2ta oar\u0103. Am nevoie de ajutorul t\u0103u. Haide s\u0103 ne asigur\u0103m c\u0103 monitorizarea noastr\u0103 va func\u021biona \u00een orice circumstan\u021b\u0103!<\/p>\n<p><b>MM:<\/b> \u2013 Dar s\u0103 ne sincroniz\u0103m mai \u00eent\u00e2i. Nu am mai verificat acolo de vreo doi ani. Dup\u0103 c\u00e2t \u00eemi amintesc, am renun\u021bat la Nagios \u0219i am trecut la \u201eZabbix\u201d acum aproximativ 8 ani. \u0218i acum, cred c\u0103 avem 6 servere puternice \u0219i \u00een jur de zece proxy-uri. Nu m\u0103 \u00een\u0219el?<\/p>\n<p><b>MC:<\/b> \u2013 Aproape. 15 servere, dintre care unele sunt ma\u0219ini virtuale. Cel mai important este c\u0103 asta nu ne salveaz\u0103 \u00een momentul \u00een care avem cea mai mare nevoie. C\u00e2nd apare o avarie \u2013 serverele devin lente \u0219i nimic nu se vede. Am \u00eencercat s\u0103 optimiz\u0103m configura\u021bia, dar nu a adus un c\u00e2\u0219tig optim de performan\u021b\u0103.<\/p>\n<p><b>MM:<\/b> \u2013 \u00cen\u021beleg. A\u021bi investigat ceva, a\u021bi adunat date din diagnosticare?<\/p>\n<p><b>MC:<\/b> \u2013 Primul lucru de care ne ocup\u0103m este baza de date. MySQL este constant aglomerat, salv\u00e2nd noile metrici, iar c\u00e2nd \u201eZabbix\u201d \u00eencepe s\u0103 genereze o mul\u021bime de evenimente \u2013 baza intr\u0103 \u00een panic\u0103 timp de c\u00e2teva ore. \u021ai-am vorbit deja despre optimizarea configura\u021biei, iar anul acesta am actualizat echipamentul: serverele au peste o sut\u0103 de giga de memorie \u0219i array-uri de discuri SSD RAID \u2013 nu are sens s\u0103 cre\u0219tem capacitatea linear. Ce vom face?<\/p>\n<p><b>MM:<\/b> \u2013 \u00cen\u021beleg. \u00cen general, MySQL este o baz\u0103 de date LTP. Se pare c\u0103 nu mai este potrivit\u0103 pentru stocarea arhivelor metricilor noastre. Haide s\u0103 ne ocup\u0103m de asta.<\/p>\n<p><b>MC:<\/b> \u2013 Haide!<\/p>\n<h3>Integrarea Zabbix \u0219i Clickhouse ca rezultat al hackathon-ului<\/h3>\n<p>\nDup\u0103 un timp, am ob\u021binut date interesante:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/46899e843b1e89524c6d762c1c167a6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCea mai mare parte a spa\u021biului din baza noastr\u0103 a fost ocupat\u0103 de arhiva metodelor, iar mai pu\u021bin de 1% a fost folosit pentru configura\u021bii, \u0219abloane \u0219i set\u0103ri. La acel moment, exploat\u0103m solu\u021bia Big Data bazat\u0103 pe Clickhouse de mai bine de un an. Direc\u021bia de mi\u0219care era evident\u0103 pentru noi. La \u201eHackathon\u201d-ul nostru de prim\u0103var\u0103, am scris o integrare a \u201eZabbix\u201d cu \u201eClickhouse\u201d pentru server \u0219i frontend. La acel moment, \u201eZabbix\u201d avea deja suport pentru ElasticSearch \u0219i am decis s\u0103 le compar\u0103m.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/92fa3da527de48102cbdcf6959d46814.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Compararea Clickhouse \u0219i Elasticsearch<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Pentru compara\u021bie, am generat o \u00eenc\u0103rc\u0103tur\u0103 similar\u0103 celei furnizate de serverul \u201eZabbix\u201d \u0219i am observat cum se comport\u0103 sistemele. Am scris datele \u00een loturi de 1000 de r\u00e2nduri, folosind CURL. Am anticipat c\u0103 \u201eClickhouse\u201d va fi mai eficient pentru profilul de \u00eenc\u0103rcare pe care \u00eel genereaz\u0103 \u201eZabbix\u201d. Rezultatele ne-au dep\u0103\u0219it a\u0219tept\u0103rile:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/354be7147b23a0bcb9ada3af93f59fac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen condi\u021bii identice, \u00een teste, \u201eClickhouse\u201d a scris de trei ori mai multe date. \u00cen acela\u0219i timp, ambele sisteme au consumat foarte eficient (pu\u021bine resurse) citind datele. \u00cens\u0103 \u201eElasticSearch\u201d a necesitat un consum mare de procesor la scriere:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/fea7f7f7801024cee0f9367c49d81d5b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen ansamblu, \u201eClickhouse\u201d a dep\u0103\u0219it semnificativ \u201eElasticSearch\u201d \u00een ceea ce prive\u0219te consumul de procesor \u0219i viteza. Datorit\u0103 compresiei datelor, \u201eClickhouse\u201d folose\u0219te de 11 ori mai pu\u021bin pe disc \u0219i realizeaz\u0103 aproximativ de 30 de ori mai pu\u021bine opera\u021bii de disc:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/50c24c4615ed350d7d78ec8655423409.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> \u2013 Da, lucrul cu subsistemul de discuri la \u201eClickhouse\u201d este realizat foarte eficient. Pentru baze de date pot fi folosite discuri SATA enorme, ob\u021bin\u00e2nd viteze de scriere de sute de mii de r\u00e2nduri pe secund\u0103. Sistemul suport\u0103 \u201edin cutie\u201d sharding, replicare \u0219i este foarte simplu de configurat. Suntem mai mult dec\u00e2t mul\u021bumi\u021bi de exploatarea sa timp de un an.<\/p>\n<p>Pentru a optimiza resursele, se poate instala \u201eClickhouse\u201d l\u00e2ng\u0103 baza principal\u0103 existent\u0103, economisind astfel o mul\u021bime de timp de procesor \u0219i opera\u021bii de disc. Am mutat arhiva metodelor pe clusterele \u201eClickhouse\u201d deja existente:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/4cf44eae47a13f2fc50377fec884ecc8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAm desc\u0103rcat baza principal\u0103 MySQL at\u00e2t de mult, \u00eenc\u00e2t am putut s\u0103 o combin\u0103m pe aceea\u0219i ma\u0219in\u0103 cu serverul \u201eZabbix\u201d \u0219i s\u0103 renun\u021b\u0103m la un server dedicat pentru MySQL.<\/p>\n<h3>Cum func\u021bioneaz\u0103 polling-ul \u00een Zabbix?<\/h3>\n<p>\n<i>acum 4 luni<\/i><\/p>\n<p><b>MM:<\/b> \u2013 Ei bine, putem uita de problemele cu baza de date?<\/p>\n<p><b>MC:<\/b> \u2013 A\u0219a este! O alt\u0103 problem\u0103 pe care trebuie s\u0103 o rezolv\u0103m este colectarea lent\u0103 a datelor. Acum, to\u021bi cei 15 servere proxy sunt supra\u00eenc\u0103rcate cu procese SNMP \u0219i polling. \u0218i nu avem altceva de f\u0103cut dec\u00e2t s\u0103 mai ad\u0103ug\u0103m noi servere.<\/p>\n<p><b>MM:<\/b> \u2013 Excelent. Dar spune-mi mai \u00eent\u00e2i cum func\u021bioneaz\u0103 polling-ul \u00een \u201eZabbix\u201d?<\/p>\n<p><b>MC:<\/b> \u2013 Pe scurt, exist\u0103 20 de tipuri de metrici \u0219i zeci de modalit\u0103\u021bi de a le ob\u021bine. \u201eZabbix\u201d poate colecta date fie \u00een modul \u201ecerere \u2013 r\u0103spuns\u201d, fie a\u0219tept\u00e2nd date noi prin \u201eInterfa\u021ba Trapper\u201d.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/cb2d974ee113b4147a4a588c1f35c730.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMerit\u0103 men\u021bionat c\u0103 \u00een \u201eZabbix\u201d-ul original acest mod (Trapper) este cel mai rapid. <\/p>\n<p>Exist\u0103 servere proxy pentru distribuirea \u00eenc\u0103rc\u0103turii:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/7b5c94a82b7e06aff6df6ea5549babdf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProxile pot \u00eendeplini acelea\u0219i func\u021bii de colectare ca \u0219i serverul \u201eZabbix\u201d, primind sarcini de la acesta \u0219i trimi\u021b\u00e2nd metricile colectate prin intermediul interfe\u021bei Trapper. Aceasta este metoda oficial recomandat\u0103 pentru distribuirea \u00eenc\u0103rc\u0103turii. De asemenea, proxile sunt utile pentru monitorizarea infrastructurii la distan\u021b\u0103, care func\u021bioneaz\u0103 prin NAT sau canale lente:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/dbfb2777f9dd9b4adb81f1fa89f3bdd5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Totul e clar cu arhitectura. Trebuie s\u0103 ne uit\u0103m la sursa...<\/p>\n<p><i>C\u00e2teva zile mai t\u00e2rziu<\/i><\/p>\n<h3>Povestea despre cum nmap fping a \u00eenvins<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Se pare c\u0103 am g\u0103sit ceva.<\/p>\n<p><b>MC:<\/b> \u2013 Poveste\u0219te!<\/p>\n<p><b>MM:<\/b> \u2013 Am descoperit c\u0103 \u00een timpul verific\u0103rilor de disponibilitate \u201eZabbix\u201d verific\u0103 maximum 128 de gazde simultan. Am \u00eencercat s\u0103 cresc acest num\u0103r la 500 \u0219i am eliminat intervalul de timp \u00eentre pachete \u00een ping-ul lor \u2013 aceasta a crescut performan\u021ba de dou\u0103 ori. Dar a\u0219 dori cifre \u0219i mai mari.<\/p>\n<p><b>MC:<\/b> \u2013 \u00cen practica mea, uneori trebuie s\u0103 verific disponibilitatea a mii de gazde \u0219i nu am \u00eent\u00e2lnit nimic mai rapid dec\u00e2t nmap pentru acest lucru. Sunt sigur c\u0103 acesta este cel mai rapid mod. Haide s\u0103-l \u00eencerc\u0103m! Trebuie s\u0103 cre\u0219tem semnificativ num\u0103rul de gazde \u00eentr-o singur\u0103 itera\u021bie.<\/p>\n<p><b>MM:<\/b> \u2013 S\u0103 verific\u0103m mai mult de cinci sute? 600?<\/p>\n<p><b>MC:<\/b> \u2013 Cel pu\u021bin c\u00e2teva mii.<\/p>\n<p><b>MM:<\/b> \u2013 Ok. Cel mai important lucru pe care voiam s\u0103-l spun: am descoperit c\u0103 majoritatea polling-ului \u00een \u201eZabbix\u201d este f\u0103cut\u0103 sincron. Trebuie neap\u0103rat s\u0103-l transform\u0103m \u00een modul asincron. Atunci vom putea cre\u0219te radical num\u0103rul de metrici colectate de pollere, mai ales dac\u0103 cre\u0219tem num\u0103rul de metrici \u00eentr-o singur\u0103 itera\u021bie.<\/p>\n<p><b>MC:<\/b> \u2013 Grozav! C\u00e2nd?<\/p>\n<p><b>MM:<\/b> \u2013 Ca de obicei, ieri.<\/p>\n<p><b>MC:<\/b> \u2013 Am comparat ambele versiuni fping \u0219i nmap:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/4be4cfe019b6b318ae2fbdbf82577111.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPe un num\u0103r mare de gazde, nmap a fost, a\u0219a cum era de a\u0219teptat, de p\u00e2n\u0103 la cinci ori mai eficient. Deoarece nmap verific\u0103 doar disponibilitatea \u0219i timpul de r\u0103spuns, am mutat num\u0103rarea pierderilor \u00een declan\u0219atoare \u0219i am redus semnificativ intervalele de verificare a disponibilit\u0103\u021bii. Am descoperit c\u0103 num\u0103rul optim de gazde pentru nmap este \u00een jur de 4.000 pe o itera\u021bie. Nmap ne-a permis s\u0103 reducere de trei ori costurile CPU pentru verific\u0103rile de disponibilitate \u0219i s\u0103 scurt\u0103m intervalul de la 120 de secunde la 10.<\/p>\n<h3>Optimizarea polling-ului<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Apoi ne-am ocupat de pollere. \u00cen principal, ne-a interesat s\u0103 colect\u0103m SNMP \u0219i agendele. \u00cen \u00abZabbix\u00bb, polling-ul este realizat sincron \u0219i au fost luate m\u0103suri speciale pentru a cre\u0219te eficien\u021ba sistemului. \u00een modul sincron, indisponibilitatea gazdelor provoac\u0103 o degradare semnificativ\u0103 a polling-ului. Exist\u0103 un \u00eentreg sistem de st\u0103ri, exist\u0103 procese speciale \u2013 a\u0219a-numitele pollere unreachable, care lucreaz\u0103 doar cu gazde indisponibile:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/6a001eff121f2392fffda69d719ebad6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAceasta este un comentariu care demonstreaz\u0103 matricea st\u0103rilor, toat\u0103 complexitatea sistemului de tranzi\u021bii necesar pentru a men\u021bine sistemul eficient. \u00cen plus, polling-ul sincron este destul de lent:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/3579a4a3de85c37f812ba2ca71cf4b3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe aceea, mii de fire de pollere pe zece proxy-uri nu puteau colecta pentru noi cantitatea necesar\u0103 de date. Implementarea asincron\u0103 nu a rezolvat doar problemele cu num\u0103rul de fire, ci a simplificat semnificativ sistemul de st\u0103ri ale gazdelor indisponibile, deoarece, indiferent de num\u0103rul verificat \u00eentr-o singur\u0103 itera\u021bie a polling-ului, timpul maxim de a\u0219teptare era de 1 timeout:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/c5f2d9bb3e558f8bba6bd8a96d8ed6a6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00cen plus, am modificat \u0219i \u00eembun\u0103t\u0103\u021bit sistemul de polling pentru cererile SNMP. Problema este c\u0103 majoritatea nu pot r\u0103spunde la mai multe cereri SNMP simultan. A\u0219adar, am creat un mod hibrid, \u00een care polling-ul SNMP al acelea\u0219i gazde se face asincron:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/eb61766e8afce9bf72d6e9757492559e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAceasta se face pentru \u00eentreaga grupare de gazde. Acest mod nu este, \u00een final, mai lent dec\u00e2t cel complet asincron, deoarece interogarea a unei sute cincizeci de valori SNMP este tot mult mai rapid\u0103 dec\u00e2t 1 timeout.<\/p>\n<p>Experimentele noastre au ar\u0103tat c\u0103 num\u0103rul optim de cereri \u00eentr-o singur\u0103 itera\u021bie este de aproximativ 8.000 \u00een cadrul polling-ului SNMP. Trecerea la modul asincron a permis, \u00een total, s\u0103 acceler\u0103m performan\u021ba polling-ului de 200 de ori, de c\u00e2teva sute de ori.<\/p>\n<p><b>MC:<\/b> \u2013 Optimiz\u0103rile ob\u021binute pentru polling au ar\u0103tat c\u0103 nu doar c\u0103 putem sc\u0103pa de toate proxy-urile, dar putem reduce \u0219i intervalele pentru multe verific\u0103ri, iar proxy-urile devin inutile ca metod\u0103 de distribuire a \u00eenc\u0103rc\u0103turii.<\/p>\n<p><i>Aproximativ acum trei luni<\/i><\/p>\n<h3>Schimb\u0103 arhitectura \u2013 cre\u0219te \u00eenc\u0103rc\u0103tura!<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Ei bine, Max, e timpul s\u0103 trecem la produc\u021bie? Am nevoie de un server puternic \u0219i un inginer bun.<\/p>\n<p><b>MC:<\/b> \u2013 Bine, vom planifica. Era timpul s\u0103 ne mi\u0219c\u0103m de la cele 5000 de metrici pe secund\u0103.<\/p>\n<p><i>Diminea\u021ba dup\u0103 upgrade<\/i><\/p>\n<p><b>MC:<\/b> \u2013 Misha, ne-am actualizat, dar p\u00e2n\u0103 diminea\u021b\u0103 ne-am \u00eentors la vechea versiune\u2026 Ghice\u0219te ce vitez\u0103 am reu\u0219it s\u0103 atingem?<\/p>\n<p><b>MM:<\/b> \u2013 Maximum 20 de mii.<\/p>\n<p><b>MC:<\/b> \u2013 Aha, 25! Din p\u0103cate, suntem tot acolo de unde am \u00eenceput.<\/p>\n<p><b>MM:<\/b> \u2013 De ce a\u0219a? A\u021bi realizat vreo diagnosticare?<\/p>\n<p><b>MC:<\/b> \u2013 Da, bine\u00een\u021beles! Iat\u0103, de exemplu, un top interesant:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/09ac3336a820977b643ee5328ad2a851.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Hai s\u0103 vedem. V\u0103d c\u0103 am \u00eencercat o mul\u021bime de fire de polling:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/346e8047f1f6f2bb1b1dd91a728e437b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDar nu am putut s\u0103 utiliz\u0103m sistemul nici m\u0103car pe jum\u0103tate:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/be1843dbec0fb10d8da59e8c570adc5b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0218i performan\u021ba general\u0103 este destul de mic\u0103, aproximativ 4000 de metrici pe secund\u0103:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/02eaf0b56629ebc6d3d5c132374a91b8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMai este ceva?<\/p>\n<p><b>MC:<\/b> \u2013 Da, strace-ul unuia dintre pollere:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/73fc58bd2925859f6fbbcd118a0483c0.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Aici se vede clar c\u0103 procesul de polling a\u0219teapt\u0103 \u2018semafoare\u2019. Acestea sunt bloc\u0103ri:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/d0bec44a9677ec111066dccc1dd8c5dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> \u2013 Nu \u00een\u021beleg.<\/p>\n<p><b>MM:<\/b> \u2013 Uite, pare a fi o situa\u021bie \u00een care o mul\u021bime de fire \u00eencearc\u0103 s\u0103 lucreze cu un resurs\u0103, cu care poate lucra un singur fir simultan. Atunci tot ceea ce pot face este s\u0103 \u00eempart\u0103 aceast\u0103 resurs\u0103 pe timp:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/7dbb9e8941b01b666dd48f6301151ec9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0218i performan\u021ba total\u0103 a muncii cu o astfel de resurs\u0103 este limitat\u0103 de viteza unui singur nucleu:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/e00b197577f4ea7350fe56665dbae299.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO astfel de problem\u0103 poate fi rezolvat\u0103 \u00een dou\u0103 moduri.<\/p>\n<p>S\u0103 upgradezi hardware-ul ma\u0219inii, trec\u00e2nd la nuclee mai rapide:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/296d84b434ed7277fb558a8a4dd5ac47.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSau s\u0103 schimbi arhitectura \u0219i, simultan, \u00eenc\u0103rc\u0103tura:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/efea73106440db4e5eda5aa475dd088b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MC:<\/b> \u2013 Apropo, pe ma\u0219ina de testare folosim un num\u0103r mai mic de nuclee dec\u00e2t pe cea de produc\u021bie, dar acestea sunt cu 1,5 ori mai rapide \u00een frecven\u021b\u0103 pe nucleu!<\/p>\n<p><b>MM:<\/b> \u2013 Clar? Trebuie s\u0103 ne uit\u0103m la codul serverului.<\/p>\n<h3>Calea datelor \u00een serverul Zabbix<\/h3>\n<p>\n<b>MC:<\/b> \u2013 Pentru a \u00een\u021belege, am \u00eenceput s\u0103 analiz\u0103m cum sunt transmise datele \u00een interiorul serverului \u2018Zabbix\u2019:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/b3d84e3fcb12e7afe3c974bdeacc357a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nO imagine grozav\u0103, nu-i a\u0219a? Hai s\u0103 trecem prin ea pas cu pas, pentru a clarifica lucrurile. Exist\u0103 fire \u0219i servicii responsabile pentru colectarea datelor:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/966db6fa84723d4d3bde8a23736294d6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMetricile colectate sunt transmise printr-un socket \u00een Preprocessor manager, unde sunt salvate \u00eentr-o coad\u0103:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/1e34fe2c4194f7bd71ec409d6169fb94.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPreprocessor manager-ul transfer\u0103 datele c\u0103tre lucr\u0103torii s\u0103i, care execut\u0103 instruc\u021biunile de preprocesare \u0219i le returneaz\u0103 \u00eenapoi prin acela\u0219i socket:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/d647caf3886f0c9378a32314e812edc1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDup\u0103 aceasta, managerul de preprocesare le salveaz\u0103 \u00een cache-ul istoriei:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/ff0e29b0d974d76bd3a3b71d36a1cc68.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe acolo, ele sunt preluate de c\u0103tre sincroni\u0219tii de istorie, care \u00eendeplinesc o mul\u021bime de func\u021bii: de exemplu, calcularea triggerelor, completarea cache-ului de valori \u0219i, cel mai important, salvarea metricelor \u00een depozitul de istorie. \u00cen general, procesul este complex \u0219i destul de confuz.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/c418a17edeb9153a03dff233aa8f715e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Primul lucru pe care l-am observat a fost c\u0103 majoritatea firelor concureaz\u0103 pentru a\u0219a-numitul \"cache de configurare\" (memorie unde sunt stocate toate configura\u021biile serverului). \u00cen special, multe bloc\u0103ri sunt generate de firele responsabile de colectarea datelor:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/589d8f564ece6e63457450e9c5081b80.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026deoarece \u00een configura\u021bie sunt stocate nu doar metricile cu parametrii lor, ci \u0219i cozi din care pollerele iau informa\u021bii despre ce s\u0103 fac\u0103 mai departe. C\u00e2nd sunt multe pollere \u0219i unul blocheaz\u0103 configura\u021bia, ceilal\u021bi a\u0219teapt\u0103 cereri:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/8026cdfcd7def84cb3708b7255b08c66.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Pollerele nu ar trebui s\u0103 concureze<\/h3>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/d436cd3415a6f58e1db5a609689c12b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA\u0219a c\u0103 primul lucru pe care l-am f\u0103cut a fost s\u0103 \u00eemp\u0103r\u021bim coada \u00een 4 p\u0103r\u021bi \u0219i s\u0103 permitem pollerelor s\u0103 blocheze aceste cozi, aceste p\u0103r\u021bi simultan, \u00een condi\u021bii sigure:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/9466e5f0053dff583e76713f10e30a89.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAceasta a eliminat competi\u021bia pentru cache-ul de configurare, iar viteza de func\u021bionare a pollerelor a crescut semnificativ. Dar apoi ne-am confruntat cu faptul c\u0103 managerul de preprocesare a \u00eenceput s\u0103 acumuleze o coad\u0103 de sarcini:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/dd58e625823310fb0a818ed81abdceac.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Managerul de preprocesare trebuie s\u0103 fie capabil s\u0103 prioritizeze<\/h3>\n<p>\nAcest lucru s-a \u00eent\u00e2mplat \u00een cazurile \u00een care nu avea suficient\u0103 performan\u021b\u0103. Atunci, tot ce putea face era s\u0103 acumuleze cererile din procesele de colectare a datelor \u0219i s\u0103 le stocheze \u00een buffer p\u00e2n\u0103 c\u00e2nd ocupa toat\u0103 memoria \u0219i c\u0103dea:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/b215d880863d470ea6ca960c6338b8ae.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPentru a rezolva aceast\u0103 problem\u0103, am ad\u0103ugat un al doilea socket, care a fost dedicat special worker-ilor:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/09d1bb92a009f9d29ba68d966de54210.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAstfel, managerul de preprocesare a ob\u021binut posibilitatea de a-\u0219i prioritiza activitatea \u0219i, \u00een cazul extinderii buffer-ului, sarcina de a \u00eencetini colectarea, oferind worker-ilor oportunitatea de a prelua acest buffer:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/8f4db3661c428e6e6dcfe4cc0c44c016.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApoi am descoperit c\u0103 una dintre cauzele \u00eencetinirii erau chiar worker-ii, deoarece concurau pentru o resurs\u0103 complet neimportant\u0103 pentru activitatea lor. Aceast\u0103 problem\u0103 a fost rezolvat\u0103 printr-un bug-fix, iar \u00een noile versiuni ale \"Zabbix\" aceasta este deja solu\u021bionat\u0103:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/eedb359823dd23d369339e3735e341fb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Cre\u0219tem num\u0103rul de sockets \u2013 ob\u021binem rezultate<\/h3>\n<p>\nApoi, managerul de preprocesare a devenit punctul slab, deoarece acesta este un singur fir. Se \u00eempotmolea \u00een viteza nucleului, oferind o vitez\u0103 maxim\u0103 de aproximativ 70 de mii de metrici pe secund\u0103:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/f93ccbc656c0f9e103873d99a9397495.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe aceea am f\u0103cut patru, cu patru seturi de socket-uri, lucr\u0103tori:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/81a3dea3aa0f8807add8d045cf64a609.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0218i acest lucru a permis cre\u0219terea vitezei la aproximativ 130.000 de metrici:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/016ff07cd021a7221caef19e6ce36a9b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNeliniaritatea cre\u0219terii se explic\u0103 prin faptul c\u0103 a ap\u0103rut competi\u021bia pentru cache-ul istoric. Patru manageri de preprocesare \u0219i sync-erii de istoric concureaz\u0103 pentru el. P\u00e2n\u0103 \u00een acel moment, ob\u021bineam pe ma\u0219ina de testare aproximativ 130.000 de metrici pe secund\u0103, utiliz\u00e2nd-o cam 95% din capacitatea procesorului:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/62162254cd8bc66c1cef697158691588.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Aproximativ acum 2,5 luni<\/i><\/p>\n<h3>Renun\u021barea la snmp-community a crescut NVP-urile cu o dat\u0103 \u0219i jum\u0103tate<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Max, am nevoie de o nou\u0103 ma\u0219in\u0103 de testare! Nu mai \u00eencapem \u00een cea actual\u0103.<\/p>\n<p><b>MC:<\/b> \u2013 Ce avem acum?<\/p>\n<p><b>MM:<\/b> \u2013 Acum avem \u2013 130k NVP-uri \u0219i procesorul \"\u00een raft\".<\/p>\n<p><b>MC:<\/b> \u2013 Wow! Super! A\u0219teapt\u0103, am dou\u0103 \u00eentreb\u0103ri. Conform calculelor mele, nevoia noastr\u0103 este undeva \u00een jur de 15-20.000 de metrici pe secund\u0103. De ce ne trebuie mai mult?<\/p>\n<p><b>MM:<\/b> \u2013 Vrem s\u0103 termin\u0103m ceea ce am \u00eenceput. Vrem s\u0103 vedem c\u00e2t putem extrage din acest sistem.<\/p>\n<p><b>MC:<\/b> \u2013 Dar\u2026<\/p>\n<p><b>MM:<\/b> \u2013 Dar pentru afacere este inutil.<\/p>\n<p><b>MC:<\/b> \u2013 \u00cen\u021beleg. \u0218i a doua \u00eentrebare: putem s\u0103 \u00eentre\u021binem ceea ce avem acum, f\u0103r\u0103 ajutorul unui dezvoltator?<\/p>\n<p><b>MM:<\/b> \u2013 Nu cred. Modificarea modului de lucru cu cache-ul de configurare este o problem\u0103. Se refer\u0103 la modific\u0103ri \u00een majoritatea fluxurilor \u0219i este destul de complicat de \u00eentre\u021binut. Cel mai probabil, va fi foarte greu s\u0103 o \u00eentre\u021binem.<\/p>\n<p><b>MC:<\/b> \u2013 Atunci avem nevoie de o alternativ\u0103.<\/p>\n<p><b>MM:<\/b> \u2013 Exist\u0103 o astfel de op\u021biune. Putem trece la nuclee rapide, renun\u021b\u00e2nd la noul sistem de blocare. Tot vom ob\u021bine o performan\u021b\u0103 de 60-80.000 de metrici. De asemenea, vom putea p\u0103stra tot restul codului. \"Clickhouse\", polling-ul asincron vor func\u021biona. \u0218i va fi u\u0219or de \u00eentre\u021binut.<\/p>\n<p><b>MC:<\/b> \u2013 Minunat! Propun s\u0103 ne oprim aici.<\/p>\n<p>Dup\u0103 optimizarea p\u0103r\u021bii serverului, \u00een sf\u00e2r\u0219it am reu\u0219it s\u0103 lans\u0103m noul cod \u00een produc\u021bie. Am renun\u021bat la o parte din modific\u0103ri \u00een favoarea trecerii pe o ma\u0219in\u0103 cu nuclee rapide \u0219i minimiz\u0103rii num\u0103rului de modific\u0103ri \u00een cod. De asemenea, am simplificat configura\u021bia \u0219i am renun\u021bat la macro-uri \u00een elementele de date, \u00een m\u0103sura posibilului, deoarece acestea reprezint\u0103 sursa blocajelor suplimentare.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/2b1ed396b09bd815fba973ebb5f73d76.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe exemplu, renun\u021barea la macro-ul snmp-community, care apare frecvent \u00een documenta\u021bie \u0219i exemple, \u00een cazul nostru a permis s\u0103 acceler\u0103m suplimentar NVP-urile cu aproximativ 1,5 ori.<\/p>\n<p><i>Dup\u0103 dou\u0103 zile \u00een produc\u021bie<\/i><\/p>\n<h3>Elimin\u0103m feroneria feroneriilor incidentelor<\/h3>\n<p>\n<b>MC:<\/b> \u2013 Misha, folosim sistemul de dou\u0103 zile \u0219i totul func\u021bioneaz\u0103. Numai c\u0103 func\u021bioneaz\u0103 doar atunci c\u00e2nd totul merge bine! Am avut lucr\u0103ri planificate de migrare a unui segment destul de mare din re\u021bea \u0219i am verificat manual din nou ce a func\u021bionat \u0219i ce nu.<\/p>\n<p><b>MM:<\/b> \u2013 Nu se poate! Am verificat totul de 10 ori. Serverul gestioneaz\u0103 chiar \u0219i indisponibilitatea total\u0103 a re\u021belei instantaneu.<\/p>\n<p><b>MC:<\/b> \u2013 \u00cen\u021beleg totul: server, baz\u0103, top, austat, loguri \u2013 totul rapid\u2026 Dar ne uit\u0103m la interfa\u021ba web \u0219i acolo \u2013 procesorul este \u201epe raft\u201d pe server \u0219i asta:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/828a44d71f67ac585055bffcc01ab46e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Am \u00een\u021beles. Hai s\u0103 ne uit\u0103m la web. Am descoperit c\u0103, \u00een situa\u021bia \u00een care erau multe incidente active, majoritatea widgeturilor opera\u021bionale \u00eencepeau s\u0103 func\u021bioneze foarte lent:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/22fdb735aa6136cd9967b40341d2a5cf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCauza a fost genera\u021bia de feronerie pop-up cu istoricul incidentelor, care sunt generate pentru fiecare element din list\u0103. Astfel, am renun\u021bat la generarea acestor feronerie (am comentat 5 linii \u00een cod) \u0219i acest lucru ne-a rezolvat problemele.<\/p>\n<p>Timpul de \u00eenc\u0103rcare al widgeturilor, chiar \u0219i \u00een cazul indisponibilit\u0103\u021bii totale, a fost redus de la c\u00e2teva minute la 10-15 secunde, acceptabile pentru noi, iar istoricul poate fi \u00een continuare vizualizat printr-un clic pe timp:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/d15341ce76578880a23651a7a68dd802.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Dup\u0103 munc\u0103. Acum 2 luni<\/i><\/p>\n<p><b>MC:<\/b> \u2013 Misha, pleci? Am nevoie s\u0103 vorbim.<\/p>\n<p><b>MM:<\/b> \u2013 Nu aveam de g\u00e2nd. Din nou ceva cu \u201eZabbix\u201d?<\/p>\n<p><b>MC:<\/b> \u2013 Nu, destinde-te! Voiam doar s\u0103 spun: totul func\u021bioneaz\u0103, mul\u021bumesc! La mine berea.<\/p>\n<h3>Zabbix este eficient<\/h3>\n<p>\n\u201eZabbix\u201d este un sistem \u0219i func\u021bionalitate destul de versatil\u0103 \u0219i bogat\u0103. Poate fi utilizat cu u\u0219urin\u021b\u0103 pentru instal\u0103ri mici \u201edin cutie\u201d, dar pe m\u0103sur\u0103 ce nevoile cresc, trebuie optimizat. Pentru a stoca un arhiv\u0103 mare de metrici, utiliza\u021bi un depozit adecvat:<\/p>\n<ul>\n<li>pute\u021bi folosi instrumentele \u00eencorporate prin integrarea cu \u201eElasticsearch\u201d sau exportarea istoricului \u00een fi\u0219iere text (disponibil din versiunea a patra);<\/li>\n<li>pute\u021bi beneficia de experien\u021ba noastr\u0103 \u0219i integrarea cu \u201eClickHouse\u201d.<\/li>\n<\/ul>\n<p>\nPentru a cre\u0219te radical viteza de colectare a metricilor, colecta\u021bi-le prin metode asincrone \u0219i transmite\u021bi-le prin interfa\u021ba trapper c\u0103tre serverul \u201eZabbix\u201d; altfel, pute\u021bi folosi un patch pentru asincronicitatea pollerelor din Zabbix.<\/p>\n<p>Zabbix este scris \u00een C \u0219i este destul de eficient. Solu\u021bia, de\u0219i are c\u00e2teva locuri arhitecturale \u00eenguste, permite cre\u0219terea suplimentar\u0103 a performan\u021bei \u0219i, din experien\u021ba noastr\u0103, ob\u021binerea a peste 100 de mii de metrici pe o ma\u0219in\u0103 cu un singur procesor.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/46559b481b5e53dc3cc3d2562a94531d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Patch-ul Zabbix<\/h3>\n<p>\n<b>MM:<\/b> \u2013 Vreau s\u0103 adaug c\u00e2teva puncte. \u00centregul raport curent, toate testele, cifrele sunt prezentate pentru configura\u021bia pe care o folosim noi. De la aceasta, acum ob\u021binem aproximativ 20 de mii de metrici pe secund\u0103. Dac\u0103 \u00eencerca\u021bi s\u0103 \u00een\u021belege\u021bi dac\u0103 va func\u021biona pentru voi \u2013 pute\u021bi compara. Ceea ce am prezentat ast\u0103zi este disponibil pe GitHub sub form\u0103 de 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++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/e5880b2f01cb03809057db08306b23c7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPatch-ul include:<\/p>\n<ul>\n<li>integr\u0103ri complete cu ClickHouse (at\u00e2t serverele Zabbix, c\u00e2t \u0219i frontend-ul);<\/li>\n<li>rezolvarea problemelor cu managerul de preprocesare;<\/li>\n<li>polling asincron.<\/li>\n<\/ul>\n<p>\nPatch-ul este compatibil cu toat\u0103 versiunea 4, inclusiv cu lts. Cel mai probabil, cu modific\u0103ri minime, va func\u021biona \u0219i pe versiunea 3.4.<\/p>\n<p>V\u0103 mul\u021bumesc pentru aten\u021bie.<\/p>\n<h3>\u00centreb\u0103ri<\/h3>\n<p>\n\u00centrebare din public (A): \u2013 Bun\u0103 ziua! V\u0103 rog s\u0103-mi spune\u021bi, ave\u021bi planuri de interac\u021biune intensiv\u0103 cu echipa Zabbix sau ei cu voi, astfel \u00eenc\u00e2t s\u0103 nu fie un patch, ci un comportament normal al Zabbix?<\/p>\n<p><b>MM:<\/b> \u2013 Da, unele modific\u0103ri le vom \u00eenregistra cu siguran\u021b\u0103. Unele vor r\u0103m\u00e2ne \u00een patch.<\/p>\n<p><b>A:<\/b> \u2013 V\u0103 mul\u021bumesc foarte mult pentru prezentarea excelent\u0103! V\u0103 rog, dup\u0103 aplicarea patch-ului, va mai r\u0103m\u00e2ne suport din partea Zabbix \u0219i cum vom putea s\u0103 ne actualiz\u0103m la versiuni mai mari? Va exista posibilitatea de a actualiza Zabbix dup\u0103 patch-ul vostru p\u00e2n\u0103 la 4.2, 5.0?<\/p>\n<p><b>MM:<\/b> \u2013 Nu pot spune nimic despre suport. Dac\u0103 a\u0219 fi suport tehnic pentru Zabbix, probabil c\u0103 a\u0219 spune nu, deoarece este cod str\u0103in. \u00cen ceea ce prive\u0219te baza de cod 4.2, pozi\u021bia noastr\u0103 este urm\u0103toarea: \"Vom merge cu timpul \u0219i ne vom actualiza la urm\u0103toarea versiune\". Prin urmare, pentru o perioad\u0103 de timp vom publica patch-uri pentru versiunile actualizate. Am spus deja \u00een raport: num\u0103rul modific\u0103rilor \u00eentre versiuni este \u00eenc\u0103 destul de mic. Cred c\u0103 trecerea de la 3.4 la 4 ne-a durat, pare s\u0103 fie, vreo 15 minute. S-au schimbat unele lucruri, dar nu foarte importante.<\/p>\n<p><b>A:<\/b> \u2013 Deci, pl\u0103nuie\u0219ti s\u0103 men\u021bii patch-ul t\u0103u \u0219i se poate instala lini\u0219tit \u00een produc\u021bie, primind mai departe actualiz\u0103ri \u00eentr-un fel?<\/p>\n<p><b>MM:<\/b> \u2013 Recomand\u0103m cu t\u0103rie. Acest lucru ne rezolv\u0103 foarte multe probleme.<\/p>\n<p><b>MC:<\/b> \u2013 A\u0219 dori s\u0103 subliniez \u00eenc\u0103 o dat\u0103 c\u0103 modific\u0103rile care nu \u021bin de arhitectur\u0103 \u0219i nu implic\u0103 blocaje sau cozi sunt modulare, ele pot fi gestionate \u00een module separate. Chiar \u0219i pentru modific\u0103ri minore, acestea pot fi \u00eentre\u021binute destul de u\u0219or.<\/p>\n<p><b>MM:<\/b> \u2013 Dac\u0103 te intereseaz\u0103 detaliile, \u201eClickHouse\u201d utilizeaz\u0103 a\u0219a numita bibliotec\u0103 a istoricului. Aceasta este decuplat\u0103 \u2013 este o copie a suportului pentru \u201eElasticsearch\u201d, adic\u0103 poate fi modificat\u0103 prin configura\u021bie. Polling-ul schimb\u0103 doar pollerii. Consider\u0103m c\u0103 va func\u021biona mult timp.<\/p>\n<p><b>A:<\/b> \u2013 Mul\u021bumesc mult. \u00cemi po\u021bi spune dac\u0103 exist\u0103 vreo documenta\u021bie a modific\u0103rilor efectuate?<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Mihail Makurov, Maxim Chernetcov (Intersvyaz): Zabbix, 100kNVPS pe un singur server\" src=\"\/wp-content\/uploads\/2020\/02\/f3842ba578f736721c96794941b8f071.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>MM:<\/b> \u2013 Documenta\u021bia este un patch. Evident, odat\u0103 cu introducerea \u201eClickHouse\u201d, apar noi op\u021biuni de configurare cu noi tipuri de polleri. La linkul din ultima diapozitiv este o descriere scurt\u0103 despre cum s\u0103 folose\u0219ti asta.<\/p>\n<h3>Despre \u00eenlocuirea fping cu nmap<\/h3>\n<p>\n<b>A:<\/b> \u2013 Cum a\u021bi implementat aceasta? Po\u021bi da exemple concrete: ave\u021bi strappers \u0219i un script extern? Ce verific\u0103 at\u00e2t de repede o cantitate at\u00e2t de mare de hosts? Cum ob\u021bine\u021bi ace\u0219ti hosts? Trebuie s\u0103-i alimenta\u021bi pe nmap, s\u0103-i ob\u021bine\u021bi cumva, s\u0103-i plasa\u021bi, s\u0103 rula\u021bi ceva?<\/p>\n<p><b>MM:<\/b> \u2013 Super. O \u00eentrebare foarte corect\u0103! Esen\u021ba este aceasta. Am modificat biblioteca (ICMP ping, parte a \u201eZabbix\u201d) pentru verific\u0103rile ICMP, \u00een care este specificat num\u0103rul de pachete \u2013 o unitate (1), iar codul \u00eencearc\u0103 s\u0103 foloseasc\u0103 nmap. Asta \u00eenseamn\u0103 c\u0103 este o munc\u0103 intern\u0103 a \u201eZabbix\u201d, a devenit o munc\u0103 intern\u0103 a ping-erului. Prin urmare, nu este necesar\u0103 sincronizarea sau utilizarea trapper-ului. Acest lucru a fost f\u0103cut con\u0219tient pentru a men\u021bine sistemul integru \u0219i a nu ne preocupa de sincronizarea a dou\u0103 sisteme de baze: ce s\u0103 verific\u0103m, s\u0103 \u00eencarc\u0103m prin polling, \u0219i dac\u0103 nu s-a stricat \u00eencarc\u0103ciunea?... Este mult mai simplu.<\/p>\n<p><b>A:<\/b> \u2013 Func\u021bioneaz\u0103 \u0219i pentru proxy-uri?<\/p>\n<p><b>MM:<\/b> \u2013 Da, dar nu am verificat. Codul de polling este acela\u0219i \u00een \u201eZabbix\u201d \u0219i pe server. Ar trebui s\u0103 func\u021bioneze. Reiterez: performan\u021ba sistemului este astfel \u00eenc\u00e2t nu avem nevoie de proxy.<\/p>\n<p><b>MC:<\/b> \u2013 R\u0103spunsul corect la \u00eentrebare este: \u201eDe ce ave\u021bi nevoie de proxy \u00eentr-un astfel de sistem?\u201d Numai din cauza NAT-ului sau pentru a monitoriza printr-un canal lent?<\/p>\n<p><b>A:<\/b> \u2013 \u0218i folosi\u021bi \u201eZabbix\u201d ca alertor, dac\u0103 am \u00een\u021beles corect. Sau graficele (unde stratul arhivistic) le-a\u021bi mutat \u00eentr-un alt sistem, cum ar fi Grafana? Sau nu folosi\u021bi aceast\u0103 func\u021bionalitate?<\/p>\n<p><b>MM:<\/b> \u2013 Reiterez c\u0103 am realizat o integrare complet\u0103. Transfer\u0103m istoria \u00een \u00abClickHouse\u00bb, dar am modificat frontendul PHP. Frontendul PHP acceseaz\u0103 \u00abClickHouse\u00bb \u0219i creeaz\u0103 toate graficele de acolo. De fapt, avem o parte care genereaz\u0103 date \u00een alte sisteme de vizualizare grafic\u0103 din acelea\u0219i date din \u00abClickHouse\u00bb \u0219i din \u00abZabbix\u00bb.<\/p>\n<p><b>MC:<\/b> \u2013 Inclusiv \u00een \u00abGrafana\u00bb.<\/p>\n<h3>Cum a fost luat\u0103 decizia de a aloca resurse?<\/h3>\n<p>\n<b>A:<\/b> \u2013 \u00cemp\u0103rt\u0103\u0219i\u021bi-ne pu\u021bin din culisele interne. Cum a fost luat\u0103 decizia c\u0103 este necesar s\u0103 aloc\u0103m resurse pentru o reproiectare serioas\u0103 a produsului? Acest lucru, \u00een general, implic\u0103 anumite riscuri. \u0218i v\u0103 rog, \u00een contextul \u00een care dori\u021bi s\u0103 sus\u021bine\u021bi versiuni noi: cum este justificat\u0103 aceast\u0103 decizie din perspectiva managementului?<\/p>\n<p><b>MM:<\/b> \u2013 Se pare c\u0103 nara\u021biunea noastr\u0103 nu a fost foarte bine spus\u0103. Ne-am aflat \u00eentr-o situa\u021bie \u00een care trebuia s\u0103 facem ceva \u0219i am mers \u00een esen\u021b\u0103 cu dou\u0103 echipe paralele:<\/p>\n<ul>\n<li>Una s-a ocupat de lansarea sistemului de monitorizare pe noi metode: monitorizare ca serviciu, un set standard de solu\u021bii open-source pe care le combin\u0103m \u0219i apoi \u00eencerc\u0103m s\u0103 schimb\u0103m procesele de afaceri pentru a lucra cu noul sistem de monitorizare.<\/li>\n<li>\u00cen paralel, am avut un programator entuziast care s-a ocupat de acest lucru (vorbind despre sine). A\u0219a s-a \u00eent\u00e2mplat c\u0103 el a c\u00e2\u0219tigat.<\/li>\n<\/ul>\n<p>\n<b>A:<\/b> \u2013 \u0218i care este dimensiunea echipei?<\/p>\n<p><b>MC:<\/b> \u2013 Ei sunt \u00een fa\u021ba dumneavoastr\u0103.<\/p>\n<p><b>A:<\/b> \u2013 Deci, ca de obicei, este nevoie de un pasionar?<\/p>\n<p><b>MM:<\/b> \u2013 Nu \u0219tiu ce \u00eenseamn\u0103 pasionar.<\/p>\n<p><b>A:<\/b> \u2013 \u00cen acest caz, probabil, sunte\u021bi dumneavoastr\u0103. V\u0103 mul\u021bumim mult, sunte\u021bi grozavi.<\/p>\n<p><b>MM:<\/b> \u2013 Mul\u021bumesc.<\/p>\n<h3>Despre patch-uri pentru Zabbix<\/h3>\n<p>\n<b>A:<\/b> \u2013 Pentru un sistem care folose\u0219te proxy (de exemplu, \u00een anumite sisteme distribuite), este posibil s\u0103 adapta\u021bi solu\u021bia dumneavoastr\u0103 \u0219i s\u0103 patch-ui\u021bi, s\u0103 zicem, pollerele, proxy-urile \u0219i par\u021bial preprocesorul propriu-zis al \u00abZabbix\u00bb-ului; \u0219i interac\u021biunea lor? Este posibil s\u0103 optimiza\u021bi solu\u021biile existente pentru un sistem cu mai multe proxy-uri?<\/p>\n<p><b>MM:<\/b> \u2013 \u0218tiu c\u0103 serverul \u00abZabbix\u00bb este construit cu ajutorul proxy-urilor (se compileaz\u0103 \u0219i rezult\u0103 un cod). Nu am verificat acest lucru \u00een produc\u021bie. Nu sunt sigur de aceasta, dar, din c\u00e2te \u0219tiu, preprocesorul-manager nu este folosit \u00een proxy. Sarcina proxy-ului este de a prelua un set de metrici din \u00abZabbix\u00bb, a le einternaliza (scrie de asemenea configura\u021bia, baza de date local\u0103) \u0219i a le trimite \u00eenapoi serverului \u00abZabbix\u00bb. Preprocesarea va fi realizat\u0103 ulterior de serverul \u00eensu\u0219i, atunci c\u00e2nd le va primi.<\/p>\n<p>Interesul pentru proxy este evident. Vom verifica asta. Este o tem\u0103 interesant\u0103.<\/p>\n<p><b>A:<\/b> \u2013 Ideea era aceasta: dac\u0103 putem patch-ui pollere, putem patch-ui pe proxy \u0219i adapta interac\u021biunea cu serverul, iar preprocesorul pentru aceste scopuri s\u0103 fie adaptat doar pe server.<\/p>\n<p><b>MM:<\/b> \u2013 Cred c\u0103 este chiar mai simplu. Lua\u021bi codul, aplica\u021bi patch-ul, apoi configura\u021bi-l a\u0219a cum ave\u021bi nevoie \u2013 construi\u021bi proxy-uri (de exemplu, cu ODBC) \u0219i distribui\u021bi codul patch-uit \u00een sisteme. Acolo unde e nevoie \u2013 construi\u021bi proxy, unde e nevoie \u2013 server.<\/p>\n<p><b>A:<\/b> \u2013 Nu va fi necesar s\u0103 patch-ui\u021bi suplimentar transferul proxy c\u0103tre server, cel mai probabil?<\/p>\n<p><b>MC:<\/b> \u2013 Nu, este standard.<\/p>\n<p><b>MM:<\/b> \u2013 De fapt, nu a fost men\u021bionat\u0103 una dintre idei. Am respectat \u00eentotdeauna un echilibru \u00eentre explozia ideilor \u0219i num\u0103rul de modific\u0103ri, u\u0219urin\u021ba de suport.<\/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=\"Reda\u021bi 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>Pu\u021bin publicitate \ud83d\ude42<\/h3>\n<p>\nMul\u021bumim c\u0103 r\u0103m\u00e2ne\u021bi cu noi. V\u0103 plac articolele noastre? Dori\u021bi s\u0103 vede\u021bi mai multe materiale interesante? Sus\u021bine\u021bi-ne, efectu\u00e2nd o comand\u0103 sau recomand\u00e2ndu-ne prietenilor, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">VPS cloud pentru dezvoltatori de la 4,99 $<\/a><\/noindex>, <b>un echivalent unic pentru serverele entry-level, care a fost creat de noi pentru voi:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Toat\u0103 adev\u0103rul despre VPS (KVM) E5-2697 v3 (6 nuclee) 10GB DDR4 480GB SSD 1Gbps de la 19 $ sau cum s\u0103 \u00eemp\u0103r\u021bi\u021bi corect un server?<\/a><\/noindex> (sunt disponibile op\u021biuni cu RAID1 \u0219i RAID10, p\u00e2n\u0103 la 24 nuclee \u0219i p\u00e2n\u0103 la 40GB DDR4).<\/p>\n<p><b>Dell R730xd la jum\u0103tate de pre\u021b \u00een centrul de date Equinix Tier IV din Amsterdam?<\/b> Numai la noi <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 de la 199 $<\/a><\/noindex> \u00een Olanda! <b>Dell R420 \u2014 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 de la 99 $!<\/b><\/b> Citi\u021bi despre <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Cum s\u0103 construi\u021bi o infrastructur\u0103 de clas\u0103 enterprise folosind servere Dell R730xd E5-2650 v4 la pre\u021buri foarte mici de 9000 \u20ac?<\/a><\/noindex><br \/>\n<br \/>Sursa: <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.2.1 - 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\/ro\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/blog\/administrirovanie\/highload-mihail-makurov-maksim-chernetsov-intersvyaz-zabbix-100knvps-na-odnom-servere\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-03T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:04:13+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47HighLoad++, Mihail Macurov, Maxim \u010cernecov (Interserv): Zabbix, 100kNVPS pe un singur server | ProHoster","description":"\u00cen urm\u0103toarea conferin\u021b\u0103 HighLoad++ va avea loc pe 6 \u0219i 7 aprilie 2020 la Sankt-Petersburg. Detalii \u0219i bilete la link.","canonical_url":"https:\/\/prohoster.info\/ro\/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":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/56049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=56049"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/56049\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=56049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=56049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=56049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}