Pag-monitor sa usa ka Kubernetes Cluster: Usa ka Overview ug Pasiuna sa Prometheus

Hunahunaa ang konsepto sa pag-monitor sa Kubernetes, pag-ila sa himan nga Prometheus, ug paghisgot bahin sa pag-alerto.

Ang hilisgutan sa pag-monitor daghan, dili kini mabungkag sa usa ka artikulo. Ang katuyoan niini nga teksto mao ang paghatag usa ka kinatibuk-ang panan-aw sa mga himan, konsepto ug pamaagi.

Ang materyal sa artikulo mao ang usa ka squeeze gikan sa bukas nga lecture sa eskwelahan "Slurm". Kung gusto nimo nga mokuha sa usa ka bug-os nga kurso - pag-sign up alang sa usa ka kurso sa Pag-monitor ug pag-log inprastraktura sa Kubernetes.

Pag-monitor sa usa ka Kubernetes Cluster: Usa ka Overview ug Pasiuna sa Prometheus

Unsa ang gimonitor sa usa ka Kubernetes cluster

Pag-monitor sa usa ka Kubernetes Cluster: Usa ka Overview ug Pasiuna sa Prometheus

pisikal nga mga server. Kung ang Kubernetes cluster na-deploy sa mga server niini, kinahanglan nimo nga bantayan ang ilang kahimsog. Gidumala ni Zabbix kini nga buluhaton; kung nagtrabaho ka niya, nan dili nimo kinahanglan nga balibaran, wala’y mga panagbangi. Kini ang Zabbix nga nag-monitor sa kahimtang sa among mga server.

Mopadayon kita sa pagmonitor sa lebel sa cluster.

Mga sangkap sa Control Plane: API, Scheduler ug uban pa. Sa labing gamay, kinahanglan nimo nga sigurohon nga ang API sa mga server o etcd labaw pa sa 0. Ang Etcd makabalik sa daghang mga sukatan: pinaagi sa mga disk diin kini nagtuyok, sa kahimsog sa etcd cluster niini, ug uban pa.

Docker nagpakita sa dugay na nga panahon ug ang tanan nahibal-an pag-ayo sa mga problema niini: daghang mga sudlanan ang hinungdan sa pag-freeze ug uban pang mga problema. Busa, ang Docker mismo, isip usa ka sistema, kinahanglan usab nga kontrolon, labing menos alang sa pagkaanaa.

dns. Kung ang DNS mahulog sa cluster, unya ang tibuok Discovery nga serbisyo mahulog human niini, ang mga tawag gikan sa pods ngadto sa pods mohunong sa pagtrabaho. Sa akong praktis, wala'y ingon nga mga problema, apan wala kini magpasabut nga ang kahimtang sa DNS dili kinahanglan nga bantayan. Ang paghangyo sa latency ug uban pang mga sukatan mahimong masubay sa CoreDNS.

Ingress. Kinahanglan nga kontrolon ang pagkaanaa sa mga pagsulod (lakip ang Ingress Controller) ingon mga punto sa pagsulod sa proyekto.

Ang mga nag-unang sangkap sa cluster gibungkag - karon moadto kita sa lebel sa abstraction.

Mopatim-aw nga ang mga aplikasyon nagdagan sa mga pod, nga nagpasabut nga kinahanglan nila nga kontrolon, apan sa tinuud dili. Ang mga pods ephemeral: karon nagdagan sila sa usa ka server, ugma sa lain; karon 10 na sila, ugma 2. Busa walay nag monitor sa mga pod. Sulod sa usa ka arkitektura sa microservice, mas hinungdanon nga kontrolon ang pagkaanaa sa aplikasyon sa kinatibuk-an. Sa partikular, susiha ang pagkaanaa sa mga endpoint sa serbisyo: aduna bay bisan unsa nga nagtrabaho? Kung ang aplikasyon magamit, kung unsa ang mahitabo sa luyo niini, pila ang mga replika karon - kini ang mga pangutana sa ikaduha nga pagkasunud. Dili kinahanglan nga bantayan ang indibidwal nga mga higayon.

Sa katapusan nga lebel, kinahanglan nimo nga kontrolon ang operasyon sa aplikasyon mismo, pagkuha mga sukatan sa negosyo: ang gidaghanon sa mga order, pamatasan sa tiggamit, ug uban pa.

Prometheus

Ang labing kaayo nga sistema alang sa pag-monitor sa usa ka cluster mao ang Prometheus. Wala koy nahibal-an nga bisan unsang himan nga makatugma sa Prometheus sa mga termino sa kalidad ug kadali sa paggamit. Maayo kini alang sa flexible nga imprastraktura, mao nga kung giingon nila nga "Pagmonitor sa Kubernetes", kasagaran nila nagpasabut nga Prometheus.

Adunay usa ka magtiayon nga mga kapilian sa pagsugod sa Prometheus: gamit ang Helm, mahimo nimong i-install ang usa ka regular nga Prometheus o Prometheus Operator.

  1. Regular nga Prometheus. Maayo ang tanan kaniya, apan kinahanglan nimo nga i-configure ang ConfigMap - sa tinuud, isulat ang mga file sa pag-configure nga nakabase sa teksto, sama sa among gibuhat kaniadto, sa wala pa ang arkitektura sa microservice.
  2. Ang Prometheus Operator usa ka gamay nga pagkaylap, usa ka gamay nga mas komplikado sa mga termino sa internal nga lohika, apan mas sayon ​​​​ang pagtrabaho niini: adunay lain nga mga butang, ang mga abstraction gidugang sa cluster, mao nga kini mas sayon ​​​​sa pagkontrol ug pag-configure.

Aron masabtan ang produkto, girekomenda nako nga i-install una ang regular nga Prometheus. Kinahanglan nimo nga i-configure ang tanan pinaagi sa config, apan kini mahimong mapuslanon: mahibal-an nimo kung unsa ang nahisakop sa kung unsa ug kung giunsa kini gi-configure. Sa Prometheus Operator, mosaka ka dayon sa usa ka abstraction nga mas taas, bisan kung mahimo ka usab nga masusi ang kahiladman kung gusto nimo.

Ang Prometheus maayo nga nahiusa sa Kubernetes: kini maka-access ug makig-uban sa API Server.

Popular ang Prometheus, mao nga daghang mga aplikasyon ug mga sinultian sa programming ang nagsuporta niini. Gikinahanglan ang suporta, tungod kay ang Prometheus adunay kaugalingon nga format sa sukatan, ug aron mabalhin kini, kinahanglan nimo ang usa ka librarya sa sulod sa aplikasyon o usa ka andam nga eksporter. Ug adunay pipila nga ingon nga mga exporter. Pananglitan, adunay PostgreSQL Exporter: nagkinahanglan kini og data gikan sa PostgreSQL ug gi-convert kini sa Prometheus format aron ang Prometheus makatrabaho niini.

Ang arkitektura sa Prometheus

Pag-monitor sa usa ka Kubernetes Cluster: Usa ka Overview ug Pasiuna sa Prometheus

Prometheus Server mao ang likod nga tumoy, ang utok sa Prometheus. Ang mga sukatan gitipigan ug giproseso dinhi.

Ang metrics gitipigan sa time series database (TSDB). Ang TSDB dili usa ka bulag nga database, apan usa ka pakete sa Go nga pinulongan nga na-embed sa Prometheus. Sa kinatibuk-an, ang tanan naa sa usa ka binary.

Ayaw itago ang datos sa TSDB sa dugay nga panahon

Ang imprastraktura sa Prometheus dili angay alang sa dugay nga pagtipig sa mga sukatan. Ang default nga retention period kay 15 ka adlaw. Mahimo nimong lapason kini nga limitasyon, apan hinumdomi: ang daghang datos nga imong gitipigan sa TSDB ug kung mas dugay nimo kini buhaton, labi ka daghang mga kapanguhaan ang magamit niini. Ang pagtipig sa makasaysayan nga datos sa Prometheus giisip nga dili maayo nga praktis.

Kung adunay ka dako nga trapiko, ang gidaghanon sa mga sukatan gatusan ka libo matag segundo, nan mas maayo nga limitahan ang ilang pagtipig sa disk space o sa panahon. Kasagaran, ang "init nga datos" gitipigan sa TSDB, mga sukatan sa pipila lang ka oras. Alang sa mas taas nga pagtipig, ang eksternal nga pagtipig gigamit sa mga database nga angay gyud alang niini, pananglitan, InfluxDB, ClickHouse, ug uban pa. Nakita nako ang daghang maayong mga pagsusi bahin sa ClickHouse.

Ang Prometheus Server nagtrabaho sa modelo pagbitad: siya moadto alang sa metrics sa mga endpoints nga atong gihatag kaniya. Miingon sila: "adto sa API Server", ug moadto siya didto matag n-ika nga gidaghanon sa mga segundo ug gikuha ang mga sukatan.

Alang sa mga butang nga adunay mubo nga kinabuhi (trabaho o cron nga trabaho) nga mahimong makita taliwala sa mga panahon sa pag-scrap, adunay usa ka bahin sa Pushgateway. Ang mga sukatan gikan sa mga mubu nga mga butang giduso niini: ang trabaho nabanhaw, nagpahigayon usa ka aksyon, nagpadala mga sukatan sa Pushgateway ug nahuman. Pagkataudtaod, ang Prometheus manaog sa kaugalingon nga tulin ug kuhaon kini nga mga sukatan gikan sa Pushgateway.

Aron ma-configure ang mga pahibalo sa Prometheus adunay usa ka bulag nga sangkap - Alertmanager. Ug ang mga lagda sa pag-alerto. Pananglitan, kinahanglan ka nga maghimo usa ka alerto kung ang server API kay 0. Kung ang panghitabo sunog, ang alerto ipasa sa alert manager alang sa dugang nga pagpadala. Ang alert manager adunay flexible routing settings: ang usa ka grupo sa mga alert mahimong ipadala sa mga admins' telegram chat, lain sa developers' chat, ug ang ikatulo sa infrastructure workers' chat. Ang mga pahibalo mahimong ipadala sa Slack, Telegram, email, ug uban pang mga channel.

Ug sa katapusan, isulti ko kanimo ang bahin sa Prometheus killer feature - Pagkaplag. Kung nagtrabaho kauban ang Prometheus, dili nimo kinahanglan nga itakda ang piho nga mga adres sa mga butang alang sa pag-monitor, igo na nga itakda ang ilang tipo. Kana mao, dili nimo kinahanglan nga isulat "ania ang IP address, ania ang pantalan - monitor", hinoon, kinahanglan nimo nga mahibal-an kung unsang mga prinsipyo ang makit-an kini nga mga butang (target - mga tumong). Ang Prometheus mismo, depende kung unsang mga butang ang aktibo karon, gibira ang mga kinahanglanon ug gidugang kini sa pag-monitor.

Kini nga pamaagi mohaum pag-ayo sa istruktura sa Kubernetes, diin ang tanan naglutaw usab: karon adunay 10 ka mga server, ugma 3. Aron dili matino ang IP address sa server matag higayon, sila misulat sa makausa kon unsaon pagpangita niini - ug ang Discovering mobuhat niini .

Ang pinulongang Prometheus gitawag PromQL. Gamit ang kini nga lengguwahe, mahimo nimong makuha ang mga kantidad sa piho nga mga sukatan ug dayon i-convert kini, paghimo mga kalkulasyon sa analitikal base sa kanila.

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 web interface

Ang Prometheus adunay kaugalingon, medyo minimalistic nga web interface. Angayan lamang alang sa debug o demonstrasyon.

Pag-monitor sa usa ka Kubernetes Cluster: Usa ka Overview ug Pasiuna sa Prometheus

Sa linya sa Expression, mahimo kang magsulat og pangutana sa PromQL nga pinulongan.

Ang tab nga Mga Alerto adunay mga lagda sa pag-alerto, ug kini adunay tulo ka mga kahimtang:

  1. dili aktibo - kung ang alerto dili aktibo sa pagkakaron, nga mao, ang tanan maayo niini, ug wala kini molihok;
  2. pending - kini kung ang alerto nagtrabaho, apan ang pagpadala wala pa moagi. Ang paglangan gitakda aron mabayran ang pagkidlap sa network: kung ang gitakda nga serbisyo misaka sa sulod sa usa ka minuto, nan ang alarma kinahanglan dili pa tunog;
  3. Ang pagpabuto mao ang ikatulo nga kahimtang kung ang alerto mosiga ug magpadala mga mensahe.

Sa menu sa Status makit-an nimo ang pag-access sa kasayuran bahin sa kung unsa ang Prometheus. Adunay usab usa ka transisyon sa mga target (target), nga among gihisgutan sa ibabaw.

Pag-monitor sa usa ka Kubernetes Cluster: Usa ka Overview ug Pasiuna sa Prometheus

Para sa mas detalyado nga overview sa Prometheus interface, tan-awa sa lecture ni Slurm sa pagmonitor sa usa ka Kubernetes cluster.

Paghiusa sa Grafana

Sa Prometheus web interface, dili nimo makit-an ang matahum ug masabtan nga mga graph diin mahimo nimong makuha ang usa ka konklusyon bahin sa kahimtang sa cluster. Aron matukod sila, ang Prometheus gisagol sa Grafana. Nakuha namo ang ingon nga mga dashboard.

Pag-monitor sa usa ka Kubernetes Cluster: Usa ka Overview ug Pasiuna sa Prometheus

Ang pag-set up sa Prometheus ug Grafana nga panagsama dili gyud lisud, makit-an nimo ang mga panudlo sa dokumentasyon: GRAFANA SUPPORT PARA SA PROMETHEUSAw, tapuson ko kini.

Sa mosunod nga mga artikulo, ipadayon nato ang hilisgutan sa pagmonitor: maghisgot kita mahitungod sa pagkolekta ug pag-analisar sa mga troso gamit ang Grafana Loki ug alternatibong mga himan.

Awtor: Marcel Ibraev, certified Kubernetes administrator, practicing engineer sa kompanya habagatan nga taytayan, mamumulong ug developer sa kurso nga Slurm.

Source: www.habr.com

Idugang sa usa ka comment