ApskatÄ«sim Kubernetes monitoringa koncepciju, iepazÄ«simies ar Prometheus rÄ«ku un runÄsim par brÄ«dinÄÅ”anu.
Monitoringa tÄma ir apjomÄ«ga, to nevar aptvert vienÄ rakstÄ. Å Ä« teksta mÄrÄ·is ir sniegt pÄrskatu par instrumentiem, koncepcijÄm un pieejÄm.
Raksta materiÄls - izraksts no
Kas tiek uzraudzīts Kubernetes klasterī
Fiziskie serveri. Ja Kubernetes klasteris ir izvietots savos serveros, jums ir jÄuzrauga to stÄvoklis. Zabbix tiek galÄ ar Å”o uzdevumu; ja strÄdÄ ar viÅu, tad nevajag atteikt, nebÅ«s konfliktu. Tas ir Zabbix, kas uzrauga mÅ«su serveru stÄvokli.
PÄriesim uz uzraudzÄ«bu klastera lÄ«menÄ«.
VadÄ«bas plaknes sastÄvdaļas: API, plÄnotÄjs un citi. Vismaz ir jÄuzrauga, vai servera API vai etcd ir lielÄks par 0. Etcd var nodroÅ”inÄt daudzus rÄdÄ«tÄjus: par diskiem, kuros tas griežas, par tÄ etcd klastera stÄvokli un citiem.
dokers parÄdÄ«jÄs jau sen, un visi labi apzinÄs tÄs problÄmas: daudzi konteineri izraisa sasalÅ”anu un citas problÄmas. TÄpÄc arÄ« pati Docker kÄ sistÄma bÅ«tu jÄuzrauga, vismaz pieejamÄ«ba.
dns. Ja DNS neizdodas klasterÄ«, neizdosies arÄ« viss Discovery pakalpojums, un zvani no podiem pÄrstÄs darboties. ManÄ praksÄ Å”Ädu problÄmu nebija, taÄu tas nenozÄ«mÄ, ka DNS statuss nav jÄuzrauga. PieprasÄ«juma latentumu un dažus citus rÄdÄ«tÄjus var izsekot CoreDNS.
IekļūŔana. NepiecieÅ”ams kontrolÄt ieeju (tostarp Ingress Controller) kÄ ieejas punktu pieejamÄ«bu projektÄ.
Klastera galvenÄs sastÄvdaļas ir izjauktas - tagad ejam zemÄk, lÄ«dz abstrakciju lÄ«menim.
Å Ä·iet, ka lietojumprogrammas darbojas podiÅos, kas nozÄ«mÄ, ka tÄs ir jÄkontrolÄ, taÄu patiesÄ«bÄ tÄs nav. PÄksti ir Ä«slaicÄ«gi: Å”odien tie darbojas vienÄ serverÄ«, rÄ«t citÄ; Å odien tÄs ir 10, rÄ«t 2. TÄpÄc neviens pÄkstis neuzrauga. Mikropakalpojumu arhitektÅ«rÄ svarÄ«gÄk ir kontrolÄt visas lietojumprogrammas pieejamÄ«bu. Jo Ä«paÅ”i pÄrbaudiet pakalpojuma galapunktu pieejamÄ«bu: vai kaut kas darbojas? Ja aplikÄcija ir pieejama, tad kas aiz tÄs notiek, cik tagad ir repliku ā tie ir otrÄs kÄrtas jautÄjumi. Nav nepiecieÅ”ams uzraudzÄ«t atseviŔķus gadÄ«jumus.
PÄdÄjÄ lÄ«menÄ« jums ir jÄuzrauga paÅ”as lietojumprogrammas darbÄ«ba, jÄÅem vÄrÄ biznesa rÄdÄ«tÄji: pasÅ«tÄ«jumu skaits, lietotÄju uzvedÄ«ba utt.
Prometejs
VislabÄkÄ klastera uzraudzÄ«bas sistÄma ir
Ir dažas iespÄjas, kÄ sÄkt darbu ar Prometheus: izmantojot Helm, varat instalÄt parasto Prometheus vai Prometheus Operator.
- RegulÄrs Prometejs. Ar to viss ir kÄrtÄ«bÄ, bet jums ir jÄkonfigurÄ ConfigMap - bÅ«tÄ«bÄ jÄraksta teksta konfigurÄcijas faili, kÄ mÄs to darÄ«jÄm iepriekÅ”, pirms mikropakalpojumu arhitektÅ«ras.
- Prometheus Operator ir nedaudz plaÅ”Äks, nedaudz sarežģītÄks savÄ iekÅ”ÄjÄ loÄ£ikÄ, taÄu ar to ir vieglÄk strÄdÄt: ir atseviŔķi objekti, klasterim tiek pievienotas abstrakcijas, tÄpÄc tÄs ir daudz ÄrtÄk kontrolÄt un konfigurÄt.
Lai saprastu produktu, iesaku vispirms instalÄt parasto Prometheus. Jums viss bÅ«s jÄkonfigurÄ caur konfigurÄciju, taÄu tas bÅ«s izdevÄ«gi: jÅ«s sapratÄ«sit, kas kam pieder un kÄ tas ir konfigurÄts. Prometheus OperatorÄ jÅ«s uzreiz paceļaties uz augstÄku abstrakciju, lai gan, ja vÄlaties, varat iedziļinÄties arÄ« dziļumos.
Prometheus ir labi integrÄts ar Kubernetes: tas var piekļūt un mijiedarboties ar API serveri.
Prometheus ir populÄrs, un to atbalsta liels skaits lietojumprogrammu un programmÄÅ”anas valodu. Atbalsts ir nepiecieÅ”ams, jo Prometheus ir savs metrikas formÄts, un, lai to pÄrsÅ«tÄ«tu, ir nepiecieÅ”ama vai nu lietojumprogrammas bibliotÄka, vai gatavs eksportÄtÄjs. Un tÄdu eksportÄtÄju ir diezgan daudz. PiemÄram, ir PostgreSQL Exporter: tas Åem datus no PostgreSQL un pÄrvÄrÅ” tos Prometheus formÄtÄ, lai Prometheus varÄtu ar to strÄdÄt.
Prometeja arhitektūra
Prometheus serveris ā Ŕī ir servera daļa, Prometeja smadzenes. Å eit tiek glabÄti un apstrÄdÄti rÄdÄ«tÄji.
Metrikas tiek glabÄtas laikrindu datu bÄzÄ (TSDB). TSDB nav atseviŔķa datu bÄze, bet gan Go pakotne, kas ir iebÅ«vÄta Prometheus. Aptuveni runÄjot, viss ir vienÄ binÄrÄ.
NeglabÄjiet datus TSDB ilgi
Prometheus infrastruktÅ«ra nav piemÄrota metriku ilgstoÅ”ai glabÄÅ”anai. NoklusÄjuma glabÄÅ”anas periods ir 15 dienas. Varat pÄrsniegt Å”o ierobežojumu, taÄu paturiet prÄtÄ: jo vairÄk datu glabÄjat TSDB un jo ilgÄk to darÄt, jo vairÄk resursu tas patÄrÄs. VÄsturisko datu glabÄÅ”ana programmÄ Prometheus tiek uzskatÄ«ta par sliktu praksi.
Ja jums ir milzÄ«ga trafika, metrikas skaits ir simtiem tÅ«kstoÅ”u sekundÄ, tad labÄk ir ierobežot to uzglabÄÅ”anu pÄc diska vietas vai perioda. Parasti TSDB burtiski dažas stundas saglabÄ ākarsto datusā, metriku. IlgÄkai uzglabÄÅ”anai tiek izmantota ÄrÄjÄ krÄtuve tajÄs datu bÄzÄs, kuras tam tieÅ”Äm ir piemÄrotas, piemÄram, InfluxDB, ClickHouse u.c. Es redzÄju vairÄk labu atsauksmju par ClickHouse.
Prometheus Server darbojas saskaÅÄ ar modeli vilkt: viÅÅ” pats meklÄ metriku galapunktos, ko mÄs viÅam iedevÄm. ViÅi teica: ādodieties uz API serveriā, un tas dodas tur katru n-to sekunžu skaitu un Åem metriku.
Objektiem ar Ä«su kalpoÅ”anas laiku (darbs vai cron darbs), kas var parÄdÄ«ties starp skrÄpÄÅ”anas periodiem, ir Pushgateway komponents. TajÄ tiek ievietota Ä«stermiÅa objektu metrika: darbs tika palielinÄts, darbÄ«ba tika pabeigta, metrika tika nosÅ«tÄ«ta uz Pushgateway un pabeigta. PÄc kÄda laika Prometheus darbosies savÄ tempÄ un pÄrÅems Å”os rÄdÄ«tÄjus no Pushgateway.
PaziÅojumu konfigurÄÅ”anai programmÄ Prometheus ir atseviŔķs komponents - BrÄ«dinÄjumu pÄrvaldnieks. Un brÄ«dinÄÅ”anas noteikumi. PiemÄram, jums ir jÄizveido brÄ«dinÄjums, ja servera API ir 0. Kad notikums tiek aktivizÄts, brÄ«dinÄjums tiek nodots brÄ«dinÄjumu pÄrvaldniekam tÄlÄkai sÅ«tÄ«Å”anai. BrÄ«dinÄjumu pÄrvaldniekam ir diezgan elastÄ«gi marÅ”rutÄÅ”anas iestatÄ«jumi: vienu brÄ«dinÄjumu grupu var nosÅ«tÄ«t administratoru telegrammas tÄrzÄÅ”anai, otru izstrÄdÄtÄju tÄrzÄÅ”anai un treÅ”o infrastruktÅ«ras darbinieku tÄrzÄÅ”anai. PaziÅojumus var nosÅ«tÄ«t uz Slack, Telegram, e-pastu un citiem kanÄliem.
Un visbeidzot es jums pastÄstÄ«Å”u par Prometeja slepkavas iezÄ«mi - atklÄjot. StrÄdÄjot ar Prometheus, nav jÄnorÄda konkrÄtas uzraugÄmo objektu adreses, pietiek norÄdÄ«t to veidu. Tas ir, nav nepiecieÅ”ams rakstÄ«t āÅ”eit ir IP adrese, Å”eit ir ports - monitorsā, tÄ vietÄ jums ir jÄnosaka, pÄc kÄdiem principiem atrast Å”os objektus (mÄrÄ·i - vÄrti). Pats Prometejs atkarÄ«bÄ no tÄ, kuri objekti Å”obrÄ«d ir aktÄ«vi, izvelk nepiecieÅ”amos un pievieno monitoringam.
Å Ä« pieeja labi saskan ar Kubernetes struktÅ«ru, kur arÄ« viss peld: Å”odien ir 10 serveri, rÄ«t 3. Lai katru reizi nenorÄdÄ«tu servera IP adresi, reiz rakstÄ«jÄm, kÄ to atrast - un Discovering to izdarÄ«s.
Prometeja valodu sauc PromQL. Izmantojot Å”o valodu, varat iegÅ«t konkrÄtu metrikas vÄrtÄ«bas un pÄc tam tÄs pÄrveidot un, pamatojoties uz tÄm, veidot analÄ«tiskos aprÄÄ·inus.
https://prometheus.io/docs/prometheus/latest/querying/basics/
ŠŃŠ¾ŃŃŠ¾Š¹ Š·Š°ŠæŃŠ¾Ń
container_memory_usage_bytes
ŠŠ°ŃŠµŠ¼Š°ŃŠøŃŠµŃŠŗŠøŠµ Š¾ŠæŠµŃŠ°ŃŠøŠø
container_memory_usage_bytes / 1024 / 1024
ŠŃŃŃŠ¾ŠµŠ½Š½ŃŠµ ŃŃŠ½ŠŗŃŠøŠø
sum(container_memory_usage_bytes) / 1024 / 1024
Š£ŃŠ¾ŃŠ½ŠµŠ½ŠøŠµ Š·Š°ŠæŃŠ¾ŃŠ°
100 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]) * 100)
Prometheus tīmekļa saskarne
Prometheus ir savs, diezgan minimÄlistisks tÄ«mekļa interfeiss. PiemÄrots tikai atkļūdoÅ”anai vai demonstrÄÅ”anai.
PromQL vaicÄjumu var uzrakstÄ«t izteiksmes rindÄ.
CilnÄ BrÄ«dinÄjumi ir brÄ«dinÄjumu kÄrtulas, un tÄm ir trÄ«s statusi:
- neaktÄ«vs - ja brÄ«dinÄjums Å”obrÄ«d nav aktÄ«vs, tas ir, ar to viss ir kÄrtÄ«bÄ un tas nedarbojÄs;
- gaida ā tas ir, ja brÄ«dinÄjums tika aktivizÄts, bet nosÅ«tÄ«Å”ana vÄl nav notikusi. Aizkave ir iestatÄ«ta, lai kompensÄtu tÄ«kla mirgoÅ”anu: ja norÄdÄ«tais pakalpojums minÅ«tes laikÄ ir pieaudzis, tad vÄl nav jÄzvana;
- Å”auÅ”ana ir treÅ”ais statuss, kad iedegas brÄ«dinÄjums un tiek nosÅ«tÄ«ti ziÅojumi.
Statusa izvÄlnÄ jÅ«s atradÄ«sit piekļuvi informÄcijai par to, kas ir Prometheus. Ir arÄ« pÄreja uz mÄrÄ·iem, par kuriem mÄs runÄjÄm iepriekÅ”.
DetalizÄtÄku pÄrskatu par Prometheus saskarni sk
IntegrÄcija ar Grafana
Prometheus tÄ«mekļa saskarnÄ jÅ«s neatradÄ«sit skaistus un saprotamus grafikus, no kuriem jÅ«s varÄtu izdarÄ«t secinÄjumus par klastera stÄvokli. Lai tos izveidotu, Prometheus integrÄjas ar Grafana. Å ie ir informÄcijas paneļi, ko mÄs iegÅ«stam.
Prometheus un Grafana integrÄcijas iestatÄ«Å”ana nepavisam nav grÅ«ta, instrukcijas var atrast dokumentÄcijÄ:
NÄkamajos rakstos turpinÄsim monitoringa tÄmu: runÄsim par žurnÄlu apkopoÅ”anu un analÄ«zi, izmantojot Grafana Loki un alternatÄ«vos rÄ«kus.
Autors: Marsels Ibrajevs, sertificÄts Kubernetes administrators, uzÅÄmumÄ praktizÄjoÅ”ais inženieris
Avots: www.habr.com