Robusta, платформа для устранения неполадок K8 с открытым исходным кодом, введение
Что такое робуста
Robusta (https://home.robusta.dev/) — это платформа с открытым исходным кодом для устранения неполадок K8. Как и многие другие облачные приложения, оно устанавливается и управляется с помощью Helm3, находится на вершине стека мониторинга (Prometheus, Elasticsearch и т. д.) и сообщает вам, почему возникли предупреждения и как их исправить.
Робуста состоит из следующих пяти частей:
- Механизм автоматизации для K8s
- Встроенная автоматизация для обогащения и исправления распространенных предупреждений K8s
- Ручной инструмент устранения неполадок
- Пакет «все в одном» с Robusta, Prometheus Operator и стандартными оповещениями K8s.
- Веб-интерфейс и панель управления
Ниже показано, как выглядит приборная панель Robusta:
Почему робуста
Robusta — это одновременно механизм автоматизации для Kubernetes и мультикластерная платформа наблюдения. Робуста обычно используется вместе с Prometheus, но поддерживаются и другие инструменты.
Прослушивая все события в вашем кластере, Robusta может сказать вам, почему сработали оповещения, что произошло в то же время и что вы можете с этим сделать. Он может либо улучшить ваши существующие оповещения, либо использоваться для определения новых оповещений, запускаемых изменениями APIServer.
Почему что-то происходит с вашим кластером K8s, как устранить неполадки и выявить причину проблемы, администраторам K8s обычно непонятно, так как K8s такая сложная система. Интеграция с Robusta позволяет получать подсказки о сбоях модулей, корреляции событий, оповещениях об исправлении и модулях отладки.
Сбои стручков:
Корреляция событий:
Устранение предупреждений:
Модули отладки:
Робуста Архитектура
Архитектура Робуста это:
Как видно из приведенной выше диаграммы, основным компонентом Robusta является механизм автоматизации, который работает в кластере в виде двух развертываний K8s.
робуста-форвардер
Он подключается к APIServer и отслеживает изменения K8s. Направляет их робусте-раннеру.
робуста-бегун
Он будет выполнять определенные пьесы.
Как работает робуста
Используя CrashingPods
в качестве примера, поведение Робусты определяется следующими правилами:
triggers: - on_prometheus_alert: alert_name: KubePodCrashLooping actions: - logs_enricher: {} sinks: - slack
В приведенном выше примере всякий раз, когда срабатывает предупреждение KubePodCrashLooping
, Robusta будет извлекать журналы из правильного модуля и прикреплять их к предупреждению. Результат выглядит следующим образом:
Как установить робусту
Поскольку Robusta управляется Helm, мы можем использовать helm3
для ее установки.
Установить репо
$ helm repo add robusta https://robusta-charts.storage.googleapis.com && helm repo update "robusta" has been added to your repositories Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "kedacore" chart repository ...Successfully got an update from the "robusta" chart repository ...Successfully got an update from the "grafana" chart repository ...Successfully got an update from the "prometheus-community" chart repository ...Successfully got an update from the "stable" chart repository Update Complete. ⎈Happy Helming!⎈
Создать файл конфигурации
Сначала мы устанавливаем его cli через Python:
$ python3.10 -m venv robusta $ source robusta/bin/activate (robusta) $ pip install -U robusta-cli --no-cache Collecting robusta-cli Downloading robusta_cli-0.10.10-py3-none-any.whl (223 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 223.8/223.8 kB 30.0 MB/s eta 0:00:00 Collecting pymsteams<0.2.0,>=0.1.16 Downloading pymsteams-0.1.16.tar.gz (7.6 kB) Preparing metadata (setup.py) ... done ... Successfully installed PyJWT-2.4.0 appdirs-1.4.4 autopep8-2.0.1 black-21.5b2 cachetools-5.2.1 certifi-2022.12.7 cffi-1.15.1 charset-normalizer-3.0.1 ... ruamel.yaml.clib-0.2.7 six-1.16.0 slack-sdk-3.19.5 tenacity-8.1.0 toml-0.10.2 tomli-2.0.1 typer-0.4.2 typing-extensions-4.4.0 urllib3-1.26.14 watchgod-0.7 webexteamssdk-1.6.1 websocket-client-1.3.3
Затем мы генерируем файл конфигурации:
$ robusta gen-config Robusta reports its findings to external destinations (we call them "sinks"). We'll 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=xxxx You've just connected Robusta to the Slack of: devopsfans Which slack channel should I send notifications to? # k8s-chatgpt-bot Configure Robusta UI sink? This is HIGHLY recommended. [Y/n]: Y Enter your Gmail/Google address. This will be used to login: [email protected] Choose your account name (e.g your organization name): devopsfans Successfully registered. Robusta can use Prometheus as an alert source. If you haven't 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]: N 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 By the way, we'll send you some messages later to get feedback. (We don't store your API key, so we scheduled future messages using Slack's API)
Затем развертываем:
$ helm install robusta robusta/robusta -f ./generated_values.yaml \ --set clusterName=dev-cluster
После этого мы проверяем два модуля Robusta и работаем без ошибок в журналах:
$ kubectl get pods -A | grep robusta $ robusta logs
Теперь вы должны увидеть свой дашборд в https://platform.robusta.dev/.
Ссылка
Для получения более подробной информации об использовании Робусты, пожалуйста, посетите https://home.robusta.dev/