Kubernetes 故障排查工具- Robusta 解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
可观测监控 Prometheus 版,每月50GB免费额度
简介: Hello folks,我是 Luga,今天我们来分享一款用于 Kubernetes Cluster 故障排查的开源工具 - Robusta (罗布斯塔)。作为一个用于多集群 Kubernetes 监控、故障排除和自动化的开源平台,就像 Docker 用于部署应用程序的基础设施即代码一样,Robusta 用于维护 Kubernetes Cluster 应用程序和处理其警报的基础设施即代码。

    Hello folks,我是 Luga,今天我们来分享一款用于 Kubernetes Cluster 故障排查的开源工具 - Robusta (罗布斯塔)。作为一个用于多集群 Kubernetes 监控、故障排除和自动化的开源平台,就像 Docker 用于部署应用程序的基础设施即代码一样,Robusta 用于维护 Kubernetes Cluster 应用程序和处理其警报的基础设施即代码。

01

Robusta 概述

    作为一款用于 Kubernetes Cluster 故障排查的开源平台,其本质是为了弄清楚我们当前所构建的 Kubernetes Cluster 的健康状况,并针对所出现的告警行为进行合理解释以及给予我们相关修复建议。     

    与大多数其他云应用程序一样,Robusta 能够基于 Helm 安装和管理,其主要位于监控堆栈(Prometheus、Elasticsearch 等)之上。

    从技术生态角度来看,Robusta 既是一款 Kubernetes 的自动化引擎,也是一个多集群可观测性开源平台。Robusta 通常与 Prometheus 一起协作使用,当然,也支持其他工具集成。

    基于其相关特性,通过监听 Kubernetes Cluster 中的相关事件,Robusta 可以告诉我们为什么发出警报、同时发生了什么以及我们能够所采取的措施。除此之外,Robusta 也能够改进我们现有的告警体系,或用于定义由 APIServer 更改触发的新告警流程,以革新现有落后的观测生态。

02

Robusta 功能特性

Kubernetes 自动化引擎

    即当我们所构建的 Kubernetes Cluster 中发生任何意外事件时所采取的自动操作。自动修复问题或收集有关问题的证据并在后续的时间进行调查、分析。

    1、自动修复

    当然,除了个别比较棘手的问题外,大多数常见的问题基本上都有已知的解决方法,基于 Robusta ,我们可以轻松地自动修复已知问题。例如,在 YAML 中配置修复操作或在 Python 中编写我们自定义的操作以实现完全可定制性。

    2、告警丰富

    Robusta 获取所配置现有的告警规则,然后并自动提取有关受影响的 Kubernetes 资源的详细信息。

    例如,当某一 Kubernetes Cluster Node 的磁盘空间不足时,Robusta 会显示历史图表。当 Pod 崩溃时,Robusta 便会获取相关日志进行后续的调查、分析。

Cluster 观测性

    此平台能够基于 Kubernetes Cluster 的一体式、全方位进行观测,涉及告警仪表盘、不健康的资源、日志以及相关图标等。

    1、资源展示

    Robusta 能够映射我们所构建的的 Kubernetes Cluster 拓扑并构建正在运行的应用程序列表以及识别每个人的健康问题并显示细节。除此之外,基于当前的运行状况,能够实时查看正在运行的 Pod、CPU 使用率、内存使用率以及有关工作负载的其他关键信息。

    Robusta 记录了  Kubernetes Cluster 中发生的所有 Kubernetes 变更,能够准确查看 YAML 更改的内容以及它是否导致了问题等。

    2、Kubernetes 原生追踪

    通常情况下,Robusta 将 Kubernetes UI 与警报和可观察性平台相结合,告警会自动映射到正确的 Kubernetes 资源,然后按命名空间或集群进行过滤告警信息。除此之外,要真正了解问题,我们往往需要有关各个 Pod 的详细日志和事件信息。然而,基于 Robusta,使得我们无需在生产环境中运行 Kubectl 命令或在窗口之间跳转,而直接在 Robusta 中搞定所有的一切,比如,按需获取日志、显示图形并跟踪 Pod 的状态等。

路由通知

    基于相关规则,基于 Robusta 统一通知服务,我们能够可以获取有关警报、失败的作业、应用程序更新以及我们所选择的任何其他内容的通知。

    1、事件通知

    Robusta 能够更轻松地获得有关失败作业、CrashLoopBackOffs 或重要 Kubernetes 对象的意外更改的通知。

    Robusta 支持向 Slack、MS Teams、Discord、PagerDuty、OpsGenie、WebEx 等发送消息。除此之外,Robusta 也能够从各种传入目的地接收数据,包括 Prometheus 和 Elasticsearch。

    2、告警通知

    当我们将 Prometheus 警报直接发送到 Slack 时,这些警报通常缺乏上下文。而基于 Robusta 路由告警,我们可以将告警连接到相关日志和图表予以展现。

内置告警

    基于 Prometheus 生态技术体系,Robusta 采用了最流行的方式来监控 Kubernetes  Cluster 并使其变得更好。同时,告警也增加了可观察性。以下为常用的场景,具体如下:

    1、Pod 崩溃

    2、系统磁盘空间不足

    3、OOMKill

    4、请求超时

    5、其他事件场景

示例:内存溢出场景

    当然,除了上述核心的特性外,Robusta 也包含 Timeline (时间轴)功能,基于时间轴,我们可以查看所有 Prometheus 警报的历史记录,以及与 Kubernetes  Cluster 中的配置更改相关的记录等。

03

Robusta 工作原理

    上面我们简单介绍了 Robusta 的功能特性,接下来,我们来看一下其实现原理。

    基于 Robusta 的相关特性,其自动化实现(采用 YAML 配置,强调预构建的自动化)主要包含如下三个部分:

    1、Trigger

    即“何时运行?”,通常主要针对告警、日志以及事件更新等。Trigger 触发器是启动自动化的条件。例如,失败的 Kubernetes 作业等。

    2、Action - 动作

    即“做什么?”,Action 动作是我们在自动化运行时执行的一系列相关操作等。例如,获取日志或收集 Java 堆转储。

    3、Sink - 接收器

    即“最终归宿?”Sink 接收器是发送任何输出的地方。例如,Slack 渠道等。

    如下为 Robusta 具体工作原理结构:

75a15f68ec72ec9d20f15b50333e8280.jpg

    例如,针对 Pod 崩溃时的(即 “RobustaCrashingPods” )的行为规则定义如下所示:


triggers:
  - on_prometheus_alert:
      alert_name: KubePodCrashLooping
actions:
  - logs_enricher: {}
sinks:
  - kafka

    假设,基于某种特定的原因,当我们所构建的 Kubernetes  Cluster 中的某一个Pod 发生崩溃时,此时,依据所定义的告警规则进行告警触发时,Robusta 都会从正确的 Pod 中获取日志并将它们附加到告警中,并将会自动化把日志发送到 Kafka 中。

04

Robusta 参考架构

    基于上述参考架构,我们可以看到,整个 Robusta 架构的核心围绕“自动化引擎”进行开展,具体涉及如下组件:

    1、Robusta-Forwarder


    此组件主要连接到 APIServer 并监控 K8s Cluster 的变化,并将它们转发给 Robusta-Runner 进行处理。

    2、Robusta-Runner

    此组件主要执行自定义的 Playbooks,依据相关的业务规则。

    3、Bundled Prometheus Stack

    此组件为可选项,Robusta 包括一个可选的嵌入式 Prometheus 堆栈,根据最佳实践预先配置了 Kubernetes 告警。如果我们在实际的场景中已经在使用了 Kube-Prometheus-Stack,那么,则可以将其指向 Robusta。

    4、Web UI

    此组件为可选项,我们可以依据实际的情况,进行 Web UI 配置,基于此,能够为我们提供一个单一的管理面板来观测跨多个 K8s Cluster 的所有警报和 Pod 状态追踪。

    5、CLI

    此组件为可选项,Robusta Cli 通常具备两个主要用途,具体如下所示:

   (1)基于自动生成的 Helm 值使的 Robusta 安装变得更容易,便捷,有利于维护,节省资源成本;

   (2)可以手动触发 Robusta 故障排除工作流程(例如,我们可以从任何 Java Pod 应用来获取相关堆转储信息,以供排障、分析之用)。

05

Robusta 安装部署

    其实,从本质上来讲,Robusta 的部署安装与其他应用程序一样, 安装较为简单,官方给出了多种部署方式,这里,我们基于 Helm 进行安装,具体步骤如下所示。

    1、安装 Robusta Cli 插件


[leonli@Leon robusta ] % python3 -m pip install -U robusta-cli --no-cache
Defaulting to user installation because normal site-packages is not writeable
Collecting robusta-cli
  Downloading robusta_cli-0.10.11-py3-none-any.whl (230 kB)
     |████████████████████████████████| 230 kB 4.6 kB/s 
Collecting hikaru<0.6.0,>=0.5.1-beta.0
  Downloading hikaru-0.5.1b0-py3-none-any.whl (1.2 MB)
     |████████████████████████████████| 1.2 MB 25 kB/s 
Collecting colorlog<6.0.0,>=5.0.1
  Downloading colorlog-5.0.1-py2.py3-none-any.whl (10 kB)
Collecting toml<0.11.0,>=0.10.2
  Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting opsgenie-sdk<3.0.0,>=2.1.5
  Downloading opsgenie_sdk-2.1.5-py3-none-any.whl (247 kB)
     |████████████████████████████████| 247 kB 19 kB/s 
Collecting prometheus-client<0.13.0,>=0.12.0
  Downloading prometheus_client-0.12.0-py2.py3-none-any.whl (57 kB)
  ...
  Collecting robusta-cli
  Downloading robusta_cli-0.8.31-py3-none-any.whl (143 kB)
     |████████████████████████████████| 143 kB 25 kB/s 
  Downloading robusta_cli-0.8.30-py3-none-any.whl (143 kB)
  ...

    2、生成 Robusta 配置文件


[leonli@Leon robusta ] % 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: devopscluster
...

    3、安装 Robusta


[leonli@Leon robusta ] % helm install robusta robusta/robusta -f ./generated_values.yaml \ 
--set clusterName=devops-cluster

    4、查看 Robusta 资源


[leonli@Leon robusta ] % kubectl get pods -A | grep robusta

    至此,Robusta 组件安装完成,我们可以通过其 GUI 查看所构建的相关资源信息。


    综上所述,Robusta 作为一个自动化引擎,能够侦听不同的数据源,例如 Kubernetes Cluster 中的变化、Prometheus 警报等。基于这些数据源,Robusta 可以借助自动化方式来帮助解决集群中的相关问题。

    同时,Robusta 还监控 API Server 并发送警报以涵盖我们所构建的 Kubernetes Cluste 可能遇到的任何类型的问题。  

    此外,Robusta 能够在 Kubernetes Cluste 为我们提供主动运行程序的操作,帮助自动执行及手动修复这些问题,从而为我们构建一个系统以自动化方式补救所遇到的相关问题,以使得我们能够提前知晓问题的风险以及针对所发生的问题进行有的放矢地处理。

    Ref:

    有关更多的 Robusta 信息,大家可以访问 https://home.robusta.dev/

    Adiós !

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
3天前
|
机器学习/深度学习 人工智能 JSON
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
Resume Matcher 是一款开源AI简历优化工具,通过解析简历和职位描述,提取关键词并计算文本相似性,帮助求职者优化简历内容,提升通过自动化筛选系统(ATS)的概率,增加面试机会。
52 18
Resume Matcher:增加面试机会!开源AI简历优化工具,一键解析简历和职位描述并优化
|
3天前
|
JSON 监控 物联网
WebSocket 调试全攻略:核心解析、工具选择与对比!
WebSocket 是一种全双工、实时交互的网络通信协议,适用于即时通信、实时数据流、多人协作、IoT 等场景。调试 WebSocket 时,工具应具备握手管理、实时消息收发、自定义 Header、消息大小告警、分组管理、多连接支持和断线重现等功能。主流调试工具如 Postman、ApiPost 和 ApiFox 各有优劣:Postman 界面友好适合基础调试;ApiPost 支持高级功能如消息分组和自动重连;ApiFox 则强化了多连接支持。选择工具时需根据具体需求和团队熟悉度决定。
|
13天前
|
数据采集 存储 调度
BeautifulSoup VS Scrapy:如何选择适合的HTML解析工具?
在Python网页抓取领域,BeautifulSoup和Scrapy是两款备受推崇的工具。BeautifulSoup易于上手、灵活性高,适合初学者和简单任务;Scrapy则是一个高效的爬虫框架,内置请求调度、数据存储等功能,适合大规模数据抓取和复杂逻辑处理。两者结合使用可以发挥各自优势,例如用Scrapy进行请求调度,用BeautifulSoup解析HTML。示例代码展示了如何在Scrapy中设置代理IP、User-Agent和Cookies,并使用BeautifulSoup解析响应内容。选择工具应根据项目需求,简单任务选BeautifulSoup,复杂任务选Scrapy。
BeautifulSoup VS Scrapy:如何选择适合的HTML解析工具?
|
5天前
|
数据可视化 测试技术 API
前后端分离开发:如何高效调试API?有工具 vs 无工具全解析
在前后端分离的开发模式中,API 调试的效率直接影响项目的质量和交付速度。通过本文的对比分析,我们可以看到无工具调试模式虽具备灵活性和代码复用能力,但在操作便利性和团队协作上稍显不足。而传统的外部调试工具带来了可视化、高效协作与扩展性,却可能存在工具切换带来的开发链路断层问题。Apipost-Hepler 融合了两者的优势,让开发者无需离开熟悉的 IDEA 环境,就能享受可视化调试工具的强大功能。
34 5
|
6天前
|
JSON 监控 物联网
#WebSocket 调试全攻略:Postman、Apipost和Apifox核心解析、工具选择与对比!
WebSocket 是一种现代化的全双工通信协议,允许客户端和服务端通过持久连接实时双向传输数据。它适用于即时通讯、实时通知、金融行情、在线协作、物联网等场景。调试 WebSocket 时,工具应具备握手管理、实时消息收发、自定义 Header、消息大小监控、分组管理、多连接支持等功能。
31 1
|
2月前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
53 11
|
3月前
|
数据可视化 项目管理
个人和团队都好用的年度复盘工具:看板与KPT方法解析
本文带你了解高效方法KPT复盘法(Keep、Problem、Try),结合看板工具,帮助你理清头绪,快速完成年度复盘。
188 7
个人和团队都好用的年度复盘工具:看板与KPT方法解析
|
2月前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
300 11
|
2月前
|
监控 数据可视化 数据挖掘
直播电商复盘全解析:如何通过工具提升团队效率
直播电商作为新兴商业模式,正改变传统零售格局。其成功不仅依赖主播表现和产品吸引力,更需团队高效协作与分工优化。复盘是提升执行力的关键环节,通过总结经验、发现问题、优化流程,结合在线工具如板栗看板,可提升复盘效率。明确团队角色、建立沟通机制、制定优化方案,确保数据驱动决策,从而在竞争中保持领先。

热门文章

最新文章

推荐镜像

更多