前言
在 Kubernetes 环境中,事件(Events)是系统状态变化的重要指示器,它们记录了与集群中资源(如 Pods、Deployments、Services 等)相关的各种活动,如创建、更新、删除等。对 Kubernetes 事件的采集和分析,不仅有助于我们更好地理解集群的运行状态,还能为问题排查和性能优化提供有力的数据支持。本文将详细介绍 Kubernetes 事件采集分析的最佳实践,以观测云为例,阐述如何有效地收集、存储和分析 Kubernetes 事件。
在云原生时代,Kubernetes 凭借其自动化部署、扩展和管理容器化应用的能力,已成为众多企业和开发者首选的计算平台。然而,随着集群规模的扩大和复杂性的增加,如何有效地监控、管理和分析 Kubernetes 集群的事件日志变得至关重要。事件日志不仅是集群状态的晴雨表,更是故障排查、性能优化的重要依据。本文将深入探讨Kubernetes 事件日志的采集与分析最佳实践,帮助读者更好地利用事件日志信息。
Kubernetes 事件日志概述
Kubernetes 事件是指集群中发生的各种变化和操作,如 Pod 的创建、删除、更新等。这些事件由 Kubernetes 集群中的各个组件生成,如 kube-apiserver、kube-controller-manager 等,并通过 Kubernetes API 提供给外部工具进行查询和分析。事件日志与容器日志、应用日志有所不同,它更侧重于集群层面的变化和操作,对于了解集群的整体状态和性能具有重要意义。
Kubernetes 事件日志采集和分析
接入方案
部署 DataKit 采集器
采集 Kubernetes 事件日志需要先部署 Daemonset DataKit。
登录观测云控制台,点击「集成」 -「DataKit」 - 「Kubernetes」,下载 datakit.yaml,拷贝第 3 步中的 token。
编辑 datakit.yaml ,把 token 粘贴到 ENV_DATAWAY 环境变量值中“token=”后面,设置环境变量 ENV_CLUSTER_NAME_K8S 的值并增加环境变量 ENV_NAMESPACE,这两个环境变量的值一般和集群名称对应,一个工作空间集群名称要唯一。
- name: ENV_NAMESPACE
value: k8s-prod
把 datakit.yaml 上传到可以连接到 Kubernetes 集群的主机上,执行如下命令。
kubectl apply -f datakit.yaml
kubectl get pod -n datakit
当看到状态是 “Running”后表示部署 DataKit 成功。
Kubernetes Event 日志采集
DataKit 默认采集了 Kubernetes 的 Event 日志。登录观测云控制台,点击「日志」 -「查看器」 ,可以看到已经采集到的 Kubernetes Event 日志。
日志解析
原始 Kubernetes Event 日志,可以运行 kubectl get events 进行查看,在收集过程中,观测云已经默认对事件日志中的字段进行了提取,以便与后续再观测云可以通过这些字段对日志进行筛选,关联分析等。
日志可视化分析
场景图表
观测云内置多种数据监控视图模版,用户可导入模板创建仪表板和查看器,并进行自定义编辑配置;或选择自定义创建方式,通过一系列设置构建数据洞察场景。
1、点击“场景”,“新建仪表盘”。
2、新建空白仪表盘
3、拖动相应视图到下面白板
4、修改相应筛选条件
选择日志,选择来源 kubernetes_events,点击创建。
5、或者直接导入系统内置视图。
日志告警
观测云提供开箱即用的监控模板来新建监控器;也支持自定义新建监控器,通过阈值检测、日志检测、突变检测、区间检测等十余种检测规则来设置检测规则和触发条件。开启监控器后,即可接收到由检测规则触发的相关异常事件告警。
其中,日志检测用于监控工作空间内基于日志采集器产生的的全部日志数据。支持基于日志的关键字设置告警,及时发现不符合预估行为的异常模式(如:日志文本数据中存在异常的标签),多适用于 IT 监控场景下的代码异常或任务调度检测等。
第一步:在监控->新建日志检测监控器。
第二步:设置检测规则和触发条件。
这里以日志内容包含"status:warn"为例,设置超过 50 条时就触发告警。
第三步:编辑事件通知内容和告警策略,点击创建即可。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。