Project Icon

kubewatch

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

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

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

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

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

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

GoDoc License slack robusta

最新镜像

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

前提条件

贡献

参考贡献指南开始贡献。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号