Мониторинги кластери Кубернетес: Шарҳ ва муқаддима ба Prometheus

Консепсияи мониторинги Кубернетесро баррасӣ кунед, бо асбоби Prometheus шинос шавед ва дар бораи огоҳӣ сӯҳбат кунед.

Мавзӯи мониторинг ҳаҷм аст, онро дар як мақола ҷудо кардан мумкин нест. Мақсади ин матн пешниҳоди шарҳи абзорҳо, мафҳумҳо ва равишҳо мебошад.

Маводи мақола як фишурда аз лекцияи кушоди мактаби «Слурм». Агар шумо хоҳед, ки курси мукаммал гузаронед - барои курси он обуна шавед Мониторинг ва сабти инфрасохтор дар Кубернетес.

Мониторинги кластери Кубернетес: Шарҳ ва муқаддима ба Prometheus

Он чизе ки дар кластери Kubernetes назорат карда мешавад

Мониторинги кластери Кубернетес: Шарҳ ва муқаддима ба Prometheus

серверҳои ҷисмонӣ. Агар кластери Kubernetes дар серверҳои он ҷойгир карда шуда бошад, шумо бояд саломатии онҳоро назорат кунед. Zabbix ин вазифаро иҷро мекунад; агар шумо бо ӯ кор кунед, пас ба шумо лозим нест, ки рад кунед, ҳеҷ гуна низоъ вуҷуд надорад. Ин Zabbix аст, ки ҳолати серверҳои моро назорат мекунад.

Биёед ба мониторинг дар сатҳи кластер гузарем.

Қисмҳои ҳавопаймои идоракунӣ: API, Scheduler ва дигарон. Ҳадди ақал, шумо бояд боварӣ ҳосил кунед, ки API-и серверҳо ё ғайра аз 0 бузургтар аст. Ва ғайра метавонад миқдори зиёди ченакҳоро баргардонад: аз рӯи дискҳое, ки дар он чарх мезанад, аз рӯи саломатии кластери etcd ва ғайра.

Доктор кайҳо пеш пайдо шуда буд ва ҳама мушкилоти онро хуб медонанд: бисёр контейнерҳо яхбандӣ ва дигар мушкилотро ба вуҷуд меоранд. Аз ин рӯ, худи Docker, ҳамчун система, бояд ҳадди аққал барои мавҷудият назорат карда шавад.

dns. Агар DNS дар кластер афтад, пас аз он тамоми хидмати Discovery қатъ мешавад, зангҳо аз подкҳо ба подкҳо кор мекунанд. Дар амалияи ман чунин мушкилот вуҷуд надоштанд, аммо ин маънои онро надорад, ки ҳолати DNS назорат кардан лозим нест. Вақти таъхири дархост ва баъзе дигар ченакҳоро дар CoreDNS пайгирӣ кардан мумкин аст.

Дохилшавӣ. Мавҷудияти воридотҳоро (аз ҷумла контролери воридотро) ҳамчун нуқтаҳои воридшавӣ ба лоиҳа назорат кардан лозим аст.

Қисмҳои асосии кластер барҳам дода шуданд - акнун биёед ба сатҳи абстраксияҳо гузарем.

Чунин ба назар мерасад, ки барномаҳо дар қуттиҳо кор мекунанд, ки ин маънои онро дорад, ки онҳо бояд назорат карда шаванд, аммо дар асл онҳо нестанд. Подҳо муваққатӣ мебошанд: имрӯз онҳо дар як сервер, фардо дар сервери дигар кор мекунанд; имруз 10-то, фардо 2. Бинобар ин ба иихолхо касе назорат намекунад. Дар доираи меъмории хидматрасонии хурд, назорат кардани дастрасии барнома дар маҷмӯъ муҳимтар аст. Махсусан, мавҷудияти нуқтаҳои хидматрасониро тафтиш кунед: оё ягон коре кор мекунад? Агар барнома дастрас бошад, пас паси он чӣ рӯй медиҳад, ҳоло чанд реплика вуҷуд дорад - ин саволҳои тартиби дуюм мебошанд. Ҳолатҳои алоҳидаро назорат кардан лозим нест.

Дар сатҳи охирин, шумо бояд кори худи барномаро назорат кунед, ченакҳои тиҷоратӣ гиред: шумораи фармоишҳо, рафтори корбар ва ғайра.

Prometheus

Беҳтарин системаи мониторинги кластер аст Prometheus. Ман ягон асбоберо намедонам, ки аз ҷиҳати сифат ва осонии истифода ба Prometheus мувофиқат кунад. Он барои инфрасохтори чандир бузург аст, бинобар ин вақте ки онҳо "мониторинги Кубернетес" мегӯянд, онҳо одатан Прометейро дар назар доранд.

Барои оғоз кардани Prometheus якчанд вариант вуҷуд дорад: бо истифода аз Helm, шумо метавонед Prometheus ё Prometheus Operator-и муқаррариро насб кунед.

  1. Прометей муқаррарӣ. Бо ӯ ҳама чиз хуб аст, аммо шумо бояд ConfigMap-ро танзим кунед - дар асл, файлҳои конфигуратсияро дар асоси матн нависед, чуноне ки қаблан пеш аз меъмории микросервис навишта будем.
  2. Prometheus Operator каме васеътар аст, аз лиҳози мантиқи дохилӣ каме мураккабтар аст, аммо кор бо он осонтар аст: объектҳои алоҳида мавҷуданд, абстраксияҳо ба кластер илова карда мешаванд, бинобар ин онҳо барои идора кардан ва танзим кардан хеле қулайтаранд.

Барои фаҳмидани маҳсулот, ман тавсия медиҳам, ки аввал Prometheus-и муқаррариро насб кунед. Шумо бояд ҳама чизро тавассути конфигуратсия танзим кунед, аммо ин фоидаовар хоҳад буд: шумо хоҳед фаҳмид, ки чӣ ба чӣ тааллуқ дорад ва чӣ гуна он танзим шудааст. Дар Prometheus Operator, шумо фавран ба абстраксияи баландтар мебароед, гарчанде ки шумо инчунин метавонед, агар хоҳед, ба умқҳо ворид шавед.

Prometheus бо Kubernetes хуб ҳамгиро шудааст: он метавонад ба сервери API дастрасӣ пайдо кунад ва ҳамкорӣ кунад.

Prometheus маъмул аст, бинобар ин шумораи зиёди барномаҳо ва забонҳои барномасозӣ онро дастгирӣ мекунанд. Дастгирӣ лозим аст, зеро Prometheus формати метрикаи худро дорад ва барои интиқоли он ба шумо ё китобхона дар дохили барнома ё содиркунандаи тайёр лозим аст. Ва ин гуна содиркунандагон хеле каманд. Масалан, PostgreSQL Exporter вуҷуд дорад: он маълумотро аз PostgreSQL мегирад ва онро ба формати Prometheus табдил медиҳад, то Prometheus бо он кор кунад.

Меъмории Прометей

Мониторинги кластери Кубернетес: Шарҳ ва муқаддима ба Prometheus

Сервери Prometheus охири ақиб, майнаи Прометей аст. Метрикҳо дар ин ҷо нигоҳ дошта мешаванд ва коркард карда мешаванд.

Метрикҳо дар базаи силсилаи вақтҳо (TSDB) нигоҳ дошта мешаванд. TSDB пойгоҳи додаҳои алоҳида нест, балки бастаи забони Go мебошад, ки дар Prometheus ҷойгир карда шудааст. Тахминан, ҳама чиз дар як бинар аст.

Маълумотро дар TSDB муддати дароз нигоҳ надоред

Инфрасохтори Prometheus барои нигоҳдории дарозмуддати метрика мувофиқ нест. Мӯҳлати нигоҳдории пешфарз 15 рӯз аст. Шумо метавонед ин маҳдудиятро зиёд кунед, аммо дар хотир доред: чӣ қадаре ки шумо дар TSDB маълумот захира кунед ва ҳар қадаре ки шумо ин корро дароз кунед, ҳамон қадар захираҳои бештар истеъмол мекунанд. Нигоҳ доштани маълумоти таърихӣ дар Прометей таҷрибаи бад ҳисобида мешавад.

Агар шумо трафики зиёд дошта бошед, шумораи ченакҳо садҳо ҳазор дар як сонияро ташкил медиҳад, пас беҳтар аст нигоҳдории онҳоро бо фазои диск ё давра маҳдуд кунед. Одатан, "маълумоти гарм" дар TSDB нигоҳ дошта мешавад, нишондиҳандаҳо дар тӯли чанд соат. Барои нигоҳдории дарозтар, нигаҳдории беруна дар он пойгоҳи додаҳо истифода мешавад, ки барои ин воқеан мувофиқанд, масалан, InfluxDB, ClickHouse ва ғайра. Ман баррасиҳои хубтарро дар бораи ClickHouse дидам.

Prometheus Server дар модел кор мекунад Кашидан: вай барои ченакҳо ба он нуқтаҳое, ки мо ба ӯ додаем, меравад. Онҳо гуфтанд: "ба сервери API равед" ва ӯ ҳар сония ба он ҷо меравад ва ченакҳоро мегирад.

Барои объектҳое, ки умри кӯтоҳ доранд (кор ё кори cron), ки метавонанд дар байни давраҳои скраб пайдо шаванд, ҷузъи Pushgateway мавҷуд аст. Метрикҳо аз объектҳои кӯтоҳмуддат ба он тела дода мешаванд: кор баланд шуд, амал иҷро шуд, метрика ба Pushgateway фиристод ва анҷом ёфт. Пас аз чанде, Прометей бо суръати худ поён хоҳад омад ва ин нишондиҳандаҳоро аз Pushgateway мегирад.

Барои танзим кардани огоҳиномаҳо дар Prometheus як ҷузъи алоҳида мавҷуд аст - Менеҷери огоҳкунанда. Ва қоидаҳои огоҳӣ. Масалан, ба шумо лозим аст, ки ҳушдор эҷод кунед, агар API сервер 0 бошад. Вақте ки ҳодиса сар мезанад, ҳушдор барои фиристодани минбаъда ба мудири ҳушдор дода мешавад. Менеҷери ҳушдор дорои танзимоти масири хеле фасеҳ аст: як гурӯҳи огоҳиҳо метавонанд ба чати телеграммаи маъмурон, дигаре ба чати таҳиягарон ва сеюм ба чати кормандони инфрасохтор фиристода шаванд. Огоҳиҳо метавонанд ба Slack, Telegram, почтаи электронӣ ва дигар каналҳо фиристода шаванд.

Ва ниҳоят, ман ба шумо дар бораи хусусияти қотили Прометей нақл мекунам - Discovery. Ҳангоми кор бо Prometheus, ба шумо лозим нест, ки суроғаҳои мушаххаси объектҳоро барои назорат муайян кунед, танҳо навъи онҳоро муқаррар кардан кифоя аст. Яъне, ба шумо лозим нест, ки "ин ҷо суроғаи IP аст, ин ҷо порт - монитор" навиштан лозим нест, ба ҷои ин шумо бояд муайян кунед, ки бо кадом принсипҳо ин объектҳоро пайдо кунед (мақсадҳо - ҳадафҳо). Худи Прометей вобаста ба он, ки кадом объектҳо дар айни замон фаъоланд, объектҳои заруриро кашида, ба мониторинг илова мекунанд.

Ин равиш ба сохтори Kubernetes мувофиқат мекунад, ки дар он ҳама чиз низ шино мекунад: имрӯз 10 сервер вуҷуд дорад, фардо 3. Барои он ки ҳар дафъа суроғаи IP-и серверро муайян накунанд, онҳо як бор навиштанд, ки чӣ тавр онро пайдо кардан мумкин аст - ва Discovering ин корро мекунад. .

Забони Прометей номида мешавад PromQL. Бо истифода аз ин забон, шумо метавонед арзишҳои ченакҳои мушаххасро гиред ва сипас онҳоро табдил диҳед, дар асоси онҳо ҳисобҳои таҳлилӣ созед.

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

Prometheus дорои интерфейси веби хеле минималистии худ мебошад. Танҳо барои дебаг ё намоиш мувофиқ аст.

Мониторинги кластери Кубернетес: Шарҳ ва муқаддима ба Prometheus

Дар сатри Expression, шумо метавонед дархостро бо забони PromQL нависед.

Ҷадвали огоҳиҳо қоидаҳои огоҳкуниро дар бар мегирад ва онҳо се ҳолат доранд:

  1. ғайрифаъол - агар ҳушдор дар айни замон фаъол набошад, яъне ҳама чиз бо он хуб аст ва он кор намекунад;
  2. интизорӣ - ин аст, ки агар ҳушдор кор кунад, аммо фиристодан ҳанӯз нагузашта бошад. Таъхир барои ҷуброни мижа задани шабака муқаррар шудааст: агар хидмати нишондодашуда дар давоми як дақиқа боло рафта бошад, он гоҳ ҳушдор ҳанӯз садо надиҳад;
  3. тирандозӣ ҳолати сеюм аст, вақте ки ҳушдор фурӯзон мешавад ва паёмҳо мефиристад.

Дар менюи Статус шумо метавонед маълумотро дар бораи он ки Prometheus чист, пайдо кунед. Гузариш ба ҳадафҳо (ҳадафҳо) низ вуҷуд дорад, ки мо дар бораи он дар боло гуфтем.

Мониторинги кластери Кубернетес: Шарҳ ва муқаддима ба Prometheus

Барои шарҳи муфассали интерфейси Prometheus, нигаред дар лексияи Slurm оид ба мониторинги кластери Kubernetes.

Интегратсия бо Grafana

Дар веб-интерфейси Prometheus, шумо графикҳои зебо ва фаҳмоеро намеёбед, ки аз онҳо дар бораи ҳолати кластер хулоса баровардан мумкин аст. Барои сохтани онҳо, Prometheus бо Grafana муттаҳид карда шудааст. Мо чунин лавҳаҳоро мегирем.

Мониторинги кластери Кубернетес: Шарҳ ва муқаддима ба Prometheus

Танзими ҳамгироии Prometheus ва Grafana аслан душвор нест, шумо метавонед дастурҳоро дар ҳуҷҷатҳо пайдо кунед: ДАСТГИРИИ ГРАФАНА БАРОИ ПРОМЕТЕЙХуб, ман бо ин тамом мекунам.

Дар мақолаҳои зерин мо мавзӯи мониторингро идома медиҳем: мо дар бораи ҷамъоварӣ ва таҳлили гузоришҳо бо истифода аз Grafana Loki ва абзорҳои алтернативӣ сӯҳбат хоҳем кард.

Муаллиф: Марсел Ибраев, маъмури сертификатсияшудаи Kubernetes, муҳандиси амалкунанда дар ширкат Саутбридж, сухангӯ ва таҳиякунанда курс Slurm.

Манбаъ: will.com

Илова Эзоҳ