Kubernetes可观测性实战:从核心指标监控到日志采集体系

Kubernetes可观测性建设是SRE团队绕不开的硬仗。指标、日志、链路追踪三个信号分开采集,最终统一到一套分析界面,才能在容器频繁重建、节点动态扩容的环境里定位故障。本文从kube-state-metrics起步,搭建一套完整的K8s监控告警与日志采集方案。

Kubernetes核心指标采集:kube-state-metrics与cAdvisor

K8s集群的指标分两类:基础设施指标(CPU、内存、磁盘)由cAdvisor采集,kubelet内置;对象状态指标(Pod副本数、容器重启次数、PVC容量)由kube-state-metrics提供。Prometheus通过ServiceMonitor自动发现并拉取这两类指标。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: kube-state-metrics
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: kube-state-metrics
  endpoints:
  - port: http-metrics
    interval: 30s

重点指标名称:kube_pod_container_status_restarts_total、kube_deployment_status_replicas_available、container_cpu_usage_seconds_total。告警规则围绕这几个指标写,覆盖Pod重启、副本数不足、节点NotReady三类高频故障。

日志采集方案:Loki与Promtail选型

日志链路先确定存储后端。轻量方案是Loki + Promtail,只索引标签不索引全文,资源占用低;重量方案是ELK,全文检索能力强但ES内存开销大。K8s环境推荐优先Loki,配合Grafana单面板展示日志与指标。

# Promtail采集Pod日志配置
scrape_configs:
- job_name: kubernetes-pods
  kubernetes_sd_configs:
  - role: pod
  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_namespace]
    target_label: namespace
  - source_labels: [__meta_kubernetes_pod_label_app]
    target_label: app

日志中标注app、namespace、pod三个标签,排障时按标签过滤,比全文搜索高效得多。采集量大的命名空间设置retention策略,日志保存30天即可。

链路追踪:OpenTelemetry统一埋点

微服务调用链用OpenTelemetry做标准埋点,同时支持metrics与trace两种信号,通过exporters输出到Jaeger或Tempo。服务入口处配置TracerProvider,跨服务传递traceparent header,才能串起完整的调用链。

告警分级与故障应急响应流程

告警分级建议:P0(服务不可用)直接电话通知;P1(资源水位超阈值)发即时通讯群;P2(指标波动)汇总到日报。Alertmanager配置route分派和抑制规则,避免同一故障重复报警。

故障响应流程固定五步:拉取K8s事件(kubectl get events)、查Pod状态与重启次数、看关键指标曲线、定位异常Pod日志、回滚或重启。这套流程配合监控面板,可以覆盖大多数K8s线上故障。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/kubernetes-ke-guan-ce-xing-shi-zhan-cong-he-xin-zhi-biao/

(0)
小编小编
上一篇 9小时前
下一篇 9小时前

相关推荐