Комбинируем Prometheus, ChatGPT и Slack — получается Robusta

от автора

Что получится, если объединить Prometheus, работающий на Kubernetes, умный движок, взаимодействующий с ChatGPT, и мессенджер типа Slack? Вы получите платформу с открытым исходным кодом для поиска и устранения ошибок в Kubernetes под названием Robusta.

В этом посте мы рассмотрим применение Robusta поверх стека мониторинга Prometheus и покажем, почему возникают алерты и как их можно устранить.

Источник: Robusta

Источник: Robusta

Как это работает?

Robusta фокусируется на всем, что происходит после развертывания приложения.

Этот акцент можно определить с помощью трех компонентов.

  • Триггеры: определяют время выполнения (по алертам, логам, событиям, изменениям и так далее).

  • Действия: определяет, что делать (в Robusta есть более 50 встроенных алгоритмов). Мы используем действие для отправки запроса в ChatGPT через API-ключ.

  • Мессенджер: определяет, куда отправлять результат (в нашем случае в Slack).

Вы можете задать его в разделе customPlaybooks следующим образом:

customPlaybooks: # Add the 'Ask ChatGPT' button to all Prometheus alerts - triggers:   - on_prometheus_alert:       alert_name: KubePodCrashLooping   actions:     - chat_gpt_enricher: {}   sinks:     - slack

Анимация от Robusta показывает, что происходит за кулисами:

Как настроить Robusta на вашем кластере Kubernetes?

Во-первых, необходимо установить robusta-cli на python. Он позволяет, например, генерировать значения для helm-чарта.

1. Установите Robusta cli на python:

python3 -m pip install -U robusta-cli --no-cache

2. Создайте файл с параметрами для Helm:

Вы должны будете выполнить все перечисленные действия:

robusta gen-config
Robusta reports its findings to external destinations (we call them "sinks"). Well define some of them now.  Configure Slack integration? This is HIGHLY recommended. [Y/n]: Y If your browser does not automatically launch, open the below url: https://api.robusta.dev/integrations/slack?id=***** Youve just connected Robusta to the Slack of: poc-chatgpt-kubernetes Which slack channel should I send notifications to? # pocs Configure MsTeams integration? [y/N]: n Configure Robusta UI sink? This is HIGHLY recommended. [Y/n]: n   Robusta can use Prometheus as an alert source. If you havent installed it yet, Robusta can install a pre-configured Prometheus. Would you like to do so? [y/N]: y Please read and approve our End User License Agreement: https://api.robusta.dev/eula.html Do you accept our End User License Agreement? [y/N]: y Last question! Would you like to help us improve Robusta by sending exception reports? [y/N]: y Saved configuration to ./generated_values.yaml - save this file for future use! Finish installing with Helm (see the Robusta docs). Then login to Robusta UI at https://platform.robusta.dev

2.1 Вы получите YAML-файл, аналогичный этому:

clusterName: "aks-development" globalConfig:   signing_key: ea657a0b******   account_id: 7935371f****** sinksConfig: - slack_sink:     name: main_slack_sink     slack_channel: pocs     api_key: xoxb****** enablePrometheusStack: true enablePlatformPlaybooks: true runner:   sendAdditionalTelemetry: true rsa:   private: ******   public: ******

Затем вы можете изменить файл generated_values.yaml для создания нескольких триггеров. Для примера я буду использовать простой и понятный триггер.

3. Установите Robusta с помощью Helm:

kubectl create ns robusta  helm repo add robusta https://robusta-charts.storage.googleapis.com && helm repo update helm install robusta robusta/robusta -f ./generated_values.yaml

4. Запустите демонстрацию, чтобы проверить, работает ли триггер (Prometheus) + действие (Logs-Enricher) + sink (Slack):

kubectl apply -f https://raw.githubusercontent.com/robusta-dev/kubernetes-demos/main/pending_pods/pending_pod.yaml  robusta playbooks trigger prometheus_alert alert_name=KubePodCrashLooping namespace=robusta pod_name=example-pod

Вы получите примерно такой результат:

5. Настройте триггер (алерт Prometheus) + действие (ChatGPT) + Sink (Slack).

Для этой части я буду использовать репозиторий kubernetes-chatgpt-bot с robusta-dev и изменю generated_values.yaml следующим образом:

clusterName: "aks-development" globalConfig:   chat_gpt_token: sk-dw******   signing_key: ea657a******   account_id: 7935371f****** sinksConfig: - slack_sink:     name: main_slack_sink     slack_channel: pocs     api_key: xoxb****** - robusta_sink:     name: robusta_ui_sink     token: eyJhY2NvdW****** enablePrometheusStack: true # This part is added to the default generated_values.yaml enablePlatformPlaybooks: true runner:   sendAdditionalTelemetry: true rsa:   private: ******   public: ******  # This part is added to the default generated_values.yaml playbookRepos:   chatgpt_robusta_actions:     url: "https://github.com/robusta-dev/kubernetes-chatgpt-bot.git"  # This part is added to the default generated_values.yaml customPlaybooks: # Add the 'Ask ChatGPT' button to all Prometheus alerts - triggers:   - on_prometheus_alert: {}   actions:   - chat_gpt_enricher: {}

Вам не нужно настраивать sink, потому что параметры уже заданы в sinksConfig, и мы будем реагировать на все оповещения Prometheus.

6. Обновите Helm chart, чтобы запустить customPlaybooks:

helm upgrade robusta robusta/robusta --values=generated_values.yaml

7. Запустите демонстрацию, чтобы проверить, работает ли триггер (Prometheus) + действие (ChatGPT) + Slack:

kubectl apply -f https://raw.githubusercontent.com/robusta-dev/kubernetes-demos/main/pending_pods/pending_pod.yaml  robusta playbooks trigger prometheus_alert alert_name=KubePodCrashLooping namespace=robusta pod_name=example-pod

Теперь вы должны увидеть в Slack кнопку «Ask ChatGPT».

Задайте вопрос и получите ответ:

Robusta можно описать тремя пунктами:

  • Механизм автоматизации для Kubernetes

  • Встроенная автоматизация для обогащения и устранения общих предупреждений

  • Инструмент траблшутинга для всего остального.

Это позволяет использовать в один момент времени Robusta, оператор Prometheus, стандартные оповещения Kubernetes и веб-интерфейс, чтобы видеть все алерты, изменения и события в вашем кластере.

Вы также можете написать собственные механизмы автоматизации на Python, например, дополнение ChatGPT и использовать его вместе с движком Robusta в  среде Kubernetes.

От редакции

Разобраться в Kubernetes вы можете в Слёрме. Мы подготовили курсы для специалистов с разным уровнем владения K8s — «Kubernetes база» для системных администраторов и «Kubernetes для разработчиков» — тех, кто хочет разрабатывать приложения под Kubernetes.

А еще у нас есть выгодный комплект: «Kubernetes база» + «Мониторинг и логи в Kubernetes». Узнать больше о программе и записаться можно на нашем сайте.


ссылка на оригинал статьи https://habr.com/ru/articles/731560/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *