kubewatch

kubewatch

实时监控Kubernetes集群事件的开源通知工具

kubewatch是一个开源的Kubernetes监控工具,可实时追踪集群资源变化并发送通知。它支持Slack、Microsoft Teams等多种通知渠道,允许用户自定义监控的资源类型。kubewatch提供简单的配置和部署方法,帮助开发和运维人员及时掌握集群状态,提升Kubernetes集群的可观察性。

KubewatchKubernetes监控通知资源变更Github开源项目
<div align="center">

这是官方的 Kubewatch 项目,最初由 Bitnami 开发,现在由 Robusta.dev 维护。

欢迎在 Slack 上提出问题、提交 PR 或与我们交流!

kubewatch 是一个 Kubernetes 观察器,可以将通知发布到可用的协作中心/通知渠道。在您的 k8s 集群中运行它,您将通过 webhook 获得事件通知。

查看有关 KubeWatch 2.0 的博客文章,了解更多关于 KubeWatch 的使用方法。

<img src="https://yellow-cdn.veclightyear.com/835a84d5/66a501a1-ae14-4a83-9bc6-39fa3ceabde7.jpeg">

GoDoc License slack robusta

</div>

最新镜像

robustadev/kubewatch:v2.6

使用方法

$ kubewatch -h

Kubewatch:Kubernetes 的观察器

kubewatch 是一个 Kubernetes 观察器,可以向 Slack/hipchat/mattermost/flock 频道发布通知。
它会监视集群的资源变化,并通过 webhook 发送通知。

支持的 webhook:
 - slack
 - slackwebhook
 - msteams
 - hipchat
 - mattermost
 - flock
 - webhook
 - cloudevent
 - smtp

用法:
  kubewatch [标志]
  kubewatch [命令]

可用命令:
  config      修改 kubewatch 配置
  resource    管理要监视的资源
  version     打印版本

标志:
  -h, --help   获取帮助

使用 "kubewatch [命令] --help" 获取有关命令的更多信息。

安装

集群安装

使用 helm:

当您在集群中安装了 helm 后,使用以下设置:

helm repo add robusta https://robusta-charts.storage.googleapis.com && helm repo update helm install kubewatch robusta/kubewatch --set='rbac.create=true,slack.channel=#YOUR_CHANNEL,slack.token=xoxb-YOUR_TOKEN,resourcesToWatch.pod=true,resourcesToWatch.daemonset=true'

您也可以提供一个值文件:

rbac: create: true resourcesToWatch: deployment: false replicationcontroller: false replicaset: false daemonset: false services: true pod: true job: false node: false clusterrole: true clusterrolebinding: true serviceaccount: true persistentvolume: false namespace: false secret: false configmap: false ingress: false coreevent: false event: true slack: channel: '#YOUR_CHANNEL' token: 'xoxb-YOUR_TOKEN'

然后使用:

$ helm upgrade --install kubewatch robusta/kubewatch --values=values-file.yml

使用 kubectl:

为了在 Kubernetes 集群中快速运行 kubewatch,最简单的方法是创建一个 ConfigMap 来保存 kubewatch 配置。

kubewatch-configmap.yaml 中提供了一个示例,请记得更新您自己的 slack 频道和令牌参数。或者,您可以使用 secrets。

创建 k8s configmap:

$ kubectl create -f kubewatch-configmap.yaml

直接创建 Pod,或创建您自己的部署:

$ kubectl create -f kubewatch.yaml

将创建一个 kubewatch 容器,同时创建一个 kubectl 边车容器以访问 API 服务器。

一旦 Pod 运行,您将开始在配置的 Slack 频道中看到 Kubernetes 事件。以下是一个截图:

slack

要修改您获得的通知,请更新 kubewatch ConfigMap 并打开或关闭(true/false)资源:

resource:
  deployment: false
  replicationcontroller: false
  replicaset: false
  daemonset: false
  services: true
  pod: true
  job: false
  node: false
  clusterrole: false
  clusterrolebinding: false
  serviceaccount: false
  persistentvolume: false
  namespace: false
  secret: false
  configmap: false
  ingress: false
  coreevent: false
  event: true

使用 RBAC

运行 1.6 或更高版本的 Kubernetes Engine 集群引入了基于角色的访问控制(RBAC)。我们可以为其创建 ServiceAccount 以使其与 RBAC 一起工作。

$ kubectl create -f kubewatch-service-account.yaml

如果您没有创建权限,您需要先成为管理员。例如,在 GKE 中,您可以运行:

$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=REPLACE_EMAIL_HERE

编辑 kubewatch.yaml,并在 spec 下创建一个新字段 serviceAccountName: kubewatch,您可以通过运行以下命令来实现:

$ sed -i '/spec:/a\ \ serviceAccountName: kubewatch' kubewatch.yaml

然后像往常一样创建 pod

$ kubectl create -f kubewatch.yaml

本地安装

使用 go 包安装器:

# 下载并安装 kubewatch $ go get -u github.com/robusta-dev/kubewatch

配置通知渠道

$ kubewatch config add slack --channel <slack频道> --token <slack令牌>

添加需要监视的资源

$ kubewatch resource add --po --svc INFO[0000] 已配置资源 svc INFO[0000] 已配置资源 po

启动kubewatch服务器

$ kubewatch INFO[0000] 正在启动kubewatch控制器 pkg=kubewatch-service INFO[0000] 正在启动kubewatch控制器 pkg=kubewatch-pod INFO[0000] 正在处理添加到服务: default/kubernetes pkg=kubewatch-service INFO[0000] 正在处理添加到服务: kube-system/tiller-deploy pkg=kubewatch-service INFO[0000] 正在处理添加到Pod: kube-system/tiller-deploy-69ffbf64bc-h8zxm pkg=kubewatch-pod INFO[0000] Kubewatch控制器已同步并就绪 pkg=kubewatch-service INFO[0000] Kubewatch控制器已同步并就绪 pkg=kubewatch-pod

#### 使用Docker:

要交互式运行Kubewatch容器,请将配置文件放在`$HOME/.kubewatch.yaml`位置,并使用以下命令。

docker run --rm -it --network host -v $HOME/.kubewatch.yaml:/root/.kubewatch.yaml -v $HOME/.kube/config:/opt/bitnami/kubewatch/.kube/config --name <容器名称> robustadev/kubewatch


示例:

$ docker run --rm -it --network host -v $HOME/.kubewatch.yaml:/root/.kubewatch.yaml -v $HOME/.kube/config:/opt/bitnami/kubewatch/.kube/config --name kubewatch-app robustadev/kubewatch

==> 正在写入配置文件... INFO[0000] 正在启动kubewatch控制器 pkg=kubewatch-service INFO[0000] 正在启动kubewatch控制器 pkg=kubewatch-pod INFO[0000] 正在启动kubewatch控制器 pkg=kubewatch-deployment INFO[0000] 正在启动kubewatch控制器 pkg=kubewatch-namespace INFO[0000] 正在处理添加到命名空间: kube-node-lease pkg=kubewatch-namespace INFO[0000] 正在处理添加到命名空间: kube-public pkg=kubewatch-namespace INFO[0000] 正在处理添加到命名空间: kube-system pkg=kubewatch-namespace INFO[0000] 正在处理添加到命名空间: default pkg=kubewatch-namespace ....


要将Kubewatch容器作为守护进程运行,请使用

$ docker run --rm -d --network host -v $HOME/.kubewatch.yaml:/root/.kubewatch.yaml -v $HOME/.kube/config:/opt/bitnami/kubewatch/.kube/config --name kubewatch-app robustadev/kubewatch


# 配置

Kubewatch支持`config`命令进行配置。配置文件将保存在`$HOME/.kubewatch.yaml`

$ kubewatch config -h

config命令允许管理员为运行kubewatch设置自己的配置

用法: kubewatch config [flags] kubewatch config [command]

可用命令: add 向.kubewatch.yaml添加webhook配置 test 测试.kubewatch.yaml中存在的处理程序配置 view 查看.kubewatch.yaml

标志: -h, --help 查看帮助信息

使用 "kubewatch config [command] --help" 获取有关命令的更多信息。

### 示例:

### slack:

- 创建一个[slack机器人](https://my.slack.com/services/new/bot)

- 编辑机器人以自定义其名称、图标并检索API令牌(以`xoxb-`开头)。

- 通过在Slack消息区域输入以下内容将机器人邀请到您的频道:/invite @您的机器人名称

- 使用以下步骤将API令牌添加到kubewatch配置

  ```console
  $ kubewatch config add slack --channel <slack频道> --token <slack令牌>

您可以选择通过环境变量设置SLACK令牌和频道:

$ export KW_SLACK_TOKEN='XXXXXXXXXXXXXXXX' $ export KW_SLACK_CHANNEL='#频道名称'

slackwebhookurl:

  • 创建一个slack应用

  • 启用传入Webhooks。(在"设置"页面上。)

  • 创建一个传入webhook URL(在"设置"页面上添加新的Webhook到工作区。)

  • 选择应用程序将发布到的频道,然后点击以授权您的应用程序。您将获得webhook URL。 Slack Webhook URL将类似于: https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

  • 使用以下步骤将slack webhook url添加到kubewatch配置

    $ kubewatch config add slackwebhookurl --username <slack用户名> --emoji <slack表情> --channel <slack频道> --slackwebhookurl <slack_webhook_url>

    或者,您可以选择通过环境变量设置SLACK频道、用户名、表情和webhook URL:

    $ export KW_SLACK_CHANNEL=slack频道 $ export KW_SLACK_USERNAME=slack用户名 $ export KW_SLACK_EMOJI=slack表情 $ export KW_SLACK_WEBHOOK_URL=slack_webhook_url
  • 在bash脚本中应用的示例:

$ cat kubewatch-configmap-slackwebhook.yaml | sed "s|<slackchannel>|"\"$SlackChannel"\"|g;s|<slackusername>|"\"$SlackUsesrName"\"|g;s|<slackemoji>|"\"$SlackEmoji"\"|g;s|<SlackWebhookUrl>|"\"$WebhookUrl"\"|g" | kubectl create -f -
  • kubewatch-configmap-slackwebhook.yaml YAML文件示例:
apiVersion: v1 kind: ConfigMap metadata: name: kubewatch data: .kubewatch.yaml: | namespace: "" handler: slackwebhook: enabled: true channel: <slackchannel> username: <slackusername> emoji: <slackemoji> slackwebhookurl: <SlackWebhookUrl> resource: clusterrole: false configmap: false daemonset: false deployment: true ingress: false job: false namespace: false node: false persistentvolume: false pod: true replicaset: false replicationcontroller: false secret: false serviceaccount: false services: true event: true coreevent: false ``` ### flock: - 创建一个[Flock 机器人](https://docs.flock.com/display/flockos/Bots)。 - 使用以下命令将 Flock webhook URL 添加到配置中。 ```console $ kubewatch config add flock --url <flock_webhook_url>

你还可以选择设置 FLOCK URL

$ export KW_FLOCK_URL='https://api.flock.com/hooks/sendMessage/XXXXXXXX'

测试配置

使用以下命令通过发送测试消息来测试处理程序配置。

$ kubewatch config test -h

通过发送测试消息测试 .kubewatch.yaml 中的处理程序配置

用法:
  kubewatch config test [flags]

标志:
  -h, --help   查看帮助

示例:

$ kubewatch config test

测试 .kubewatch.yaml 中的处理程序配置
2019/06/03 12:29:23 消息已成功发送到频道 ABCD,时间戳为 1559545162.000100

查看配置

使用以下命令查看整个配置文件 $HOME/.kubewatch.yaml

$ kubewatch config view
.kubewatch.yaml 的内容

handler:
  slack:
    token: xoxb-xxxxx-yyyy-zzz
    channel: kube-watch
  hipchat:
    token: ""
    room: ""
    url: ""
  mattermost:
    channel: ""
    url: ""
    username: ""
  flock:
    url: ""
  webhook:
    url: ""
  cloudevent:
    url: ""
resource:
  deployment: false
  replicationcontroller: false
  replicaset: false
  daemonset: false
  services: false
  pod: true
  job: false
  node: false
  clusterrole: false
  clusterrolebinding: false
  serviceaccount: false
  persistentvolume: false
  namespace: false
  secret: false
  configmap: false
  ingress: false
  event: true
  coreevent: false
namespace: ""

资源

使用以下命令管理被监视的资源,更改将保存到 $HOME/.kubewatch.yaml

$ kubewatch resource -h

管理要监视的资源

用法:
  kubewatch resource [flags]
  kubewatch resource [command]

可用命令:
  add         添加要监视的特定资源
  remove      移除正在监视的特定资源

标志:
      
      --clusterrolebinding      监视集群角色绑定
      --clusterrole             监视集群角色
      --cm                      监视普通配置映射
      --deploy                  监视部署
      --ds                      监视守护程序集
  -h, --help                    查看帮助
      --ing                     监视入口
      --job                     监视作业
      --node                    监视节点
      --ns                      监视命名空间
      --po                      监视 Pod
      --pv                      监视持久卷
      --rc                      监视复制控制器
      --rs                      监视副本集
      --sa                      监视服务账户
      --secret                  监视普通密钥
      --svc                     监视服务
      --coreevent               监视来自 Kubernetes 核心 API 的事件(旧事件 API,在 Kubernetes 1.19 中被替换)

使用 "kubewatch resource [command] --help" 获取有关命令的更多信息。

添加/移除资源:

$ kubewatch resource add -h

添加要监视的特定资源

用法:
  kubewatch resource add [flags]

标志:
  -h, --help   查看帮助

全局标志:
      --clusterrole             监视集群角色
      --clusterrolebinding      监视集群角色绑定
      --cm                      监视普通配置映射
      --deploy                  监视部署
      --ds                      监视守护程序集
      --ing                     监视入口
      --job                     监视作业
      --node                    监视节点
      --ns                      监视命名空间
      --po                      监视 Pod
      --pv                      监视持久卷
      --rc                      监视复制控制器
      --rs                      监视副本集
      --sa                      监视服务账户
      --secret                  监视普通密钥
      --svc                     监视服务
      --coreevent               监视来自 Kubernetes 核心 API 的事件(旧事件 API,在 Kubernetes 1.19 中被替换)

示例:

# 将监视 rc、po 和 svc $ kubewatch resource add --rc --po --svc # rc、po 和 svc 将停止被监视 $ kubewatch resource remove --rc --po --svc

更改日志级别

如果你想更改默认日志级别,添加一个名为 LOG_LEVEL 的环境变量,值可以是 trace/debug/info/warning/error 中的一个

env: - name: LOG_LEVEL value: debug

更改日志格式

如果你想将日志格式更改为 json,添加一个名为 LOG_FORMATTER 的环境变量,值为 json

env: - name: LOG_FORMATTER value: json

构建

使用 Go

在任意位置克隆仓库:

$ git clone https://github.com/bitnami-labs/kubewatch.git $ cd kubewatch $ go build

或者

你也可以直接使用 Makefile:

$ make build

前提条件

  • 你需要安装 Go(v1.5 或更高版本)。确保设置了 $GOPATH

使用 Docker

$ make docker-image $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE kubewatch latest 919896d3cd90 3 minutes ago 27.9MB

前提条件

贡献

参考贡献指南开始贡献。

编辑推荐精选

讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

TRELLIS

TRELLIS

用于可扩展和多功能 3D 生成的结构化 3D 潜在表示

TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。

下拉加载更多