1.什么是kubernetes事件

Kubernetes Events 是一种 Kubernetes 资源对象,记录了某个组件在某个时间做了某个动作,用于展示集群内发生的情况,当 Kubernetes 集群中资源状态发生变化时,可以产生新的 event 。

Kubernetes 系统中的各个组件会将运行时发生的各种事件(例如调度器做了什么决定,某些 Pod 为什么被从节点中驱逐)上报给 Kubernetes API Server 。Kubernetes API Server 将 event 存储在 Etcd 中,为避免 Etcd 的磁盘空间被填满,默认的保留策略是:在最后一次的事件发生后,删除 1 小时之前发生的事件。

可以通过` kubectl describe $ResourceName `或 `kubectl get event `命令查看相关资源的事件信息或查看 Kubernetes 集群中发生了哪些事件,默认情况下只会显示最近 1 小时内发生的事件。

2.为什么监控Kubernetes事件

事件监控可以弥补Kubernetes资源监控在实时性、准确性和场景上的欠缺。您可以通过使用xxx,获取事件,实时监控集群的异常与问题。

Kubernetes平台中可能产生大量事件, kubernetes组件不提供事件相关的指标,而且会自动清理事件(1小时),但有些事件的出现可能预示着对集群或节点可用性产生影响,因此需要对事件进行监控。

当前容器云平台会收集kubernetes事件到elasticsearch中, 但没有相应的告警通知机制。

3.如何采集Kubernetes事件

Kubernetes中的事件最终还是存储在etcd中,默认情况下只保存1个小时,由于etcd并不支持一些复杂的分析操作,默认Kubernetes只提供了非常简单的过滤方式,比如通过Reason、时间、类型等。同时这些事件只是被动的存在etcd中,并不支持主动推送到其他系统,通常只能手动的去查看。

而实际上我们对事件的使用需求非常高,例如:

对系统中的异常事件做实时告警,例如Failed、Evicted、FailedMount、FailedScheduling等。
通常问题排查可能要去查找历史数据,因此需要去查询更长时间范围的事件(几天甚至几个月)。
事件支持归类统计,例如能够计算事件发生的趋势以及与上一时间段(昨天/上周/发布前)对比,以便基于统计指标进行判断和决策。
支持不同的人员按照各种维度去做过滤、筛选。
支持自定义的订阅这些事件去做自定义的监控,以便和公司内部的部署运维平台集成。
为了让大家更便捷的使用Kubernetes事件功能,所以需要进行Kubernetes Event采集。

Eventrouter
正如 Eventrouter 项目的 GitHub 页面所述:“事件路由器充当 Kubernetes 系统中事件资源的活动观察者,它接收这些事件并将它们推送到用户指定的接收器。这对于许多不同的目的很有用,但最值得注意的是对在 Kubernetes 集群上运行的工作负载的长期行为分析。”

详细信息请看 eventrouter[1] GitHub

项目地址: https://github.com/heptiolabs/eventrouter

参考:https://blog.csdn.net/weixin_43855694/article/details/103264930

Kubewatch

Kubewatch 是一个 K8s 事件监视工具,用于跟踪 Kubewatch 中的每个资源更改。它支持通知,它将能够在 Slack、Hipchat、Webhook、Flock、SMTP 等中发布通知。

详细信息请看 kubewatch[2] GitHub

项目地址:https://github.com/bitnami-labs/kubewatch

参考:https://blog.csdn.net/tao12345666333/article/details/118214871

Sloop
Sloop 监控 Kubernetes,记录事件和资源状态变化的历史,并提供可视化来帮助调试过去的事件。

详细信息请看 sloop[3] GitHub
项目地址:GitHub - salesforce/sloop: Kubernetes History Visualization

kubernetes-event-exporter

事件导出器允许将经常错过的 Kubernetes 事件导出到各种输出,以便它们可用于可观察性或警报目的。

事件导出器实现起来很简单,但功能非常强大。一旦事件被记录,它利用 Prometheus 客户端以 Prometheus 格式计数和报告事件。

详细信息请看 kubernetes-event-exporter[4] GitHub

项目地址:https://github.com/opsgenie/kubernetes-event-exporter

参考:https://qiankunli.github.io/2020/04/27/kubernetes_event.html

Kspan

Kspan 是 Weaveworks 创建的一个项目,它将 Kubernetes 事件转换为 OpenTelemetry Spans,通过因果关系将它们连接起来,并将它们组合成 traces。

Kspan 将与 Kubernetes API 交互以收集各种事件并将生成的跟踪转发到 OpenTelemetry 收集器。

kspan配合 Jaeger 利用 tracing 的方式来采集

详细信息请看 kspan[5] GitHub

项目地址:https://github.com/weaveworks-experiments/kspan

参考:https://blog.csdn.net/tao12345666333/article/details/118214871

4.可选的监控实现方案

第一种:通过agent收集kubernetes事件, 然后推送到通知系统。社区实现: https://github.com/opsgenie/kubernetes-event-exporter

第二种:通过exporter将kubernetes事件转换为指标度量, 由prometheus进行收集。社区实现:

https://github.com/caicloud/event_exporter

决定采用第二种实现方案,将event转换为指标度量。
目前event-exporter已在业务集群region-01启用,prometheus访问地址: prom.xxx.com, 指标名kubernetes_events.
5.制定告警规则

接下来制定事件相关告警规则

event_exporter已提交到代码仓库: http://gitlab.xxx.com/xxx/event_exporter
由于event exporter会将所有事件转换为指标度量,因此加入事件类型过滤,允许选择仅输出Warning类型事件(当前Kubernetes支持两种事件: Normal和Warning,前者主要是一些资源Update, Configured之类的事件,且比较频繁)

6.添加监控面板和告警项

已添加事件监控面板和告警项。

kubernetes事件监控相关推荐

  1. 全方位事件监控管理,阿里云日志服务Kubernetes事件中心正式上线

    2020年2月21日,阿里云日志服务Kubernetes事件中心正式上线,为Kubernetes事件提供集中化采集.存储.分析.可视化.告警等能力,帮助Kubernetes使用者快速构建准实时.高可靠 ...

  2. Kubernetes事件离线工具kube-eventer正式开源

    前言 监控是保障系统稳定性的重要组成部分,在Kubernetes开源生态中,资源类的监控工具与组件百花齐放.除了社区自己孵化的metrics-server,还有从CNCF毕业的Prometheus等等 ...

  3. k8s event k8s事件 监控

    原文:Kubernetes(K8s)Events介绍(上)_Kubernetes中文社区-CSDN博客 详细介绍,推荐阅读: Monitoring-K8s事件监控kube-eventer - Devo ...

  4. inotify 实时的Linux文件系统事件监控

    标签:inotifywait 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://cqfish.blog.51cto.com/6222 ...

  5. python线程监控配置文件_一日一技:Python多线程的事件监控

    一日一技:Python多线程的事件监控 设想这样一个场景: 你创建了10个子线程,每个子线程分别爬一个网站,一开始所有子线程都是阻塞等待.一旦某个事件发生:例如有人在网页上点了一个按钮,或者某人在命令 ...

  6. inotify之文件系统事件监控使用入门

    inotify是linux文件系统事件监控机制,功能强大,控制简单,可以实现很多有用的功能.如:当一个文件被访问.打开.关闭.移动.删除等等时做一些处理.此功能需要内核支持,从kernel 2.6.1 ...

  7. 2、Qt Project之鼠标事件监控

    鼠标事件监控: 对于鼠标时间监控的相关操作,我们在简历工程的时候需要选择的是QWidget基类,不选择QMainWindow基类,如下所示: Base class:QWidget Step1:我们首先 ...

  8. 【新功能发布】事件监控升级-支持自动化处理云产品异常

    背景 系统事件监控为用户提供各类云产品产生的系统事件的统一统计和查询入口,使得用户明确知晓云产品的使用状态,让云更透明. 事件监控详细介绍 ECS 事件介绍及应对建议 本月的新版本,支持在这些产品的系 ...

  9. Kubernetes高可用性监控:Thanos的部署

    原文发表于kubernetes中文社区,为作者原创翻译 ,原文地址 更多kubernetes文章,请多关注kubernetes中文社区 目录 介绍 对Prometheus高可用性的需求 实现 Than ...

最新文章

  1. gpio引脚介绍 树莓派3b_使用微创联合M5S空气检测仪、树莓派3b+、prometheus、grafana实现空气质量持续监控告警WEB可视化...
  2. Java避免创建不必要的对象
  3. JMetro版本5发布
  4. 订阅内容解码失败(非base64码)_【火眼金睛】超强解码能力——邦纳全新ABR系列读码器来袭!...
  5. 在Windows 2003 IIS 6.0中配置PHP的运行环境(图)
  6. 分布式事物框架Easy-Transaction--使用入门介绍
  7. 在别人网页上运行js脚本_初始JavaScript,世界上最流行的语言之一
  8. k均值例子 数据挖掘_【十大经典数据挖掘算法】k-means
  9. 软件测试--接口流程化测试
  10. 和get redis_Springboot2连接redis哨兵模式
  11. 塔设备设计手册_石油化工设备设计选用手册 塔器
  12. 待更新内容mongodb
  13. web前端大作业:游戏动漫网页设计(HTML+CSS+JavaScript)
  14. 设为首页,加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
  15. Smartdrv程序有什么作用
  16. android 桌面操作系统,Android主题美化: Win7桌面完成版Android Seven Pro V2
  17. scrum敏捷开发方法论
  18. 戴尔笔记本重装系统硬盘加密怎么解除
  19. 工业交换机的管理方式有哪些?
  20. 教你学习JavaScript的this入门到进阶最全用法

热门文章

  1. 机器人的工作原理,这是我见过最详细的解析!
  2. 【CISSP备考】第六章-安全评估与测试
  3. springCloud网关
  4. 微信公众号三方平台开发【获取授权方的授权信息以及基本信息】
  5. 详解Promise使用与原理
  6. php 解析word文件,php解析word文档
  7. word2vec python实现_word2vec的几种实现
  8. java 输出验证码_输出 验证码图片
  9. 拼多多怎么用有效评价做爆款,提高销量排名?
  10. System.currentTimeMillis()+time*1000