Giunsa namo pagtukod ang pagmonitor sa Prometheus, Clickhouse ug ELK

Ako si Anton Baderin. Nagtrabaho ko sa High Technology Center ug nagdumala sa sistema. Usa ka bulan ang milabay, natapos ang among corporate conference, diin among gipaambit ang among natigom nga kasinatian sa IT community sa among siyudad. Naghisgot ko bahin sa pag-monitor sa mga aplikasyon sa web. Ang materyal gituyo alang sa junior o middle level, kinsa wala magtukod niini nga proseso gikan sa scratch.

Giunsa namo pagtukod ang pagmonitor sa Prometheus, Clickhouse ug ELK

Ang sukaranan nga sukaranan sa bisan unsang sistema sa pag-monitor mao ang pagsulbad sa mga problema sa negosyo. Ang pagmonitor alang sa kaayohan sa pagmonitor walay interes ni bisan kinsa. Unsa ang gusto sa negosyo? Aron ang tanan molihok dayon ug walay mga sayup. Gusto sa mga negosyo nga mahimong aktibo, aron kami mismo makaila sa mga problema sa serbisyo ug masulbad kini sa labing madali. Kini, sa tinuud, mao ang mga problema nga akong nasulbad sa miaging tuig sa usa ka proyekto alang sa usa sa among mga kostumer.

Mahitungod sa proyekto

Ang proyekto mao ang usa sa pinakadako nga loyalty program sa nasud. Gitabangan namo ang mga retail chain nga madugangan ang kasubsob sa pagbaligya pinaagi sa nagkalain-laing mga himan sa marketing sama sa mga bonus card. Sa kinatibuk-an, ang proyekto naglakip sa 14 nga mga aplikasyon nga nagdagan sa napulo ka mga server.

Atol sa proseso sa interbyu, balik-balik nakong namatikdan nga ang mga admin dili kanunay moduol sa pag-monitor sa mga aplikasyon sa web sa husto: daghan gihapon ang nagtutok sa mga sukatan sa operating system ug usahay nag-monitor sa mga serbisyo.

Sa akong kaso, ang sistema sa pag-monitor sa kostumer kaniadto gibase sa Icinga. Wala kini makasulbad sa mga problema sa ibabaw sa bisan unsang paagi. Kasagaran ang kliyente mismo ang nagpahibalo kanamo bahin sa mga problema, ug mas kanunay kaysa dili, wala kami igo nga datos aron mahibal-an ang hinungdan.

Dugang pa, adunay usa ka tin-aw nga pagsabut sa pagkawalay kapuslanan sa dugang nga pag-uswag niini. Sa akong hunahuna ang mga pamilyar sa Icinga makasabot kanako. Mao nga, nakahukom kami nga hingpit nga idisenyo pag-usab ang sistema sa pag-monitor sa aplikasyon sa web alang sa proyekto.

Prometheus

Gipili namo ang Prometheus base sa tulo ka nag-unang indicators:

  1. Daghang mga magamit nga sukatan. Sa among kaso adunay 60 ka libo niini. Siyempre, angay nga matikdan nga wala namo gigamit ang kadaghanan niini (tingali mga 95%). Sa laing bahin, silang tanan medyo barato. Alang kanamo, kini ang lain nga grabe kung itandi sa gigamit kaniadto nga Icinga. Niini, ang pagdugang sa mga sukatan usa ka partikular nga kasakit: ang mga naglungtad nga mahal (tan-awa lang ang source code sa bisan unsang plugin). Ang bisan unsang plugin usa ka script sa Bash o Python, ang paglansad niini mahal sa termino sa mga kapanguhaan nga gigamit.
  2. Kini nga sistema naggamit ug medyo gamay nga kantidad sa mga kahinguhaan. 600 MB sa RAM, 15% sa usa ka kinauyokan ug duha ka dosena nga IOPS igo na alang sa tanan namong metrics. Siyempre, kinahanglan ka nga magpadagan sa mga eksporter sa sukatan, apan silang tanan gisulat sa Go ug dili usab gutom sa gahum. Wala ko maghunahuna nga sa modernong mga kamatuoran kini usa ka problema.
  3. Naghatag ug abilidad sa paglalin sa Kubernetes. Sa pagkonsiderar sa mga plano sa kustomer, ang pagpili klaro.

osa

Kaniadto, wala kami nagkolekta o nagproseso sa mga troso. Ang mga kakulangan klaro sa tanan. Gipili namo ang ELK tungod kay aduna na kamiy kasinatian niini nga sistema. Gitipigan ra namo ang mga log sa aplikasyon didto. Ang nag-unang criteria sa pagpili mao ang full-text nga pagpangita ug ang katulin niini.

Π‘lickhouse

Sa sinugdan, ang pagpili nahulog sa InfluxDB. Among naamgohan ang panginahanglan sa pagkolekta sa Nginx logs, statistics gikan sa pg_stat_statements, ug pagtipig sa Prometheus historical data. Dili namo gusto ang Influx tungod kay kini nagsugod sa pagkonsumo sa daghang mga memorya ug nahagsa. Dugang pa, gusto nako nga igrupo ang mga pangutana pinaagi sa remote_addr, apan ang paggrupo niini nga DBMS pinaagi lamang sa mga tag. Ang mga tag mahal (memorya), ang ilang gidaghanon limitado sa kondisyon.

Nagsugod na usab kami sa among pagpangita. Ang gikinahanglan mao ang usa ka analytical database nga adunay gamay nga konsumo sa kapanguhaan, mas maayo nga adunay data compression sa disk.

Ang Clickhouse nakab-ot ang tanan niini nga mga pamatasan, ug wala kami magbasol sa among gipili. Wala kami magsulat og bisan unsang talagsaon nga gidaghanon sa datos niini (ang gidaghanon sa mga pagsal-ot mga lima ka libo lamang kada minuto).

Bag-ongRelic

Ang NewRelic sa kasaysayan nag-uban kanamo tungod kay kini ang gipili sa kustomer. Gigamit namo kini isip APM.

Zabbix

Gigamit namon ang Zabbix nga eksklusibo aron ma-monitor ang Black Box sa lainlaing mga API.

Pagtino sa usa ka Pamaagi sa Pag-monitor

Gusto namon nga mabungkag ang buluhaton ug sa ingon ma-systematize ang pamaagi sa pagmonitor.

Aron mahimo kini, gibahin nako ang among sistema sa mga mosunud nga lebel:

  • hardware ug VMS;
  • operating nga sistema;
  • serbisyo sa sistema, software stack;
  • aplikasyon;
  • lohika sa negosyo.

Ngano nga kini nga pamaagi kombenyente:

  • nahibal-an namon kung kinsa ang responsable sa trabaho sa matag lebel ug, base niini, makapadala kami mga alerto;
  • mahimo namong gamiton ang istruktura kung gipugngan ang mga alerto - katingad-an nga magpadala usa ka alerto bahin sa pagkadili magamit sa database kung ang virtual machine sa kinatibuk-an dili magamit.

Tungod kay ang among tahas mao ang pag-ila sa mga paglapas sa operasyon sa sistema, kinahanglan namon sa matag lebel nga ipasiugda ang usa ka piho nga hugpong sa mga sukatan nga angay hatagan pagtagad sa pagsulat sa mga lagda sa pag-alerto. Sunod, atong adtoan ang lebel nga "VMS", "Operating system" ug "System services, software stack".

Virtual nga mga makina

Ang hosting naggahin kanato og processor, disk, memorya ug network. Ug kami adunay mga problema sa una nga duha. Busa, ang metrics:

Ang oras nga gikawat sa CPU - kung nagpalit ka usa ka virtual nga makina sa Amazon (t2.micro, pananglitan), kinahanglan nimo nga masabtan nga wala ka gigahin usa ka tibuuk nga core sa processor, apan usa lamang ka quota sa oras niini. Ug kung mahurot nimo kini, ang processor kuhaon gikan kanimo.

Kini nga sukatan nagtugot kanimo sa pagsubay sa ingon nga mga higayon ug paghimo og mga desisyon. Pananglitan, gikinahanglan ba ang pagkuha sa mas tambok nga taripa o pag-apod-apod sa pagproseso sa mga buluhaton sa background ug mga hangyo sa API ngadto sa lain-laing mga server?

IOPS + CPU iowait time - sa pipila ka rason, daghang cloud hostings ang nakasala pinaagi sa dili paghatag og igo nga IOPS. Dugang pa, ang usa ka iskedyul nga adunay ubos nga IOPS dili usa ka argumento alang kanila. Busa, angay nga kolektahon ang CPU iowait. Uban niini nga parisan sa mga graph - nga adunay ubos nga IOPS ug taas nga I/O nga paghulat - mahimo ka na nga makigsulti sa host ug masulbad ang problema.

operating sistema sa

Mga sukatan sa operating system:

  • kantidad sa magamit nga memorya sa %;
  • kalihokan sa paggamit sa swap: vmstat swapin, swapout;
  • gidaghanon sa anaa nga inode ug libre nga luna sa file system sa%
  • kasagaran nga load;
  • gidaghanon sa mga koneksyon sa tw estado;
  • conntrack kapuno sa lamesa;
  • Ang kalidad sa network mahimong ma-monitor gamit ang ss utility, ang iproute2 nga pakete - pagkuha usa ka timailhan sa mga koneksyon sa RTT gikan sa output niini ug grupo kini sa dest port.

Usab sa lebel sa operating system kita adunay usa ka entidad sama sa mga proseso. Mahinungdanon ang pag-ila sa sistema sa usa ka hugpong sa mga proseso nga adunay hinungdanon nga papel sa operasyon niini. Kung, pananglitan, adunay ka daghang mga pgpool, nan kinahanglan nimo nga mangolekta og kasayuran alang sa matag usa kanila.

Ang set sa metrics mao ang mosunod:

  • Mga CPU;
  • panumduman mao ang nag-una residente;
  • IO - labing maayo sa IOPS;
  • FileFd - bukas ug limitahan;
  • mahinungdanon nga mga kapakyasan sa panid - niining paagiha masabtan nimo kung unsa nga proseso ang gibaylo.

Gi-deploy namon ang tanan nga pag-monitor sa Docker, ug gigamit namon ang Advisor aron makolekta ang datos sa sukatan. Sa ubang mga makina gigamit namo ang process-exporter.

Mga serbisyo sa sistema, software stack

Ang matag aplikasyon adunay kaugalingon nga mga detalye, ug lisud ang pagpili sa usa ka piho nga hugpong sa mga sukatan.

Ang unibersal nga set mao ang:

  • rate sa paghangyo;
  • gidaghanon sa mga sayop;
  • latency;
  • saturation

Ang among labing katingad-an nga mga pananglitan sa pag-monitor sa kini nga lebel mao ang Nginx ug PostgreSQL.

Ang pinaka-loaded nga serbisyo sa among sistema mao ang database. Kaniadto, kanunay kaming adunay problema sa paghunahuna kung unsa ang gibuhat sa database.

Nakita namon ang taas nga karga sa mga disk, apan ang hinay nga mga troso wala gyud magpakita bisan unsa. Gisulbad namo kini nga problema gamit ang pg_stat_statements, usa ka panglantaw nga nagkolekta sa mga estadistika sa pangutana.

Kana lang ang gikinahanglan sa admin.

Naghimo kami og mga graph sa kalihokan sa pagbasa ug pagsulat sa mga hangyo:

Giunsa namo pagtukod ang pagmonitor sa Prometheus, Clickhouse ug ELK
Giunsa namo pagtukod ang pagmonitor sa Prometheus, Clickhouse ug ELK

Ang tanan yano ug tin-aw, ang matag hangyo adunay kaugalingon nga kolor.

Ang usa ka talagsaon nga pananglitan mao ang Nginx logs. Dili ikatingala nga pipila ka mga tawo ang nag-parse niini o naghisgut kanila sa lista sa mga kinahanglan nga kinahanglan. Ang standard nga pormat dili kaayo informative ug kinahanglan nga palapdan.

Sa personal, akong gidugang ang request_time, upstream_response_time, body_bytes_sent, request_length, request_id. Nagplano kami sa oras sa pagtubag ug gidaghanon sa mga sayop:

Giunsa namo pagtukod ang pagmonitor sa Prometheus, Clickhouse ug ELK
Giunsa namo pagtukod ang pagmonitor sa Prometheus, Clickhouse ug ELK

Naghimo kami og mga graph sa oras sa pagtubag ug gidaghanon sa mga sayup. Hinumdomi? Naghisgot ba ako bahin sa mga buluhaton sa negosyo? Sa madali ug walay mga sayop? Gitabonan na namo kini nga mga isyu sa duha ka tsart. Ug mahimo na nimo tawagan ang mga administrador nga nag-duty gamit sila.

Apan usa pa ka problema ang nagpabilin - aron masiguro ang paspas nga pagwagtang sa mga hinungdan sa insidente.

Resolusyon sa insidente

Ang tibuuk nga proseso gikan sa pag-ila hangtod sa pagsulbad sa usa ka problema mahimong bahinon sa daghang mga lakang:

  • pag-ila sa problema;
  • pagpahibalo sa tigdumala sa katungdanan;
  • tubag sa usa ka insidente;
  • pagwagtang sa mga hinungdan.

Importante nga kinahanglan natong buhaton kini sa labing madali nga panahon. Ug kung sa mga yugto sa pag-ila sa usa ka problema ug pagpadala sa usa ka pahibalo dili kami makaangkon og daghang oras - duha ka minuto ang igugol sa kanila sa bisan unsang kaso, nan ang mga sunud-sunod yano nga wala naarado nga uma alang sa mga pagpaayo.

Hunahunaon lang nato nga mibagting ang telepono sa duty officer. Unsay iyang buhaton? Pangitaa ang mga tubag sa mga pangutana - unsa ang nabuak, diin kini nabuak, kung giunsa ang reaksyon? Ania kung giunsa namo pagtubag kini nga mga pangutana:

Giunsa namo pagtukod ang pagmonitor sa Prometheus, Clickhouse ug ELK

Giapil lang namo kining tanan nga impormasyon sa teksto sa pahibalo, hatagan kini og link sa usa ka panid sa wiki nga naghulagway kung unsaon pagtubag niini nga problema, unsaon kini pagsulbad ug pagpadako niini.

Wala pa koy gisulti bahin sa layer sa aplikasyon ug lohika sa negosyo. Ikasubo, ang among mga aplikasyon wala pa nagpatuman sa pagkolekta sa sukatan. Ang bugtong tinubdan sa bisan unsang impormasyon gikan niini nga lebel mao ang mga troso.

Pipila ka punto.

Una, pagsulat og structured logs. Dili kinahanglan nga ilakip ang konteksto sa teksto sa mensahe. Kini nakapalisud kanila sa paggrupo ug pag-analisar. Nagkinahanglan og taas nga panahon ang Logstash aron ma-normalize kining tanan.

Ikaduha, gamita ang lebel sa kagrabe sa husto. Ang matag pinulongan adunay kaugalingong sukdanan. Sa personal, akong gilain ang upat ka lebel:

  1. walay sayop;
  2. sayop nga bahin sa kliyente;
  3. ang kasaypanan anaa sa atong kiliran, dili kita mawad-an sa salapi, dili kita magdala sa mga risgo;
  4. Ang sayup naa sa among kiliran, nawad-an kami og kwarta.

Tugoti ako sa pag-summarize. Kinahanglan nimong sulayan ang pagtukod sa pag-monitor base sa lohika sa negosyo. Sulayi ang pag-monitor sa aplikasyon mismo ug pag-operate sa ingon nga mga sukatan sama sa gidaghanon sa mga baligya, ang gidaghanon sa mga bag-ong rehistrasyon sa tiggamit, ang gidaghanon sa mga aktibo nga tiggamit karon, ug uban pa.

Kung ang imong tibuuk nga negosyo usa ra ka buton sa browser, kinahanglan nimo nga bantayan kung kini nag-klik ug nagtrabaho sa husto. Ang tanan nga nahabilin dili igsapayan.

Kung wala ka niini, mahimo nimong sulayan nga maabut kini sa mga log sa aplikasyon, mga log sa Nginx, ug uban pa, sama sa among gibuhat. Kinahanglan nga duol ka sa aplikasyon kutob sa mahimo.

Ang mga sukatan sa operating system siyempre hinungdanon, apan ang negosyo dili interesado niini, wala kami gibayran alang kanila.

Source: www.habr.com

Idugang sa usa ka comment