当前位置: 首页 > news >正文

k8s 收集event事件至Loki

🧭 前言

在生产环境中,Kubernetes 事件(Event)默认存储时间短、查询不便。通过将事件导出并存储在 Grafana Loki 中,我们可以长期保留、可视化和告警 Kubernetes 的运行状态变化,这对故障排查、调度优化、容量规划非常重要。本文档基于 loki-distributed 部署方式,详细介绍如何使用 kubernetes-event-exporter 获取事件,存入 Loki,并在 Grafana 中导入官方 Dashboard(ID:17882),快速形成监控产物。

✅ 前置条件

确保你已有以下环境:

  1. Kubernetes 集群正常运行

  2. loki-distributed 已部署完成,且可访问 Loki 对外网关

  3. Grafana 已部署,并配置了 Loki 作为 Data Source

📁 部署目录及清单

.
├── 00-roles.yaml        # RBAC 配置
├── 01-config.yaml       # event-exporter 配置
└── 02-deployment.yaml   # Deployment 配置

1️⃣ RBAC 权限配置(00-roles.yaml)

apiVersion: v1
kind: Namespace
metadata:name: monitoring
---
apiVersion: v1
kind: ServiceAccount
metadata:name: event-exporternamespace: monitoring
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: event-exporter
rules:- apiGroups: ["*"]resources: ["*"]verbs: ["get","watch","list"]- apiGroups: ["coordination.k8s.io"]resources: ["leases"]verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: event-exporter
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: event-exporter
subjects:- kind: ServiceAccountname: event-exporternamespace: monitoring

2️⃣ event-exporter 配置(01-config.yaml)

apiVersion: v1
kind: ConfigMap
metadata:name: event-exporter-confignamespace: monitoring
data:config.yaml: |logLevel: debuglogFormat: jsonmetricsNamePrefix: event_exporter_sinks:loki:type: lokiconfig:url: "http://loki-distributed-gateway.loki.svc.cluster.local:80/loki/api/v1/push"route:routes:- match:- receiver: "loki"

3️⃣ 部署 event-exporter(02-deployment.yaml)

apiVersion: apps/v1
kind: Deployment
metadata:name: event-exporternamespace: monitoring
spec:replicas: 1selector:matchLabels:app: event-exporterversion: v1template:metadata:labels:app: event-exporterversion: v1annotations:prometheus.io/scrape: 'true'prometheus.io/port: '2112'prometheus.io/path: '/metrics'spec:serviceAccountName: event-exportersecurityContext:runAsNonRoot: trueseccompProfile:type: RuntimeDefaultcontainers:- name: event-exporterimage: ghcr.io/resmoio/kubernetes-event-exporter:latestargs:- -conf=/config/config.yamlvolumeMounts:- name: config-volumemountPath: /configsecurityContext:allowPrivilegeEscalation: falsecapabilities:drop: [ALL]volumes:- name: config-volumeconfigMap:name: event-exporter-config

4️⃣ 应用部署

kubectl apply -f 00-roles.yaml
kubectl apply -f 01-config.yaml
kubectl apply -f 02-deployment.yaml

确认 Pod 启动无误:

kubectl -n monitoring get pods -l app=event-exporter
kubectl -n monitoring logs deploy/event-exporterkubectl  get pod -n monitoring  
NAME                              READY   STATUS    RESTARTS   AGE
event-exporter-6768f485cb-knx9v   1/1     Running   0          3h32m

5️⃣ Grafana 配置与 Dashboard 导入

  1. 添加 Loki 数据源

  2. Grafana → Settings → Data Sources → Add → Loki

  3. URL 填写:http://<loki-gateway-service>:80,测试连接

  4. 导入 Dashboard

  5. Grafana → “+” → Import → 输入 Dashboard ID:17882

  6. 选择刚配置的 Loki Data Source,完成导入

6️⃣ 验证与查询示例

  • 直接在 Grafana → Explore 中查询:

{app="event-exporter"} | json
  • 示例查询错误事件数并填补零值:

sum(count_over_time({app="event-exporter"} | json | reason="Failed"[$__interval])) or 0

📚 参考资料

  • 官方 GitHub:resmoio/kubernetes-event-exporter

  • Dashboard ID:17882 Kubernetes Event Exporter

  • Loki 文档:loki-distributed 模式说明(Simple Scalable)


✅ 小结

通过本文档,你将实现一个完整方案:监听 Kubernetes Event → event-exporter 将其推入 loki-distributed → Grafana 导入 Dashboard 可视化事件信息。可进一步优化包括消息过滤、报警告警及多集群统一事件收集。如需示例 Helm values 或 Kustomize 器,随时告诉我!

http://www.lryc.cn/news/571235.html

相关文章:

  • Kafka 简介(附电子教程资料)
  • 云计算-Raft算法报告-raft与paxos对比
  • 【MySQL基础】表的功能实现:增删查改详细讲解
  • 第十七届山东省职业院校技能大赛中职组网络建设与运维赛项
  • php在线生成pdf选民证系统支持中文(小工具)
  • 【前端基础】摩天之建的艺术:html(下)
  • 数据库的查询
  • 游戏技能编辑器开发完全指南系统架构设计之技能编辑器整体架构
  • RISC-V向量扩展与GPU协处理:开源加速器设计新范式——对比NVDLA与香山架构的指令集融合方案
  • 【开源工具】Windows屏幕控制大师:息屏+亮度调节+快捷键一体化解决方案
  • 数字化零售如何全面优化顾客体验
  • 【SpringBoot】Spring Boot实现SSE实时推送实战
  • TDMQ CKafka 版事务:分布式环境下的消息一致性保障
  • 工业视觉应用开发教程(一)
  • KingbaseES在线体验平台:开启国产数据库学习新征程
  • Mybatis(XML映射文件、动态SQL)
  • 有趣的git
  • 机器学习项目微服务离线移植
  • 洪水风险图制作全流程:HEC-RAS 与 ArcGIS 的耦合应用
  • Rocky Linux 9 系统初始化与安全加固脚本
  • MySQL的Sql优化经验总结
  • 大模型知识库RAG框架,比如LangChain、ChatChat、FastGPT等等,哪个效果比较好
  • 执行 PGPT_PROFILES=ollama make run下面报错,
  • HTML知识全解析:从入门到精通的前端指南(上)
  • (OSGB转3DTiles强大工具)ModelSer--强大的实景三维数据分布式管理平台
  • 内测分发平台应用的异地容灾和负载均衡处理和实现思路?
  • 【前端基础】摩天之建的艺术:html(上)
  • 点云提取车道线 识别车道线
  • Rust 学习笔记:关于 OOP 和 trait 对象的练习题
  • 基于CNN的FashionMNIST数据集识别6——DenseNet模型