[Перевод] Комбинируем Prometheus, ChatGPT и Slack — получается Robusta
Что получится, если объединить 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». Узнать больше о программе и записаться можно на нашем сайте.