
Что получится, если объединить Prometheus, работающий на Kubernetes, умный движок, взаимодействующий с ChatGPT, и мессенджер типа Slack? Вы получите платформу с открытым исходным кодом для поиска и устранения ошибок в Kubernetes под названием Robusta.
В этом посте мы рассмотрим применение Robusta поверх стека мониторинга Prometheus и покажем, почему возникают алерты и как их можно устранить.
Как это работает?
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/
Добавить комментарий