Kufuatilia Kundi la Kubernetes: Muhtasari na Utangulizi wa Prometheus

Fikiria dhana ya ufuatiliaji wa Kubernetes, jifahamishe na zana ya Prometheus, na uzungumze kuhusu kuarifu.

Mada ya ufuatiliaji ni kubwa, haiwezi kutenganishwa katika kifungu kimoja. Madhumuni ya maandishi haya ni kutoa muhtasari wa zana, dhana na mikabala.

Nyenzo za kifungu ni kufinya kutoka hotuba ya wazi ya shule "Slurm". Ikiwa unataka kuchukua kozi kamili - jiandikishe kwa kozi ya Miundombinu ya ufuatiliaji na ukataji miti huko Kubernetes.

Kufuatilia Kundi la Kubernetes: Muhtasari na Utangulizi wa Prometheus

Ni nini kinachofuatiliwa katika nguzo ya Kubernetes

Kufuatilia Kundi la Kubernetes: Muhtasari na Utangulizi wa Prometheus

seva za kimwili. Ikiwa nguzo ya Kubernetes imetumwa kwenye seva zake, unahitaji kufuatilia afya zao. Zabbix inashughulikia kazi hii; ikiwa unafanya kazi naye, basi huna haja ya kukataa, hakutakuwa na migogoro. Ni Zabbix inayofuatilia hali ya seva zetu.

Wacha tuendelee kwenye ufuatiliaji katika kiwango cha nguzo.

Vipengele vya Udhibiti wa Ndege: API, Mratibu na wengine. Kwa uchache, unahitaji kuhakikisha kuwa API ya seva au nkd ni kubwa kuliko 0. Etcd inaweza kurejesha metriki nyingi: kwa diski ambazo inazunguka, kwa afya ya kikundi chake cha etcd, na wengine.

Docker ilionekana muda mrefu uliopita na kila mtu anafahamu vizuri matatizo yake: vyombo vingi vinazalisha kufungia na matatizo mengine. Kwa hivyo, Docker yenyewe, kama mfumo, inapaswa pia kudhibitiwa, angalau kwa kupatikana.

dns. Ikiwa DNS itaanguka kwenye nguzo, basi huduma nzima ya Ugunduzi itaanguka baada yake, simu kutoka kwa maganda hadi maganda itaacha kufanya kazi. Katika mazoezi yangu, hapakuwa na matatizo hayo, lakini hii haina maana kwamba hali ya DNS haina haja ya kufuatiliwa. Omba muda wa kusubiri na baadhi ya vipimo vingine vinaweza kufuatiliwa kwenye CoreDNS.

Ingress. Ni muhimu kudhibiti upatikanaji wa ingresses (ikiwa ni pamoja na Kidhibiti cha Ingress) kama pointi za kuingia kwenye mradi.

Vipengele kuu vya nguzo vimevunjwa - sasa wacha tuende chini kwa kiwango cha vifupisho.

Inaweza kuonekana kuwa programu zinaendeshwa kwenye maganda, ambayo inamaanisha zinahitaji kudhibitiwa, lakini kwa kweli sio. Pods ni ephemeral: leo wanaendesha kwenye seva moja, kesho kwa mwingine; leo kuna 10 kati yao, kesho 2. Kwa hiyo, hakuna mtu anayefuatilia maganda. Ndani ya usanifu wa microservice, ni muhimu zaidi kudhibiti upatikanaji wa programu kwa ujumla. Hasa, angalia upatikanaji wa miisho ya huduma: kuna chochote kinachofanya kazi? Ikiwa programu inapatikana, basi nini kinatokea nyuma yake, ni nakala ngapi sasa - haya ni maswali ya utaratibu wa pili. Hakuna haja ya kufuatilia matukio ya mtu binafsi.

Katika ngazi ya mwisho, unahitaji kudhibiti uendeshaji wa maombi yenyewe, kuchukua metrics ya biashara: idadi ya maagizo, tabia ya mtumiaji, na kadhalika.

Prometheus

Mfumo bora wa ufuatiliaji wa nguzo ni Prometheus. Sijui zana yoyote ambayo inaweza kulinganisha Prometheus katika suala la ubora na urahisi wa matumizi. Ni nzuri kwa miundombinu inayoweza kunyumbulika, kwa hivyo wanaposema "Ufuatiliaji wa Kubernetes", kwa kawaida wanamaanisha Prometheus.

Kuna chaguzi kadhaa za kuanza na Prometheus: kwa kutumia Helm, unaweza kusakinisha Prometheus ya kawaida au Prometheus Opereta.

  1. Prometheus ya kawaida. Kila kitu kiko sawa naye, lakini unahitaji kusanidi ConfigMap - kwa kweli, andika faili za usanidi wa maandishi, kama tulivyofanya hapo awali, kabla ya usanifu wa microservice.
  2. Opereta ya Prometheus imeenea zaidi, ni ngumu zaidi katika suala la mantiki ya ndani, lakini ni rahisi kufanya kazi nayo: kuna vitu tofauti, vifupisho huongezwa kwenye nguzo, kwa hivyo ni rahisi zaidi kudhibiti na kusanidi.

Ili kuelewa bidhaa, napendekeza kusanikisha Prometheus ya kawaida kwanza. Utalazimika kusanidi kila kitu kupitia usanidi, lakini hii itakuwa ya faida: utagundua ni nini na jinsi imeundwa. Katika Prometheus Operator, unainuka mara moja hadi juu zaidi, ingawa unaweza pia kuzama ndani ya kina ukitaka.

Prometheus imeunganishwa vizuri na Kubernetes: inaweza kufikia na kuingiliana na Seva ya API.

Prometheus ni maarufu, ndiyo sababu idadi kubwa ya programu na lugha za programu zinaiunga mkono. Usaidizi unahitajika, kwa kuwa Prometheus ina muundo wake wa vipimo, na ili kuihamisha, unahitaji maktaba ndani ya programu au msafirishaji aliye tayari. Na kuna wasafirishaji wachache kama hao. Kwa mfano, kuna PostgreSQL Exporter: inachukua data kutoka kwa PostgreSQL na kuibadilisha kuwa umbizo la Prometheus ili Prometheus afanye kazi nayo.

Usanifu wa Prometheus

Kufuatilia Kundi la Kubernetes: Muhtasari na Utangulizi wa Prometheus

Seva ya Prometheus ni mwisho wa nyuma, ubongo wa Prometheus. Vipimo huhifadhiwa na kuchakatwa hapa.

Vipimo huhifadhiwa katika hifadhidata ya mfululizo wa saa (TSDB). TSDB si hifadhidata tofauti, lakini ni kifurushi katika lugha ya Go ambacho kimepachikwa katika Prometheus. Kwa kusema, kila kitu kiko kwenye binary moja.

Usihifadhi data katika TSDB kwa muda mrefu

Miundombinu ya Prometheus haifai kwa uhifadhi wa muda mrefu wa vipimo. Kipindi chaguo-msingi cha kubaki ni siku 15. Unaweza kuzidi kikomo hiki, lakini kumbuka: kadiri data unavyohifadhi katika TSDB na kadri unavyoifanya kwa muda mrefu, ndivyo rasilimali itakavyotumia. Kuhifadhi data ya kihistoria katika Prometheus inachukuliwa kuwa tabia mbaya.

Ikiwa una trafiki kubwa, idadi ya metriki ni mamia ya maelfu kwa sekunde, basi ni bora kupunguza uhifadhi wao kwa nafasi ya diski au kwa kipindi. Kwa kawaida, "data motomoto" huhifadhiwa katika TSDB, vipimo kwa saa chache tu. Kwa hifadhi ndefu, hifadhi ya nje hutumiwa katika hifadhidata hizo ambazo zinafaa kwa hili, kwa mfano, InfluxDB, ClickHouse, na kadhalika. Niliona hakiki nzuri zaidi kuhusu ClickHouse.

Seva ya Prometheus inafanya kazi kwenye mfano kuvuta: anatafuta vipimo kwa ncha hizo tulizompa. Walisema: "nenda kwa Seva ya API", na huenda huko kila nambari ya n-th ya sekunde na kuchukua vipimo.

Kwa vitu vilivyo na maisha mafupi (kazi au kazi ya cron) ambavyo vinaweza kuonekana kati ya vipindi vya kugema, kuna sehemu ya Pushgateway. Vipimo kutoka kwa vitu vya muda mfupi vinasukumwa ndani yake: kazi imeongezeka, imefanya kitendo, imetuma metrics kwa Pushgateway na imekamilika. Baada ya muda, Prometheus itashuka kwa kasi yake na kuchukua vipimo hivi kutoka Pushgateway.

Ili kusanidi arifa katika Prometheus kuna sehemu tofauti - Kidhibiti cha tahadhari. Na sheria za tahadhari. Kwa mfano, unahitaji kuunda arifa ikiwa API ya seva ni 0. Wakati tukio linawaka, tahadhari hupitishwa kwa msimamizi wa tahadhari kwa utumaji zaidi. Kidhibiti cha arifa kina mipangilio inayonyumbulika kabisa ya uelekezaji: kundi moja la arifa linaweza kutumwa kwa gumzo la telegramu ya wasimamizi, lingine kwa gumzo la wasanidi programu, na la tatu kwa gumzo la wafanyikazi wa miundombinu. Arifa zinaweza kutumwa kwa Slack, Telegraph, barua pepe na vituo vingine.

Na mwishowe, nitakuambia juu ya kipengele cha muuaji wa Prometheus - Kugundua. Wakati wa kufanya kazi na Prometheus, huna haja ya kutaja anwani maalum za vitu kwa ajili ya ufuatiliaji, inatosha kuweka aina yao. Hiyo ni, huna haja ya kuandika "hapa kuna anwani ya IP, hapa kuna bandari - kufuatilia", badala yake, unahitaji kuamua kwa kanuni gani kupata vitu hivi (malengo ya - malengo). Prometheus yenyewe, kulingana na ni vitu gani vinavyofanya kazi kwa sasa, huchota zile muhimu na kuziongeza kwa ufuatiliaji.

Njia hii inafaa vizuri na muundo wa Kubernetes, ambapo kila kitu pia kinaelea: leo kuna seva 10, kesho 3. Ili wasielezee anwani ya IP ya seva kila wakati, waliandika mara moja jinsi ya kuipata - na Kugundua itafanya hivyo. .

Lugha ya Prometheus inaitwa PromQL. Kwa kutumia lugha hii, unaweza kupata thamani za vipimo mahususi na kisha kuzibadilisha, na kuunda hesabu za uchanganuzi kulingana nazo.

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

Prometheus ina kiolesura chake cha wavuti kisicho na usawa. Inafaa tu kwa utatuzi au maonyesho.

Kufuatilia Kundi la Kubernetes: Muhtasari na Utangulizi wa Prometheus

Katika mstari wa Usemi, unaweza kuandika swali katika lugha ya PromQL.

Kichupo cha Arifa kina sheria za tahadhari, na zina hali tatu:

  1. haifanyiki - ikiwa tahadhari haifanyi kazi kwa sasa, yaani, kila kitu kiko sawa nayo, na haikufanya kazi;
  2. inasubiri - hii ni ikiwa tahadhari ilifanya kazi, lakini utumaji haujapita. Ucheleweshaji umewekwa ili kulipa fidia kwa blinking ya mtandao: ikiwa huduma maalum imeongezeka ndani ya dakika, basi kengele haipaswi kupigwa bado;
  3. kurusha ni hali ya tatu wakati tahadhari inapowaka na kutuma ujumbe.

Katika menyu ya Hali utapata ufikiaji wa habari kuhusu Prometheus ni nini. Pia kuna mpito kwa malengo (malengo), ambayo tulizungumzia hapo juu.

Kufuatilia Kundi la Kubernetes: Muhtasari na Utangulizi wa Prometheus

Kwa muhtasari wa kina zaidi wa kiolesura cha Prometheus, ona katika mhadhara wa Slurm juu ya ufuatiliaji wa nguzo ya Kubernetes.

Kuunganishwa na Grafana

Katika interface ya mtandao ya Prometheus, huwezi kupata grafu nzuri na zinazoeleweka ambazo unaweza kuteka hitimisho kuhusu hali ya nguzo. Ili kuwajenga, Prometheus imeunganishwa na Grafana. Tunapata dashibodi kama hizo.

Kufuatilia Kundi la Kubernetes: Muhtasari na Utangulizi wa Prometheus

Kuanzisha ujumuishaji wa Prometheus na Grafana sio ngumu hata kidogo, unaweza kupata maagizo kwenye hati: MSAADA WA GRAFANA KWA PROMETHEUSNaam, nitamalizia na hili.

Katika makala zifuatazo, tutaendelea mada ya ufuatiliaji: tutazungumzia kuhusu kukusanya na kuchambua magogo kwa kutumia Grafana Loki na zana mbadala.

Mwandishi: Marcel Ibraev, msimamizi aliyeidhinishwa wa Kubernetes, mhandisi wa mazoezi katika kampuni. Southbridge, spika na msanidi wa kozi Slurm.

Chanzo: mapenzi.com