Кубернетес кластерін бақылау: шолу және Прометейге кіріспе

Kubernetes мониторингінің тұжырымдамасын қарастырыңыз, Prometheus құралымен танысыңыз және ескерту туралы сөйлесіңіз.

Мониторинг тақырыбы көлемді, оны бір мақалада бөлшектеуге болмайды. Бұл мәтіннің мақсаты – құралдарға, тұжырымдамаларға және тәсілдерге шолу жасау.

Мақаланың материалы - бұл сығу «Слурм» мектебінің ашық дәрісі. Толық курстан өткіңіз келсе - курсқа жазылыңыз Кубернетестегі инфрақұрылымды бақылау және тіркеу.

Кубернетес кластерін бақылау: шолу және Прометейге кіріспе

Kubernetes кластерінде не бақыланады

Кубернетес кластерін бақылау: шолу және Прометейге кіріспе

физикалық серверлер. Егер Kubernetes кластері оның серверлерінде орналастырылған болса, олардың денсаулығын бақылау керек. Zabbix бұл тапсырманы орындайды; егер сіз онымен жұмыс жасасаңыз, онда бас тартудың қажеті жоқ, қақтығыстар болмайды. Бұл Zabbix серверлеріміздің күйін бақылайды.

Кластер деңгейіндегі мониторингке көшейік.

Басқару жазықтығының құрамдас бөліктері: API, Scheduler және т.б. Кем дегенде, серверлердің немесе т.б. API интерфейсі 0-ден үлкен екеніне көз жеткізуіңіз керек. Etcd көптеген көрсеткіштерді қайтара алады: айналдыратын дискілер бойынша, оның etcd кластерінің денсаулығы бойынша және т.б.

Докер бұрыннан пайда болды және оның проблемаларын бәрі жақсы біледі: көптеген контейнерлер қатып қалуға және басқа да мәселелерге әкеледі. Сондықтан Docker-тің өзі жүйе ретінде, кем дегенде қол жетімділік үшін басқарылуы керек.

DNS Егер DNS кластерде өшіп қалса, одан кейін бүкіл Discovery қызметі өшіп қалады, подкасттардан подкасттарға қоңыраулар жұмысын тоқтатады. Менің тәжірибемде мұндай проблемалар болған жоқ, бірақ бұл DNS күйін бақылаудың қажеті жоқ дегенді білдірмейді. Сұрау кідірісін және кейбір басқа көрсеткіштерді CoreDNS арқылы бақылауға болады.

Кіру. Жобаға кіру нүктелері ретінде кірулердің (соның ішінде кіріс контроллері) болуын бақылау қажет.

Кластердің негізгі құрамдас бөліктері жойылды - енді абстракциялар деңгейіне көшейік.

Қолданбалар блоктарда жұмыс істейтін сияқты көрінеді, яғни оларды басқару керек, бірақ іс жүзінде олай емес. Қоспалар эфемерлі: бүгін олар бір серверде, ертең басқа серверде жұмыс істейді; бүгін олардың саны 10, ертең 2. Сондықтан бүршіктерді ешкім қадағаламайды. Микросервис архитектурасында жалпы қолданбаның қолжетімділігін бақылау маңыздырақ. Атап айтқанда, қызмет көрсетудің соңғы нүктелерінің қолжетімділігін тексеріңіз: бірдеңе жұмыс істей ме? Қолданба қол жетімді болса, оның артында не болады, қазір қанша көшірме бар - бұл екінші ретті сұрақтар. Жеке инстанцияларды бақылаудың қажеті жоқ.

Соңғы деңгейде қолданбаның жұмысын басқару керек, іскери көрсеткіштерді қабылдау керек: тапсырыстар саны, пайдаланушы әрекеті және т.б.

Прометей

Кластерді бақылаудың ең жақсы жүйесі Прометей. Сапасы мен пайдаланудың қарапайымдылығы жағынан Прометейге сәйкес келетін қандай да бір құралды білмеймін. Бұл икемді инфрақұрылым үшін тамаша, сондықтан олар «Кубернетес мониторингі» дегенде әдетте Прометейді білдіреді.

Prometheus-пен жұмыс істеуді бастаудың бірнеше нұсқасы бар: Helm көмегімен қарапайым Prometheus немесе Prometheus операторын орнатуға болады.

  1. Тұрақты Прометей. Онымен бәрі жақсы, бірақ сіз ConfigMap конфигурациялауыңыз керек - шын мәнінде, микросервис архитектурасына дейін біз бұрын жасағандай мәтінге негізделген конфигурация файлдарын жазыңыз.
  2. Prometheus Operator сәл кеңірек, ішкі логика тұрғысынан біршама күрделірек, бірақ онымен жұмыс істеу оңайырақ: бөлек нысандар бар, кластерге абстракциялар қосылады, сондықтан оларды басқару және конфигурациялау әлдеқайда ыңғайлы.

Өнімді түсіну үшін алдымен қарапайым Prometheus орнатуды ұсынамын. Конфигурация арқылы бәрін конфигурациялауға тура келеді, бірақ бұл пайдалы болады: сіз не нәрсеге жататынын және оның қалай конфигурацияланғанын анықтайсыз. Prometheus Operator бағдарламасында сіз бірден жоғарырақ абстракцияға көтерілесіз, бірақ қаласаңыз, тереңдікке де ене аласыз.

Prometheus Kubernetes-пен жақсы біріктірілген: ол API серверіне қол жеткізе алады және өзара әрекеттеседі.

Prometheus танымал, сондықтан көптеген қосымшалар мен бағдарламалау тілдері оны қолдайды. Қолдау қажет, өйткені Prometheus-тың өз метрика пішімі бар және оны тасымалдау үшін қолданбаның ішіндегі кітапхана немесе дайын экспорттаушы қажет. Ал мұндай экспорттаушылар аз емес. Мысалы, PostgreSQL экспорттаушысы бар: ол PostgreSQL-тен деректерді алып, Prometheus онымен жұмыс істей алатындай етіп Prometheus пішіміне түрлендіреді.

Прометей сәулеті

Кубернетес кластерін бақылау: шолу және Прометейге кіріспе

Prometheus сервері артқы жағы, Прометейдің миы. Көрсеткіштер осы жерде сақталады және өңделеді.

Көрсеткіштер уақыт қатарларының дерекқорында (TSDB) сақталады. TSDB жеке дерекқор емес, Prometheus ішіне енгізілген Go тіліндегі пакет. Бір сөзбен айтқанда, барлығы бір екілік жүйеде.

Деректерді TSDB ішінде ұзақ уақыт сақтамаңыз

Prometheus инфрақұрылымы метриканың ұзақ мерзімді сақталуы үшін жарамсыз. Әдепкі сақтау мерзімі - 15 күн. Сіз бұл шектен асып кете аласыз, бірақ есте сақтаңыз: TSDB-де неғұрлым көп деректерді сақтасаңыз және оны неғұрлым ұзағырақ орындасаңыз, соғұрлым ол көп ресурстарды тұтынады. Прометейде тарихи деректерді сақтау жаман тәжірибе болып саналады.

Егер сізде үлкен трафик болса, метрика саны секундына жүздеген мың болса, оларды сақтауды дискілік кеңістік немесе кезең бойынша шектеген дұрыс. Әдетте, «ыстық деректер» TSDB-де сақталады, метрика бірнеше сағат ішінде. Ұзақ сақтау үшін сыртқы жад осы үшін шынымен қолайлы дерекқорларда пайдаланылады, мысалы, InfluxDB, ClickHouse және т.б. Мен ClickHouse туралы жақсы пікірлерді көрдім.

Prometheus сервері үлгіде жұмыс істейді Тарт: ол біз берген соңғы нүктелерге арналған көрсеткіштерге барады. Олар: «API серверіне өтіңіз» деді және ол әр секунд сайын ол жерге барып, көрсеткіштерді қабылдайды.

Қырату кезеңдері арасында пайда болуы мүмкін қысқа қызмет мерзімі бар нысандар үшін (жұмыс немесе cron тапсырмасы) Pushgateway құрамдас бөлігі бар. Қысқа мерзімді нысандардың көрсеткіштері оған итеріледі: тапсырма көтерілді, әрекет орындалды, Pushgateway қызметіне метрика жіберілді және аяқталды. Біраз уақыттан кейін Прометей өз қарқынымен түсіп, Pushgateway-тен осы көрсеткіштерді алады.

Prometheus-те хабарландыруларды конфигурациялау үшін бөлек компонент бар - Дабыл менеджері. Және ескерту ережелері. Мысалы, сервер API 0 болса, ескерту жасау керек. Оқиға іске қосылғанда, ескерту одан әрі жіберу үшін ескерту реттеушісіне жіберіледі. Ескерту менеджерінде өте икемді бағыттау параметрлері бар: ескертулердің бір тобы әкімшілердің телеграмм чатына, екіншісі әзірлеушілердің чатына, үшінші бөлігі инфрақұрылым жұмыскерлерінің чатына жіберіледі. Хабарландыруларды Slack, Telegram, электрондық пошта және басқа арналарға жіберуге болады.

Соңында мен сізге Прометейдің өлтіру мүмкіндігі туралы айтып беремін - табу. Прометеймен жұмыс істегенде бақылау үшін объектілердің нақты адрестерін көрсетудің қажеті жоқ, олардың түрін орнату жеткілікті. Яғни, «міне 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 веб-интерфейсі

Прометейдің өзіндік, өте минималистік веб-интерфейсі бар. Тек жөндеу немесе көрсету үшін жарамды.

Кубернетес кластерін бақылау: шолу және Прометейге кіріспе

Өрнек жолында PromQL тілінде сұраныс жазуға болады.

Ескертулер қойындысында ескерту ережелері бар және олардың үш күйі бар:

  1. белсенді емес - егер ескерту осы уақытта белсенді болмаса, яғни онымен бәрі жақсы және ол жұмыс істемеді;
  2. күтуде - бұл ескерту жұмыс істеген болса, бірақ жіберу әлі өтпеген болса. Кешігу желінің жыпылықтауын өтеу үшін орнатылған: егер көрсетілген қызмет бір минут ішінде көтерілсе, онда дабыл әлі берілмеуі керек;
  3. ату – ескерту жанып, хабарламалар жіберілген кездегі үшінші күй.

Күй мәзірінде сіз Прометейдің не екендігі туралы ақпаратты таба аласыз. Сондай-ақ жоғарыда айтқан мақсаттарға (нысандарға) көшу бар.

Кубернетес кластерін бақылау: шолу және Прометейге кіріспе

Prometheus интерфейсін толығырақ шолу үшін қараңыз Слурмның Кубернетес кластерін бақылау туралы лекциясында.

Графанамен интеграция

Prometheus веб-интерфейсінде сіз кластердің күйі туралы қорытынды жасауға болатын әдемі және түсінікті графиктерді таба алмайсыз. Оларды құру үшін Прометей Графанамен біріктірілген. Біз осындай бақылау тақталарын аламыз.

Кубернетес кластерін бақылау: шолу және Прометейге кіріспе

Prometheus және Grafana интеграциясын орнату қиын емес, нұсқауларды құжаттамадан таба аласыз: ПРОМЕТЕЙГЕ ГРАФАНА ҚОЛДАУЖарайды, осымен аяқтаймын.

Келесі мақалаларда біз мониторинг тақырыбын жалғастырамыз: біз Grafana Loki және балама құралдар арқылы журналдарды жинау және талдау туралы сөйлесеміз.

Авторы: Марсель Ибраев, Kubernetes сертификатталған әкімшісі, компанияда тәжірибелік инженер Саутбридж, спикер және курс әзірлеушісі Slurm.

Ақпарат көзі: www.habr.com

пікір қалдыру