拱墅区网站建设,学校网站的系统建设方式,太原规划网站,站长工具查询网站信息#x1f9ed; 前言
在生产环境中#xff0c;Kubernetes 事件#xff08;Event#xff09;默认存储时间短、查询不便。通过将事件导出并存储在 Grafana Loki 中#xff0c;我们可以长期保留、可视化和告警 Kubernetes 的运行状态变化#xff0c;这对故障排查、调度优化、… 前言
在生产环境中Kubernetes 事件Event默认存储时间短、查询不便。通过将事件导出并存储在 Grafana Loki 中我们可以长期保留、可视化和告警 Kubernetes 的运行状态变化这对故障排查、调度优化、容量规划非常重要。本文档基于 loki-distributed 部署方式详细介绍如何使用 kubernetes-event-exporter 获取事件存入 Loki并在 Grafana 中导入官方 DashboardID17882快速形成监控产物。 ✅ 前置条件 确保你已有以下环境 Kubernetes 集群正常运行 loki-distributed 已部署完成且可访问 Loki 对外网关 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/pushroute:routes:- match:- receiver: loki
3️⃣ 部署 event-exporter02-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: trueprometheus.io/port: 2112prometheus.io/path: /metricsspec: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 appevent-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 导入 添加 Loki 数据源 Grafana → Settings → Data Sources → Add → Loki URL 填写http://loki-gateway-service:80测试连接 导入 Dashboard Grafana → “” → Import → 输入 Dashboard ID17882 选择刚配置的 Loki Data Source完成导入 6️⃣ 验证与查询示例 直接在 Grafana → Explore 中查询
{appevent-exporter} | json 示例查询错误事件数并填补零值
sum(count_over_time({appevent-exporter} | json | reasonFailed[$__interval])) or 0 参考资料 官方 GitHubresmoio/kubernetes-event-exporter Dashboard ID17882 Kubernetes Event Exporter Loki 文档loki-distributed 模式说明Simple Scalable ✅ 小结 通过本文档你将实现一个完整方案监听 Kubernetes Event → event-exporter 将其推入 loki-distributed → Grafana 导入 Dashboard 可视化事件信息。可进一步优化包括消息过滤、报警告警及多集群统一事件收集。如需示例 Helm values 或 Kustomize 器随时告诉我