Mani sauc Antons Baderins. StrÄdÄju Augsto tehnoloÄ£iju centrÄ un nodarbojos ar sistÄmu administrÄÅ”anu. Pirms mÄneÅ”a noslÄdzÄs mÅ«su korporatÄ«vÄ konference, kurÄ dalÄ«jÄmies savÄ uzkrÄtajÄ pieredzÄ ar mÅ«su pilsÄtas IT kopienu. Es runÄju par tÄ«mekļa lietojumprogrammu uzraudzÄ«bu. MateriÄls bija paredzÄts jaunÄkajam vai vidÄjam lÄ«menim, kuri Å”o procesu nebÅ«vÄja no nulles.
Jebkuras uzraudzÄ«bas sistÄmas stÅ«rakmens ir uzÅÄmÄjdarbÄ«bas problÄmu risinÄÅ”ana. Monitorings monitoringa dÄļ nevienu neinteresÄ. Ko vÄlas bizness? Lai viss darbotos Ätri un bez kļūdÄm. UzÅÄmumi vÄlas bÅ«t proaktÄ«vi, lai mÄs paÅ”i identificÄtu pakalpojuma problÄmas un pÄc iespÄjas ÄtrÄk tÄs novÄrstu. PatiesÄ«bÄ Å”Ä«s ir problÄmas, kuras es visu pagÄjuÅ”o gadu atrisinÄju vienam no mÅ«su klientiem paredzÄtÄ projekta ietvaros.
Par projektu
Projekts ir viena no lielÄkajÄm lojalitÄtes programmÄm valstÄ«. MÄs palÄ«dzam mazumtirdzniecÄ«bas Ä·ÄdÄm palielinÄt pÄrdoÅ”anas biežumu, izmantojot dažÄdus mÄrketinga rÄ«kus, piemÄram, bonusa kartes. KopumÄ projektÄ iekļautas 14 lietojumprogrammas, kas darbojas uz desmit serveriem.
Intervijas laikÄ es vairÄkkÄrt pamanÄ«ju, ka administratori ne vienmÄr pareizi pieiet tÄ«mekļa lietojumprogrammu uzraudzÄ«bai: daudzi joprojÄm koncentrÄjas uz operÄtÄjsistÄmas metriku un laiku pa laikam uzrauga pakalpojumus.
ManÄ gadÄ«jumÄ klienta uzraudzÄ«bas sistÄma iepriekÅ” bija balstÄ«ta uz Icinga. Tas nekÄdÄ veidÄ neatrisinÄja iepriekÅ” minÄtÄs problÄmas. Bieži vien klients pats mÅ«s informÄja par problÄmÄm, un visbiežÄk mums vienkÄrÅ”i nebija pietiekami daudz datu, lai noskaidrotu iemeslu.
TurklÄt bija skaidra izpratne par tÄs turpmÄkÄs attÄ«stÄ«bas veltÄ«gumu. DomÄju, ka tie, kas pazÄ«st Icingu, mani sapratÄ«s. TÄpÄc mÄs nolÄmÄm pilnÄ«bÄ pÄrveidot tÄ«mekļa lietojumprogrammu uzraudzÄ«bas sistÄmu projektam.
Prometejs
MÄs izvÄlÄjÄmies Prometheus, pamatojoties uz trim galvenajiem rÄdÄ«tÄjiem:
- Liels skaits pieejamo rÄdÄ«tÄju. MÅ«su gadÄ«jumÄ tÄdu ir 60 tÅ«kstoÅ”i. Protams, ir vÄrts atzÄ«mÄt, ka lielÄko daļu no tiem mÄs neizmantojam (iespÄjams, apmÄram 95%). No otras puses, tie visi ir salÄ«dzinoÅ”i lÄti. Mums Ŕī ir otra galÄjÄ«ba, salÄ«dzinot ar iepriekÅ” lietoto Icinga. TajÄ metrikas pievienoÅ”ana bija Ä«paÅ”i sÄpÄ«ga: esoÅ”ie bija dÄrgi (tikai paskatieties uz jebkura spraudÅa pirmkodu). JebkurÅ” spraudnis bija Bash vai Python skripts, kura palaiÅ”ana ir dÄrga patÄrÄto resursu ziÅÄ.
- Å Ä« sistÄma patÄrÄ salÄ«dzinoÅ”i nelielu resursu daudzumu. Visiem mÅ«su rÄdÄ«tÄjiem pietiek ar 600 MB RAM, 15% no viena kodola un pÄris desmitiem IOPS. Protams, jums ir jÄvada metriku eksportÄtÄji, taÄu tie visi ir rakstÄ«ti Go un arÄ« nav ļoti izsalkuÅ”i. Es nedomÄju, ka mÅ«sdienu realitÄtÄ tÄ ir problÄma.
- NodroÅ”ina iespÄju migrÄt uz Kubernetes. Å emot vÄrÄ klienta plÄnus, izvÄle ir acÄ«mredzama.
ELK
IepriekÅ” mÄs neapkopojÄm un neapstrÄdÄjÄm žurnÄlus. TrÅ«kumi ir skaidri visiem. MÄs izvÄlÄjÄmies ELK, jo mums jau bija pieredze ar Å”o sistÄmu. MÄs tur glabÄjam tikai lietojumprogrammu žurnÄlus. Galvenie atlases kritÄriji bija pilna teksta meklÄÅ”ana un tÄs Ätrums.
Š”lickhouse
SÄkotnÄji izvÄle krita uz InfluxDB. MÄs sapratÄm, ka ir jÄapkopo Nginx žurnÄli, statistika no pg_stat_statements un jÄsaglabÄ Prometheus vÄsturiskie dati. Mums nepatika Influx, jo tas periodiski sÄka patÄrÄt lielu daudzumu atmiÅas un avarÄja. TurklÄt es gribÄju grupÄt vaicÄjumus pÄc remote_addr, bet grupÄÅ”ana Å”ajÄ DBVS notiek tikai pÄc tagiem. Birkas ir dÄrgas (atmiÅa), to skaits ir nosacÄ«ti ierobežots.
Atkal sÄkÄm meklÄjumus. Bija nepiecieÅ”ama analÄ«tiska datu bÄze ar minimÄlu resursu patÄriÅu, vÄlams ar datu saspieÅ”anu diskÄ.
Clickhouse atbilst visiem Å”iem kritÄrijiem, un mÄs nekad neesam nožÄlojuÅ”i savu izvÄli. MÄs tajÄ neierakstÄm nekÄdus ÄrkÄrtÄjus datu apjomus (ievietojumu skaits ir tikai aptuveni pieci tÅ«kstoÅ”i minÅ«tÄ).
NewRelic
NewRelic vÄsturiski ir bijis ar mums, jo tÄ bija klienta izvÄle. MÄs to izmantojam kÄ APM.
Zabbix
MÄs izmantojam Zabbix tikai, lai uzraudzÄ«tu dažÄdu API Black Box.
UzraudzÄ«bas pieejas definÄÅ”ana
MÄs vÄlÄjÄmies sadalÄ«t uzdevumu un tÄdÄjÄdi sistematizÄt pieeju monitoringam.
Lai to izdarÄ«tu, es sadalÄ«ju mÅ«su sistÄmu Å”Ädos lÄ«meÅos:
- aparatūra un VMS;
- operÄtÄjsistÄma;
- sistÄmas pakalpojumi, programmatÅ«ras steks;
- pieteikums;
- biznesa loģika.
KÄpÄc Ŕī pieeja ir Ärta:
- mÄs zinÄm, kurÅ” ir atbildÄ«gs par katra lÄ«meÅa darbu, un, pamatojoties uz to, mÄs varam nosÅ«tÄ«t brÄ«dinÄjumus;
- mÄs varam izmantot struktÅ«ru, apspiežot brÄ«dinÄjumus - bÅ«tu dÄ«vaini nosÅ«tÄ«t brÄ«dinÄjumu par datu bÄzes nepieejamÄ«bu, ja virtuÄlÄ maŔīna kopumÄ nav pieejama.
TÄ kÄ mÅ«su uzdevums ir identificÄt pÄrkÄpumus sistÄmas darbÄ«bÄ, tad katrÄ lÄ«menÄ« ir jÄizceļ noteikta metriku kopa, kurai ir vÄrts pievÄrst uzmanÄ«bu, rakstot brÄ«dinÄÅ”anas noteikumus. TÄlÄk apskatÄ«sim lÄ«meÅus āVMSā, āOperÄtÄjsistÄmaā un āSistÄmas pakalpojumi, programmatÅ«ras steksā.
VirtuÄlÄs maŔīnas
Hostings pieŔķir mums procesoru, disku, atmiÅu un tÄ«klu. Un mums bija problÄmas ar pirmajiem diviem. TÄtad, rÄdÄ«tÄji:
CPU nozagÅ”anas laiks - pÄrkot virtuÄlo maŔīnu Amazon (piemÄram, t2.micro), jums jÄsaprot, ka jums nav atvÄlÄts viss procesora kodols, bet tikai tÄ laika kvota. Un, kad jÅ«s to iztÄrÄsit, procesors jums tiks atÅemts.
Å is rÄdÄ«tÄjs ļauj izsekot Å”Ädiem brīžiem un pieÅemt lÄmumus. PiemÄram, vai ir jÄÅem trekns tarifs vai jÄizplata fona uzdevumu un API pieprasÄ«jumu apstrÄde dažÄdiem serveriem?
IOPS + CPU gaidÄ«Å”anas laiks ā kÄda iemesla dÄļ daudzi mÄkoÅa mitinÄÅ”anas pakalpojumi grÄko, nenodroÅ”inot pietiekami daudz IOPS. TurklÄt grafiks ar zemu IOPS viÅiem nav arguments. TÄpÄc ir vÄrts savÄkt CPU iowait. Izmantojot Å”o grafiku pÄri ā ar zemu IOPS un lielu I/O gaidÄ«Å”anas laiku ā jÅ«s jau varat runÄt ar mitinÄÅ”anu un atrisinÄt problÄmu.
OperÄtÄjsistÄmas
OperÄtÄjsistÄmas rÄdÄ«tÄji:
- pieejamÄs atmiÅas apjoms %;
- mijmaiÅas izmantoÅ”anas aktivitÄte: vmstat swapin, swapout;
- pieejamo inodu skaits un brÄ«vÄ vieta failu sistÄmÄ %
- vidÄjÄ slodze;
- savienojumu skaits tw stÄvoklÄ«;
- conntrack galda pilnība;
- TÄ«kla kvalitÄti var uzraudzÄ«t, izmantojot ss utilÄ«tu, iproute2 pakotni - iegÅ«stiet RTT savienojumu indikatoru no tÄ izvades un grupÄjiet to pÄc gala porta.
ArÄ« operÄtÄjsistÄmas lÄ«menÄ« mums ir tÄda entÄ«tija kÄ procesi. SistÄmÄ ir svarÄ«gi identificÄt procesu kopumu, kam ir svarÄ«ga loma tÄs darbÄ«bÄ. Ja, piemÄram, jums ir vairÄki pgpool, tad jums ir jÄapkopo informÄcija par katru no tiem.
Metrikas kopa ir Å”Äda:
- PROCESORS;
- atmiÅa galvenokÄrt ir pastÄvÄ«ga;
- IO - vÄlams IOPS;
- FileFd - atvÄrts un ierobežots;
- bÅ«tiskas lapas kļūmes ā tÄdÄ veidÄ var saprast, kÄds process tiek apmainÄ«ts.
MÄs izvietojam visu uzraudzÄ«bu programmÄ Docker, un mÄs izmantojam Advisor, lai apkopotu metrikas datus. CitÄs iekÄrtÄs mÄs izmantojam procesa eksportÄtÄju.
SistÄmas pakalpojumi, programmatÅ«ras kaudze
Katrai lietojumprogrammai ir sava specifika, un ir grÅ«ti izcelt konkrÄtu metrikas kopu.
UniversÄlais komplekts ir:
- pieprasījuma likme;
- kļūdu skaits;
- latentums;
- piesÄtinÄjums.
MÅ«su spilgtÄkie uzraudzÄ«bas piemÄri Å”ajÄ lÄ«menÄ« ir Nginx un PostgreSQL.
VisvairÄk ielÄdÄts pakalpojums mÅ«su sistÄmÄ ir datu bÄze. AgrÄk mums bieži bija problÄmas noskaidrot, ko dara datubÄze.
MÄs redzÄjÄm lielu disku slodzi, bet lÄnie žurnÄli Ä«sti neko nerÄdÄ«ja. MÄs atrisinÄjÄm Å”o problÄmu, izmantojot pg_stat_statements ā skatu, kas apkopo vaicÄjumu statistiku.
Tas ir viss, kas nepiecieŔams administratoram.
MÄs veidojam lasÄ«Å”anas un rakstÄ«Å”anas pieprasÄ«jumu aktivitÄÅ”u grafikus:
Viss ir vienkÄrÅ”i un skaidri, katram pieprasÄ«jumam ir sava krÄsa.
Tikpat spilgts piemÄrs ir Nginx žurnÄli. Nav pÄrsteidzoÅ”i, ka daži cilvÄki tos analizÄ vai piemin obligÄtajÄ sarakstÄ. Standarta formÄts nav Ä«paÅ”i informatÄ«vs, un tas ir jÄpaplaÅ”ina.
Es personÄ«gi pievienoju request_time, upstream_response_time, body_bytes_sent, request_length, request_id. MÄs attÄlojam atbildes laiku un kļūdu skaitu:
MÄs veidojam reakcijas laika un kļūdu skaita grafikus. Atceries? Vai es runÄju par biznesa uzdevumiem? Ätri un bez kļūdÄm? MÄs jau esam aplÅ«kojuÅ”i Å”os jautÄjumus ar divÄm diagrammÄm. Un ar to palÄ«dzÄ«bu jau var zvanÄ«t dežurÄjoÅ”ajiem administratoriem.
TaÄu paliek vÄl viena problÄma ā nodroÅ”inÄt Ätru incidenta cÄloÅu novÄrÅ”anu.
NegadÄ«juma atrisinÄÅ”ana
Visu procesu no problÄmas noteikÅ”anas lÄ«dz tÄs risinÄÅ”anai var iedalÄ«t vairÄkos posmos:
- problÄmas identificÄÅ”ana;
- paziÅojums dežūras administratoram;
- reakcija uz incidentu;
- cÄloÅu likvidÄÅ”ana.
Ir svarÄ«gi, lai mums tas jÄdara pÄc iespÄjas ÄtrÄk. Un, ja problÄmas identificÄÅ”anas un paziÅojuma nosÅ«tÄ«Å”anas posmÄ mÄs nevaram iegÅ«t daudz laika - jebkurÄ gadÄ«jumÄ tÄm tiks veltÄ«tas divas minÅ«tes, tad nÄkamÄs ir vienkÄrÅ”i neapstrÄdÄts lauks uzlabojumiem.
IedomÄsimies, ka iezvanÄ«jÄs dežuranta telefons. Ko viÅÅ” darÄ«s? MeklÄ atbildes uz jautÄjumiem ā kas salÅ«za, kur salÅ«za, kÄ reaÄ£Ät? LÅ«k, kÄ mÄs atbildam uz Å”iem jautÄjumiem:
MÄs vienkÄrÅ”i iekļaujam visu Å”o informÄciju paziÅojuma tekstÄ, sniedzam tai saiti uz wiki lapu, kurÄ ir aprakstÄ«ts, kÄ reaÄ£Ät uz Å”o problÄmu, kÄ to atrisinÄt un eskalÄt.
Es joprojÄm neko neesmu teicis par lietojumprogrammas slÄni un biznesa loÄ£iku. DiemžÄl mÅ«su lietojumprogrammÄs vÄl nav ieviesta metrikas vÄkÅ”ana. VienÄ«gais informÄcijas avots no Å”iem lÄ«meÅiem ir žurnÄli.
PÄris punkti.
PirmkÄrt, uzrakstiet strukturÄtus žurnÄlus. ZiÅojuma tekstÄ nav jÄiekļauj konteksts. Tas apgrÅ«tina to grupÄÅ”anu un analizÄÅ”anu. Logstash prasa ilgu laiku, lai to visu normalizÄtu.
OtrkÄrt, pareizi izmantojiet smaguma pakÄpes. Katrai valodai ir savs standarts. PersonÄ«gi es izŔķiru Äetrus lÄ«meÅus:
- nav kļūdu;
- klienta puses kļūda;
- kļūda ir mÅ«su pusÄ, mÄs nezaudÄjam naudu, mÄs neuzÅemamies risku;
- Kļūda ir mÅ«su pusÄ, mÄs zaudÄjam naudu.
Ä»aujiet man apkopot. Jums jÄmÄÄ£ina izveidot uzraudzÄ«bu, pamatojoties uz biznesa loÄ£iku. MÄÄ£iniet uzraudzÄ«t paÅ”u lietojumprogrammu un darboties ar tÄdiem rÄdÄ«tÄjiem kÄ pÄrdoÅ”anas skaits, jaunu lietotÄju reÄ£istrÄciju skaits, paÅ”laik aktÄ«vo lietotÄju skaits utt.
Ja viss jÅ«su uzÅÄmums pÄrlÅ«kprogrammÄ ir viena poga, jums jÄuzrauga, vai tas noklikŔķina un darbojas pareizi. Visam pÄrÄjam nav nozÄ«mes.
Ja jums tas nav, varat mÄÄ£inÄt to atrast lietojumprogrammu žurnÄlos, Nginx žurnÄlos un tÄ tÄlÄk, kÄ mÄs to darÄ«jÄm. Jums jÄatrodas pÄc iespÄjas tuvÄk lietojumprogrammai.
OperÄtÄjsistÄmas rÄdÄ«tÄji, protams, ir svarÄ«gi, taÄu biznesu tie neinteresÄ, mums par tiem nemaksÄ.
Avots: www.habr.com