HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ang sunod nga HighLoad++ nga komperensya ipahigayon sa Abril 6 ug 7, 2020 sa St. Petersburg Mga Detalye ug mga tiket link. HighLoad++ Moscow 2018. Hall "Moscow". Nobyembre 9, 15:00. Theses ug pagpasundayag.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

* Pag-monitor - online ug analytics.
* Panguna nga mga limitasyon sa platform sa ZABBIX.
* Solusyon alang sa pag-scale sa pagtipig sa analytics.
* Pag-optimize sa ZABBIX server.
* Pag-optimize sa UI.
* Makasinati sa pag-operate sa sistema ubos sa mga load nga labaw sa 40k NVPS.
* Mubo nga mga konklusyon.

Mikhail Makurov (pagkahuman niini - MM): - Kumusta tanan!

Maxim Chernetsov (pagkahuman niini - MCH): - Maayong hapon!

MM: – Tugoti ako nga ipaila si Maxim. Si Max usa ka talented nga engineer, ang labing maayo nga networker nga akong nailhan. Si Maxim nalangkit sa mga network ug serbisyo, sa ilang pag-uswag ug operasyon.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MCH: – Ug gusto kong isulti kanimo ang bahin ni Mikhail. Si Mikhail usa ka developer sa C. Gisulat niya ang daghang mga solusyon sa pagproseso sa trapiko nga taas ang karga alang sa among kompanya. Nagpuyo kami ug nagtrabaho sa mga Urals, sa lungsod sa gahi nga mga lalaki nga Chelyabinsk, sa kompanya nga Intersvyaz. Ang among kompanya usa ka tighatag sa mga serbisyo sa Internet ug cable telebisyon alang sa usa ka milyon nga mga tawo sa 16 nga mga lungsod.

MM: - Ug angay nga isulti nga ang Intersvyaz labi pa sa usa ka tighatag, kini usa ka kompanya sa IT. Kadaghanan sa among mga solusyon gihimo sa among departamento sa IT.

A: gikan sa mga server nga nagproseso sa trapiko ngadto sa call center ug mobile application. Ang departamento sa IT karon adunay mga 80 ka mga tawo nga adunay lahi kaayo nga mga kahanas.

Mahitungod sa Zabbix ug sa arkitektura niini

MCH: – Ug karon sulayan nako nga magbutang usa ka personal nga rekord ug isulti sa usa ka minuto kung unsa ang Zabbix ​​(gitawag nga "Zabbix").

Gipahimutang sa Zabbix ang kaugalingon isip usa ka lebel sa negosyo nga out-of-the-box monitoring system. Kini adunay daghang mga bahin nga naghimo sa kinabuhi nga mas sayon: advanced escalation rules, API alang sa integration, grouping ug auto-detection sa mga host ug metrics. Ang Zabbix adunay gitawag nga mga himan sa pag-scale - mga proxy. Ang Zabbix usa ka open source system.

Sa mubo bahin sa arkitektura. Makaingon kita nga kini naglangkob sa tulo ka mga sangkap:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

  • Server. Gisulat sa C. Uban sa medyo komplikado nga pagproseso ug pagbalhin sa kasayuran tali sa mga hilo. Ang tanan nga pagproseso mahitabo niini: gikan sa pagdawat hangtod sa pagtipig sa database.
  • Ang tanan nga datos gitipigan sa database. Gisuportahan sa Zabbix ang MySQL, PostreSQL ug Oracle.
  • Ang web interface gisulat sa PHP. Sa kadaghanan nga mga sistema kini adunay usa ka Apache server, apan nagtrabaho nga mas episyente sa kombinasyon sa nginx + php.

Karon gusto namong isulti ang usa ka istorya gikan sa kinabuhi sa among kompanya nga may kalabotan sa Zabbix...

Usa ka istorya gikan sa kinabuhi sa Intersvyaz nga kompanya. Unsa ang naa kanato ug unsa ang atong gikinahanglan?

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server
5 o 6 ka bulan ang milabay. Usa ka adlaw pagkahuman sa trabaho ...

MCH: - Misha, hello! Nalipay ko nga nasakpan ko ikaw - adunay usa ka panag-istoryahanay. Nagkaproblema na usab kami sa pagmonitor. Atol sa usa ka dakong aksidente, hinay ang tanan ug walay impormasyon bahin sa kahimtang sa network. Ikasubo, dili kini ang unang higayon nga nahitabo kini. Nanginahanglan ko sa imong tabang. Himoon nato nga molihok ang atong pagmonitor ubos sa bisan unsang kahimtang!

MM: - Pero magdungan ta una. Pila na ka tuig nga wala ko mangita didto. Sa akong nahinumduman, gibiyaan namo ang Nagios ug mibalhin sa Zabbix mga 8 ka tuig na ang milabay. Ug karon daw kami adunay 6 ka gamhanan nga mga server ug mga usa ka dosena nga mga proxy. Nalibog ba ko?

MCH: - Hapit. 15 nga mga server, ang pipila niini mga virtual machine. Ang labing importante nga butang mao nga kini dili makaluwas kanato sa higayon nga kita nagkinahanglan niini. Sama sa usa ka aksidente - ang mga server hinay ug wala ka makakita bisan unsa. Gisulayan namon nga ma-optimize ang pag-configure, apan wala kini maghatag labing maayo nga pagtaas sa pasundayag.

MM: - Klaro na. Nakakita ka ba sa usa ka butang, nakalot ka na ba sa usa ka butang gikan sa mga diagnostic?

MCH: – Ang unang butang nga kinahanglan nimong atubangon mao ang database. Ang MySQL kanunay nga gikarga, nagtipig sa mga bag-ong sukatan, ug kung ang Zabbix nagsugod sa pagmugna og daghang mga panghitabo, ang database na-overdrive sa literal nga pila ka oras. Gisultihan ko na ikaw mahitungod sa pag-optimize sa configuration, apan sa literal karong tuiga gi-update nila ang hardware: ang mga server adunay labaw pa sa usa ka gatos nga gigabytes nga memorya ug mga disk arrays sa SSD RAIDs - walay punto sa pagtubo niini nga linearly sa taas nga termino. Unsay atong buhaton?

MM: - Klaro na. Sa kinatibuk-an, ang MySQL usa ka database sa LTP. Dayag, dili na kini angay alang sa pagtipig sa usa ka archive sa mga sukatan sa among gidak-on. Atong hisgotan kini.

MCH: - Atong!

Paghiusa sa Zabbix ug Clickhouse isip resulta sa hackathon

Pagkahuman sa pila ka oras nakadawat kami makapaikag nga datos:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Kadaghanan sa luna sa among database giokupahan sa metrics archive ug ubos sa 1% ang gigamit para sa configuration, templates ug settings. Niadtong panahona, nag-operate na kami sa Big data solution base sa Clickhouse sulod sa kapin sa usa ka tuig. Ang direksyon sa paglihok klaro kanamo. Sa among Spring Hackathon, akong gisulat ang panagsama sa Zabbix sa Clickhouse alang sa server ug frontend. Nianang panahona, ang Zabbix adunay suporta alang sa ElasticSearch, ug nakahukom kami nga itandi kini.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Pagtandi sa Clickhouse ug Elasticsearch

MM: - Alang sa pagtandi, nakamugna kami sa parehas nga karga sama sa gihatag sa server sa Zabbix ug gitan-aw kung giunsa ang paglihok sa mga sistema. Gisulat namo ang datos sa mga batch sa 1000 ka linya, gamit ang CURL. Naghunahuna kami daan nga ang Clickhouse mahimong mas episyente alang sa load profile nga gihimo ni Zabbix. Ang mga resulta milabaw pa gani sa among gipaabot:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ubos sa parehas nga mga kondisyon sa pagsulay, ang Clickhouse nagsulat tulo ka beses nga dugang nga datos. Sa parehas nga oras, ang duha nga mga sistema epektibo kaayo nga gigamit (gamay nga kantidad sa mga kapanguhaan) kung nagbasa sa datos. Apan ang Elastics nanginahanglan daghang processor sa pagrekord:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Sa kinatibuk-an, ang Clickhouse labi ka labaw sa Elastix sa mga termino sa pagkonsumo ug katulin sa processor. Sa samang higayon, tungod sa data compression, ang Clickhouse naggamit sa 11 ka beses nga mas gamay sa hard drive ug naghimo sa gibana-bana nga 30 ka beses nga mas gamay nga mga operasyon sa disk:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MCH: - Oo, ang trabaho sa Clickhouse sa disk subsystem gipatuman nga epektibo kaayo. Mahimo nimong gamiton ang dagkong mga disk sa SATA alang sa mga database ug makakuha og katulin sa pagsulat nga gatusan ka libo nga linya matag segundo. Ang out-of-the-box system nagsuporta sa sharding, replication, ug sayon ​​kaayo nga i-configure. Mas natagbaw kami sa paggamit niini sa tibuok tuig.

Aron ma-optimize ang mga kapanguhaan, mahimo nimong i-install ang Clickhouse sunod sa imong nag-una nga database ug sa ingon makatipig daghang oras sa CPU ug mga operasyon sa disk. Gibalhin namo ang archive sa metrics ngadto sa kasamtangan nga Clickhouse clusters:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Among gihupay ang nag-unang database sa MySQL nga mahimo namong ikombinar sa usa ka makina uban sa Zabbix server ug biyaan ang gipahinungod nga server alang sa MySQL.

Giunsa ang pagbotar sa Zabbix?

4 mga bulan ang milabay

MM: – Aw, makalimot ba kita sa mga problema sa base?

MCH: - Kana segurado! Ang laing problema nga kinahanglan natong sulbaron mao ang hinay nga pagkolekta sa datos. Karon ang tanan namong 15 ka proxy server napuno sa SNMP ug mga proseso sa pagboto. Ug walay paagi gawas sa pag-instalar sa bag-o ug bag-ong mga server.

MM: - Nindot. Apan una isulti kanamo kung giunsa ang pagbotar sa Zabbix?

MCH: - Sa laktud, adunay 20 nga mga matang sa mga sukatan ug usa ka dosena nga mga paagi aron makuha kini. Ang Zabbix mahimong mangolekta og datos sa mode nga "request-response", o maghulat sa bag-ong datos pinaagi sa "Trapper Interface".

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Angay nga matikdan nga sa orihinal nga Zabbix kini nga pamaagi (Trapper) mao ang labing paspas.

Adunay mga proxy server alang sa pag-apod-apod sa load:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ang mga proxy makahimo sa parehas nga mga gimbuhaton sa pagkolekta sama sa server sa Zabbix, makadawat mga buluhaton gikan niini ug ipadala ang mga nakolekta nga sukatan pinaagi sa interface sa Trapper. Kini ang opisyal nga girekomenda nga paagi sa pag-apod-apod sa load. Mapuslanon usab ang mga proxy alang sa pagmonitor sa hilit nga imprastraktura nga naglihok pinaagi sa NAT o usa ka hinay nga channel:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MM: - Ang tanan klaro sa arkitektura. Kinahanglan natong tan-awon ang mga tinubdan ...

Paglabay sa pipila ka adlaw

Ang istorya kung giunsa nakadaog ang nmap fping

MM: "Sa akong hunahuna adunay akong gikalot."

MCH: - Ingna ko!

MM: – Akong nadiskobrehan nga sa dihang nagsusi sa pagkaanaa, ang Zabbix nagsusi sa labing taas nga 128 ka mga host matag higayon. Gisulayan nako ang pagdugang niini nga numero ngadto sa 500 ug gitangtang ang inter-packet interval sa ilang ping (ping) - kini nagdoble sa performance. Apan gusto nako ang daghang mga numero.

MCH: – Sa akong praktis, usahay kinahanglan kong susihon ang pagkaanaa sa libu-libo nga mga host, ug wala pa ako nakakita bisan unsa nga mas paspas kaysa nmap alang niini. Sigurado ko nga kini ang labing paspas nga paagi. Atong sulayan kini! Kinahanglan namon nga madugangan ang gidaghanon sa mga host matag pag-uli.

MM: – Susihon ang labaw sa lima ka gatos? 600?

MCH: - Labing menos usa ka magtiayon nga libo.

MM: - OK. Ang labing hinungdanon nga butang nga gusto nakong isulti mao nga akong nahibal-an nga kadaghanan sa pagboto sa Zabbix gihimo nga dungan. Kinahanglan gyud namong usbon kini sa asynchronous mode. Dayon mahimo natong madugangan ang gidaghanon sa mga sukatan nga nakolekta sa mga poller, ilabi na kung atong dugangan ang gidaghanon sa mga sukatan kada pag-uli.

MCH: - Nindot! Ug kanus-a?

MM: – Sama sa naandan, kagahapon.

MCH: – Gikumpara namo ang duha ka bersiyon sa fping ug nmap:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Sa daghang mga host, ang nmap gilauman nga hangtod sa lima ka beses nga labi ka epektibo. Tungod kay gisusi ra sa nmap ang pagkaanaa ug oras sa pagtubag, gibalhin namon ang kalkulasyon sa mga pagkawala sa mga nag-trigger ug labi nga nakunhuran ang mga agwat sa pagsusi sa pagkaanaa. Among nakit-an ang kamalaumon nga gidaghanon sa mga host alang sa nmap nga mga 4 ka libo matag pag-uli. Gitugotan kami sa Nmap nga makunhuran ang gasto sa CPU sa mga pagsusi sa pagkaanaa sa tulo ka beses ug makunhuran ang agwat gikan sa 120 segundos hangtod sa 10.

Pag-optimize sa botohan

MM: "Dayon nagsugod kami sa paghimo og mga poller. Nag-una kami nga interesado sa SNMP detection ug mga ahente. Sa Zabbix, dungan nga gihimo ang botohan ug gihimo ang mga espesyal nga lakang aron madugangan ang kahusayan sa sistema. Sa synchronous mode, ang host unavailability hinungdan sa mahinungdanon nga polling degradation. Adunay usa ka tibuuk nga sistema sa mga estado, adunay mga espesyal nga proseso - ang gitawag nga dili maabot nga mga poller, nga nagtrabaho lamang sa dili maabot nga mga host:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Kini usa ka komentaryo nga nagpakita sa state matrix, ang tanan nga pagkakomplikado sa sistema sa mga transisyon nga gikinahanglan aron ang sistema magpabilin nga epektibo. Dugang pa, ang synchronous polling mismo hinay kaayo:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Mao nga ang libu-libo nga mga poller stream sa daghang mga proxy dili makakolekta sa gikinahanglan nga kantidad sa datos alang kanamo. Ang asynchronous nga pagpatuman nakasulbad dili lamang sa mga problema sa gidaghanon sa mga hilo, apan usab sa kamahinungdanon nga gipasimple ang sistema sa estado sa dili magamit nga mga host, tungod kay alang sa bisan unsang numero nga gisusi sa usa ka pag-uli sa botohan, ang labing taas nga oras sa paghulat mao ang 1 nga oras:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Dugang pa, among giusab ug gipaayo ang sistema sa botohan alang sa mga hangyo sa SNMP. Ang tinuod mao nga kadaghanan sa mga tawo dili makatubag sa daghang mga hangyo sa SNMP sa parehas nga oras. Busa, naghimo kami usa ka hybrid mode, kung ang SNMP polling sa parehas nga host gihimo nga asynchronously:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Gihimo kini alang sa tibuuk nga hugpong sa mga host. Kini nga mode sa katapusan dili mas hinay kaysa usa ka hingpit nga asynchronous, tungod kay ang pagboto sa usa ug tunga ka gatos nga mga kantidad sa SNMP labi ka paspas kaysa 1 nga timeout.

Gipakita sa among mga eksperimento nga ang labing kaayo nga gidaghanon sa mga hangyo sa usa ka pag-uli mao ang gibana-bana nga 8 ka libo nga adunay polling sa SNMP. Sa kinatibuk-an, ang transisyon ngadto sa asynchronous mode nagtugot kanamo sa pagpadali sa pasundayag sa botohan sa 200 ka beses, pipila ka gatos ka beses.

MCH: – Ang resulta nga polling optimizations nagpakita nga dili lang nato matangtang ang tanang proxy, apan mapakunhod usab ang mga agwat sa daghang mga tseke, ug dili na kinahanglan ang mga proxy isip paagi sa pagpaambit sa load.

Mga tulo ka bulan ang milabay

Usba ang arkitektura - dugangi ang load!

MM: - Aw, Max, panahon na ba aron mahimong produktibo? Nagkinahanglan ko og gamhanang server ug maayong engineer.

MCH: - Okay, planohon nato kini. Panahon na nga mobalhin gikan sa patay nga punto sa 5 ka libo nga metrics matag segundo.

Buntag pagkahuman sa pag-upgrade

MCH: - Misha, gi-update namo ang among kaugalingon, apan sa buntag mibalik kami ... Tag-ana unsa nga katulin ang among nahimo?

MM: – 20 ka libo nga maximum.

MCH: - Oo nga, 25! Ikasubo, naa mi sa diin kami nagsugod.

MM: - Ngano man? Naghimo ka ba og bisan unsang diagnostics?

MCH: - Oo, sigurado! Dinhi, pananglitan, usa ka makapaikag nga tumoy:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MM: - Tan-awon nato. Akong nakita nga nasulayan na namo ang daghang gidaghanon sa mga polling thread:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Apan sa samang higayon dili nila ma-recycle ang sistema bisan sa katunga:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ug ang kinatibuk-ang pasundayag gamay ra, mga 4 ka libo nga sukatan matag segundo:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

naa pa bay lain?

MCH: - Oo, tipik sa usa sa mga poller:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MM: – Dinhi klaro nimong makita nga ang proseso sa pagboto naghulat alang sa mga "semaphore". Mao kini ang mga kandado:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MCH: - Dili klaro.

MM: – Tan-awa, kini susama sa usa ka sitwasyon diin ang usa ka hugpong sa mga hilo naningkamot sa pagtrabaho uban sa mga kapanguhaan nga usa lamang ang makatrabaho sa usa ka higayon. Unya ang tanan nga ilang mahimo mao ang pagpaambit niini nga kapanguhaan sa paglabay sa panahon:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ug ang kinatibuk-ang pasundayag sa pagtrabaho sa ingon nga kapanguhaan limitado sa katulin sa usa ka kinauyokan:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Adunay duha ka paagi sa pagsulbad niini nga problema.

I-upgrade ang hardware sa makina, ibalhin sa mas paspas nga mga cores:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

O usba ang arkitektura ug sa samang higayon usba ang load:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MCH: - Pinaagi sa dalan, sa makina sa pagsulay mogamit kami labi ka gamay nga mga core kaysa sa usa nga kombat, apan kini 1,5 ka beses nga mas paspas sa frequency matag core!

MM: - Klaro? Kinahanglan nimong tan-awon ang code sa server.

Ang agianan sa datos sa server sa Zabbix

MCH: - Aron mahibal-an kini, nagsugod kami sa pag-analisar kung giunsa ang pagbalhin sa datos sa sulod sa server sa Zabbix:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Nindot nga hulagway, di ba? Ato kining tun-an sa mga lakang aron kini mas klaro. Adunay mga thread ug serbisyo nga responsable sa pagkolekta sa datos:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Gipadala nila ang nakolekta nga mga sukatan pinaagi sa usa ka socket ngadto sa tagdumala sa Preprocessor, diin kini gitipigan sa usa ka pila:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ang "preprocessor manager" nagpadala sa datos ngadto sa mga trabahante niini, nga nagpatuman sa mga instruksyon sa preprocessing ug ibalik kini pinaagi sa samang socket:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Pagkahuman niini, gitipigan kini sa tagdumala sa preprocessor sa cache sa kasaysayan:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Gikan didto gikuha sila sa mga sinkers sa kasaysayan, nga naghimo sa daghang mga gimbuhaton: pananglitan, pagkalkula sa mga nag-trigger, pagpuno sa kantidad nga cache ug, labing hinungdanon, pag-save sa mga sukatan sa pagtipig sa kasaysayan. Sa kinatibuk-an, ang proseso komplikado ug makalibog kaayo.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MM: - Ang una nga butang nga among nakita mao nga kadaghanan sa mga hilo nakigkompetensya alang sa gitawag nga "cache sa pag-configure" (ang lugar sa panumduman diin gitipigan ang tanan nga mga pag-configure sa server). Ang mga thread nga responsable sa pagkolekta sa datos labi na ang daghang pag-block:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

...tungod kay ang configuration nagtipig dili lamang sa mga metrics uban sa ilang mga parameter, apan usab sa mga pila gikan diin ang mga poller nagkuha og impormasyon mahitungod sa unsay sunod nga buhaton. Kung adunay daghang mga poller ug ang usa nag-block sa pag-configure, ang uban naghulat alang sa mga hangyo:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ang mga poller kinahanglan dili magkasumpaki

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Busa, ang una nga butang nga among gibuhat mao ang pagbahin sa pila sa 4 nga mga bahin ug gitugotan ang mga poller nga babagan kini nga mga pila, kini nga mga bahin sa parehas nga oras, sa ilawom sa luwas nga mga kondisyon:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Gitangtang niini ang kompetisyon alang sa cache sa pag-configure, ug ang katulin sa mga poller miuswag pag-ayo. Apan pagkahuman nahibal-an namon ang kamatuoran nga ang tagdumala sa preprocessor nagsugod sa pagtipon sa usa ka pila sa mga trabaho:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ang manedyer sa preprocessor kinahanglan nga makahimo sa pag-prioritize

Kini nahitabo sa mga kaso diin siya kulang sa performance. Unya ang tanan nga mahimo niya mao ang pagtigum sa mga hangyo gikan sa mga proseso sa pagkolekta sa datos ug idugang ang ilang buffer hangtod nga mahurot ang tanan nga panumduman ug nahagsa:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Aron masulbad kini nga problema, gidugang namo ang ikaduhang socket nga espesipikong gipahinungod sa mga trabahante:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Sa ingon, ang tagdumala sa preprocessor adunay higayon nga unahon ang trabaho niini ug, kung ang buffer motubo, ang tahas mao ang pagpahinay sa pagtangtang, paghatag higayon sa mga trabahante nga makuha kini nga buffer:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Dayon among nadiskobrehan nga usa sa mga hinungdan sa paghinay mao ang mga trabahante mismo, tungod kay sila nakigkompetensya alang sa usa ka kapanguhaan nga hingpit nga dili importante alang sa ilang trabaho. Among gidokumento kini nga problema isip usa ka bug-fix, ug kini nasulbad na sa bag-ong mga bersyon sa Zabbix:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Gidugangan namon ang gidaghanon sa mga socket - nakuha namon ang resulta

Dugang pa, ang manedyer sa preprocessor mismo nahimong usa ka bottleneck, tungod kay kini usa ka hilo. Nagpahulay kini sa kinauyokan nga katulin, nga naghatag usa ka labing kataas nga katulin nga hapit 70 ka libo nga metric matag segundo:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Busa, naghimo kami og upat, nga adunay upat ka set sa mga socket, mga trabahante:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ug kini nagtugot kanamo nga madugangan ang katulin sa gibana-bana nga 130 ka libo nga sukatan:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ang non-linearity sa pagtubo gipatin-aw sa kamatuoran nga ang kompetisyon alang sa cache sa kasaysayan nagpakita. 4 preprocessor managers ug history sinkers nakigkompetensya alang niini. Niini nga punto, nakadawat kami og gibana-bana nga 130 ka libo nga metrics kada segundo sa test machine, nga gigamit kini sa gibana-bana nga 95% sa processor:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Mga 2,5 ka bulan ang milabay

Ang pagdumili gikan sa snmp-komunidad nagdugang sa mga NVP sa usa ug tunga ka beses

MM: – Max, nagkinahanglan ko og bag-ong test car! Dili na ta angay sa kasamtangan.

MCH: - Unsay naa nimo karon?

MM: – Karon – 130k NVPs ug usa ka shelf-ready nga processor.

MCH: - Wow! Bugnaw! Wait, naa koy duha ka pangutana. Sumala sa akong mga kalkulasyon, ang atong panginahanglan kay mga 15-20 thousand metrics per second. Nganong nagkinahanglan pa ta ug dugang?

MM: “Gusto kong tapuson ang trabaho.” Gusto nako nga tan-awon kung unsa kadaghan ang mahimo naton nga makuha gikan sa kini nga sistema.

MCH: - Apan…

MM: "Apan kini walay kapuslanan alang sa negosyo."

MCH: - Klaro na. Ug ang ikaduha nga pangutana: mahimo ba naton suportahan kung unsa ang naa sa atong kaugalingon, kung wala ang tabang sa usa ka developer?

MM: - Wala ko maghunahuna. Ang pagbag-o kung giunsa ang paggana sa cache sa pag-configure usa ka problema. Nakaapekto kini sa mga pagbag-o sa kadaghanan nga mga hilo ug lisud nga mapadayon. Lagmit, lisod kaayo ang pagmentinar niini.

MCH: "Unya kinahanglan namon ang usa ka matang sa alternatibo."

MM: - Adunay ingon nga kapilian. Mahimo kitang mobalhin sa paspas nga mga core, samtang gibiyaan ang bag-ong sistema sa pag-lock. Makakuha gihapon kita og performance nga 60-80 thousand metrics. Sa samang higayon, mahimo natong biyaan ang tanan nga nahibilin sa code. Ang Clickhouse ug asynchronous nga polling molihok. Ug kini mahimong sayon ​​sa pagmentinar.

MCH: - Talagsaon! Gisugyot ko nga mohunong kita dinhi.

Human sa pag-optimize sa bahin sa server, sa katapusan nakahimo kami sa paglansad sa bag-ong code ngadto sa produksyon. Gibiyaan namo ang pipila sa mga pagbag-o pabor sa pagbalhin ngadto sa usa ka makina nga adunay paspas nga mga cores ug pagminus sa gidaghanon sa mga pagbag-o sa code. Gipasimple usab namo ang pag-configure ug gitangtang ang mga macro sa mga aytem sa datos kung mahimo, samtang gipaila nila ang dugang nga pag-lock.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Pananglitan, ang pagbiya sa snmp-community macro, nga sagad makita sa dokumentasyon ug mga panig-ingnan, sa among kaso nagpaposible sa dugang nga pagpadali sa mga NVP sa mga 1,5 ka beses.

Human sa duha ka adlaw sa produksyon

Pagtangtang sa mga pop-up sa kasaysayan sa insidente

MCH: - Misha, duha na ka adlaw nga gigamit namon ang sistema, ug ang tanan nagtrabaho. Apan kung ang tanan molihok! Nagplano kami nga magtrabaho uban ang pagbalhin sa usa ka medyo dako nga bahin sa network, ug among gisusi pag-usab gamit ang among mga kamot kung unsa ang misaka ug kung unsa ang wala.

MM: - Dili mahimo! Gisusi namo ang tanan 10 ka beses. Gidumala sa server bisan ang kompleto nga pagkadili magamit sa network dayon.

MCH: - Oo, nasabtan nako ang tanan: server, database, top, austat, logs - paspas ang tanan... Apan gitan-aw namon ang web interface, ug adunay usa ka processor "sa estante" sa server ug kini:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MM: - Klaro na. Tan-aw ta sa web. Among nakaplagan nga sa usa ka sitwasyon diin adunay daghang aktibo nga mga insidente, kadaghanan sa mga live widget nagsugod sa pagtrabaho nga hinay kaayo:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ang hinungdan niini mao ang henerasyon sa mga pop-up sa kasaysayan sa insidente nga gihimo alang sa matag aytem sa lista. Busa, gibiyaan namo ang henerasyon niini nga mga bintana (nagkomento sa 5 ka linya sa code), ug kini nakasulbad sa among mga problema.

Ang oras sa pagkarga alang sa mga widget, bisan kung hingpit nga wala magamit, gipamubu gikan sa pipila ka minuto hangtod sa madawat nga 10-15 segundos alang kanamo, ug ang kasaysayan mahimo pa nga makita pinaagi sa pag-klik sa oras:

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Human sa trabaho. 2 ka bulan ang milabay

MCH: - Misha, molakaw ka? Kinahanglang magstorya mi.

MM: - Wala ko tuyoa. Usa ka butang sa Zabbix pag-usab?

MCH: - Dili, relax! Gusto lang nako isulti: ang tanan nagtrabaho, salamat! Naa koy beer.

Ang Zabbix episyente

Ang Zabbix usa ka medyo unibersal ug dato nga sistema ug gimbuhaton. Mahimo kini gamiton alang sa gagmay nga mga pag-install sa gawas sa kahon, apan samtang ang mga panginahanglanon motubo, kini kinahanglan nga ma-optimize. Aron matipigan ang usa ka dako nga archive sa mga sukatan, gamita ang angay nga pagtipig:

  • mahimo nimong gamiton ang mga built-in nga himan sa porma sa panagsama sa Elasticsearch o pag-upload sa kasaysayan sa mga text file (anaa gikan sa bersyon XNUMX);
  • Mahimo nimong pahimuslan ang among kasinatian ug panagsama sa Clickhouse.

Aron madugangan ang katulin sa pagkolekta sa mga sukatan, kolektaha kini gamit ang mga asynchronous nga pamaagi ug ipadala kini pinaagi sa interface sa trapper sa server sa Zabbix; o mahimo nimong gamiton ang usa ka patch aron mahimo nga asynchronous ang mga poller sa Zabbix.

Ang Zabbix gisulat sa C ug medyo episyente. Ang pagsulbad sa daghang mga bottleneck sa arkitektura nagtugot kanimo nga madugangan pa ang pasundayag niini ug, sa among kasinatian, makakuha labaw pa sa 100 ka libo nga sukatan sa usa ka makina nga nagproseso.

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ang parehas nga patch sa Zabbix

MM: – Gusto kong magdugang og duha ka puntos. Ang tibuuk nga karon nga taho, tanan nga mga pagsulay, mga numero gihatag alang sa pagsumpo nga among gigamit. Nagkuha na kami karon og gibana-bana nga 20 ka libo nga metrics matag segundo gikan niini. Kung gisulayan nimo nga masabtan kung kini molihok alang kanimo, mahimo nimong itandi. Ang gihisgutan karon gi-post sa GitHub sa porma sa usa ka patch: github.com/miklert/zabbix

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

Ang patch naglakip sa:

  • bug-os nga panagsama sa Clickhouse (parehong Zabbix server ug frontend);
  • pagsulbad sa mga problema uban sa preprocessor manager;
  • asynchronous nga polling.

Ang patch nahiuyon sa tanan nga bersyon 4, lakip ang lts. Lagmit, nga adunay gamay nga pagbag-o kini molihok sa bersyon 3.4.

Salamat sa imong pagtagad.

Ang imong mga pangutana

Pangutana gikan sa mamiminaw (pagkahuman niini – A): – Maayong hapon! Palihug sultihi ako, aduna ka bay mga plano alang sa intensive interaction sa Zabbix team o uban kanila uban kanimo, aron kini dili usa ka patch, apan normal nga kinaiya sa Zabbix?

MM: - Oo, siguradong buhaton namon ang pipila nga mga pagbag-o. Adunay mahitabo, adunay magpabilin sa patch.

A: – Daghang salamat sa maayo kaayong report! Palihug sultihi ako, pagkahuman sa pagpadapat sa patch, ang suporta gikan sa Zabbix magpabilin ug kung giunsa pagpadayon ang pag-update sa mas taas nga mga bersyon? Posible ba nga i-update ang Zabbix pagkahuman sa imong patch sa 4.2, 5.0?

MM: – Wala koy ikasulti bahin sa suporta. Kung ako ang teknikal nga suporta sa Zabbix, tingali moingon ako nga dili, tungod kay kini ang code sa uban. Sama sa alang sa 4.2 codebase, ang among posisyon mao ang: "Mobalhin kami sa oras, ug among i-update ang among kaugalingon sa sunod nga bersyon." Busa, sulod sa pipila ka panahon mag-post kami og patch alang sa updated nga mga bersyon. Gisulti ko na sa taho: ang gidaghanon sa mga pagbag-o nga adunay mga bersyon gamay pa. Sa akong hunahuna ang transisyon gikan sa 3.4 ngadto sa 4 mikuha kanamo mga minuto nga 15. Adunay nausab didto, apan dili kaayo importante.

A: - Mao nga nagplano ka nga suportahan ang imong patch ug mahimo nimo kini luwas nga i-install sa produksiyon ug makadawat mga update sa pila ka paagi sa umaabot?

MM: – Kami kusganong girekomendar niini. Kini makasulbad sa daghang mga problema alang kanato.

MCH: - Sa makausa pa, gusto nako nga ipunting ang atensyon sa kamatuoran nga ang mga pagbag-o nga wala’y kalabotan sa arkitektura ug wala’y kalabotan sa pag-block o pila kay modular, naa sila sa lainlaing mga module. Bisan sa ginagmay nga mga pagbag-o, dali ra nimo kini mapadayon.

MM: - Kung interesado ka sa mga detalye, unya ang "Clickhouse" naggamit sa gitawag nga librarya sa kasaysayan. Wala kini gihigot - kini usa ka kopya sa suporta sa Elastics, nga mao, kini ma-configure. Ang polling nagbag-o lang sa mga poller. Kami nagtuo nga kini molihok sa dugay nga panahon.

A: - Salamat kaayo. Sultihi ko, aduna bay bisan unsang dokumentasyon sa mga pagbag-o nga gihimo?

HighLoad++, Mikhail Makurov, Maxim Chernetsov (Intersvyaz): Zabbix, 100kNVPS sa usa ka server

MM: - Ang dokumentasyon usa ka patch. Dayag nga, uban sa pagpaila sa Clickhouse, uban sa pagpaila sa bag-ong mga matang sa mga poller, ang bag-ong mga kapilian sa pagsumpo mitungha. Ang link gikan sa katapusan nga slide adunay usa ka mubo nga paghulagway kung giunsa kini paggamit.

Mahitungod sa pag-ilis sa fping sa nmap

A: – Giunsa nimo kini sa katapusan gipatuman? Makahatag ka ba ug piho nga mga pananglitan: aduna ka bay mga strapper ug usa ka eksternal nga script? Unsa ang natapos sa pagsusi sa ingon ka daghan nga mga host nga dali? Giunsa nimo pagmina kini nga mga host? Kinahanglan ba naton sila pakan-on aron ma-nmap bisan unsang paagi, kuhaon sila gikan sa usa ka lugar, ibutang sila, pagdagan ang usa ka butang?..

MM: - Bugnaw. Sakto kaayo nga pangutana! Ang punto mao kini. Among giusab ang librarya (ICMP ping, bahin sa Zabbix) alang sa ICMP checks, nga nagpakita sa gidaghanon sa mga pakete - usa (1), ug ang code misulay sa paggamit sa nmap. Kana mao, kini ang internal nga buhat sa Zabbix, nga nahimo nga internal nga buhat sa pinger. Sa ingon, wala’y kinahanglan nga pag-synchronize o paggamit sa usa ka trapper. Gihimo kini nga tinuyo aron mabiyaan ang sistema nga wala’y hunong ug dili kinahanglan nga atubangon ang pag-synchronize sa duha nga mga sistema sa database: kung unsa ang susihon, i-upload pinaagi sa poller, ug naguba ba ang among pag-upload?.. Mas simple kini.

A: – Nagtrabaho ba usab kini alang sa mga proxy?

MM: - Oo, apan wala namo gisusi. Ang polling code parehas sa Zabbix ug sa server. Kinahanglan nga magtrabaho. Tugoti ako nga hatagan og gibug-aton sa makausa pa: ang pasundayag sa sistema ingon nga wala na kita magkinahanglan usa ka proxy.

MCH: - Ang husto nga tubag sa pangutana mao: "Nganong kinahanglan nimo ang usa ka proxy nga adunay ingon nga sistema?" Tungod lamang sa NAT o pag-monitor pinaagi sa usa ka matang sa hinay nga channel ...

A: – Ug gigamit nimo ang Zabbix ingon usa ka allertor, kung nasabtan nako ang husto. O ibalhin ang imong mga graphic (diin ang layer sa archive) sa lain nga sistema, sama sa Grafana? O wala ba nimo gigamit kini nga pagpaandar?

MM: – Akong hatagan og gibug-aton sa makausa pa: nakab-ot nato ang hingpit nga panaghiusa. Gibubo namo ang kasaysayan sa Clickhouse, apan sa samang higayon giusab namo ang php frontend. Ang Php frontend moadto sa Clickhouse ug buhaton ang tanan nga mga graphic gikan didto. Sa parehas nga oras, sa tinuud, kami adunay bahin nga nagtukod mga datos sa ubang mga sistema sa pagpakita sa graphic gikan sa parehas nga Clickhouse, gikan sa parehas nga datos sa Zabbix.

MCH: - Sa "Grafan" usab.

Giunsa paghimo ang mga desisyon bahin sa alokasyon sa mga kahinguhaan?

A: - Ipaambit ang gamay sa imong sulod nga kusina. Giunsa paghimo ang desisyon nga kinahanglan ang paggahin sa mga kapanguhaan alang sa seryoso nga pagproseso sa produkto? Kini, sa kinatibuk-an, pipila ka mga risgo. Ug palihug sultihi ako, sa konteksto sa kamatuoran nga imong suportahan ang mga bag-ong bersyon: giunsa kini nga desisyon nga makatarunganon gikan sa usa ka punto sa pagdumala?

MM: - Dayag, wala namo gisulti pag-ayo ang drama sa kasaysayan. Nakaplagan namo ang among mga kaugalingon sa usa ka sitwasyon diin adunay kinahanglan nga buhaton, ug kami nag-uban sa duha ka managsama nga mga grupo:

  • Ang usa naglunsad og sistema sa pagmonitor gamit ang bag-ong mga pamaagi: pagmonitor isip usa ka serbisyo, usa ka standard set sa open source nga mga solusyon nga among gihiusa ug dayon sulayan nga usbon ang proseso sa negosyo aron makatrabaho ang bag-ong monitoring system.
  • Sa samang higayon, kami adunay usa ka madasigon nga programmer nga nagbuhat niini (mahitungod sa iyang kaugalingon). Nahitabo nga nidaog siya.

A: – Ug unsa ang gidak-on sa team?

MCH: - Anaa siya sa imong atubangan.

A: - Busa, sama sa kanunay, kinahanglan nimo ang usa ka mabination?

MM: - Wala ko kahibalo kung unsa ang usa ka hilig.

A: - Sa kini nga kaso, dayag, ikaw. Daghang salamat, maayo ka.

MM: - Salamat.

Mahitungod sa mga patch alang sa Zabbix

A: – Alang sa usa ka sistema nga naggamit ug mga proxy (pananglitan, sa pipila ka gipang-apod-apod nga mga sistema), posible ba ang pagpahiangay ug pag-patch, ingnon ta, mga poller, proxy ug partially ang preprocessor sa Zabbix mismo; ug ang ilang interaksyon? Posible ba nga ma-optimize ang naglungtad nga mga pag-uswag alang sa usa ka sistema nga adunay daghang mga proxy?

MM: – Nahibal-an ko nga ang server sa Zabbix gitigum gamit ang usa ka proxy (ang code giipon ug nakuha). Wala pa namon kini gisulayan sa produksiyon. Dili ko sigurado bahin niini, apan sa akong hunahuna ang tagdumala sa preprocessor wala gigamit sa proxy. Ang tahas sa proxy mao ang pagkuha sa usa ka set sa metrics gikan sa Zabbix, i-merge sila (kini usab nagrekord sa configuration, ang lokal nga database) ug ibalik kini sa Zabbix server. Ang server mismo ang mohimo sa preprocessing kung kini makadawat niini.

Ang interes sa mga proxy masabtan. Atong susihon kini. Kini usa ka makapaikag nga hilisgutan.

A: - Ang ideya mao kini: kung mahimo nimo nga i-patch ang mga poller, mahimo nimo kini i-patch sa proxy ug i-patch ang interaksyon sa server, ug ipahiangay ang preprocessor alang niini nga mga katuyoan sa server lamang.

MM: - Sa akong hunahuna kini mas simple. Gikuha nimo ang code, i-apply ang usa ka patch, dayon i-configure kini sa paagi nga imong gikinahanglan - pagkolekta sa mga proxy server (pananglitan, uban ang ODBC) ug ipang-apod-apod ang gi-patch nga code sa mga sistema. Kung gikinahanglan - pagkolekta og proxy, kung gikinahanglan - usa ka server.

A: - Lagmit, dili nimo kinahanglan nga i-patch ang proxy transmission sa server dugang pa?

MCH: - Dili, kini standard.

MM: – Sa pagkatinuod, ang usa sa mga ideya dili paminawon. Kanunay namong gihuptan ang balanse tali sa pagbuto sa mga ideya ug sa gidaghanon sa mga kausaban ug kasayon ​​sa suporta.

Pipila ka mga ad 🙂

Salamat sa pagpabilin kanamo. Ganahan ka ba sa among mga artikulo? Gusto nga makakita og mas makapaikag nga sulod? Suportahi kami pinaagi sa pag-order o pagrekomenda sa mga higala, cloud VPS alang sa mga developers gikan sa $4.99, usa ka talagsaon nga analogue sa mga entry-level server, nga giimbento namo alang kanimo: Ang tibuok kamatuoran bahin sa VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps gikan sa $19 o unsaon pagpaambit sa usa ka server? (anaa sa RAID1 ug RAID10, hangtod sa 24 ka mga core ug hangtod sa 40GB DDR4).

Dell R730xd 2 ka beses nga mas barato sa Equinix Tier IV data center sa Amsterdam? Dinhi lang 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV gikan sa $199 sa Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - gikan sa $99! Basaha ang mahitungod sa Unsaon pagtukod sa infrastructure corp. klase sa paggamit sa Dell R730xd E5-2650 v4 server nga nagkantidad ug 9000 euros sa usa ka sentimos?

Source: www.habr.com

Idugang sa usa ka comment