监控简介
学习目标
- 理解为什么需要监控 Kubernetes 集群
- 掌握监控的三大支柱:指标、日志、链路追踪
- 了解常见的监控方案和工具
核心概念
为什么需要监控
没有监控的集群:
┌─────────────────────────────────┐
│ Kubernetes 集群 │
│ ┌───────┐ ┌───────┐ ┌───────┐ │
│ │ Pod 1 │ │ Pod 2 │ │ Pod 3 │ │
│ │ ??? │ │ ??? │ │ ??? │ │
│ └───────┘ └───────┘ └───────┘ │
│ CPU? 内存? 请求量? 错误率? │
└─────────────────────────────────┘
问题:出了问题才发现,被动响应
有监控的集群:
┌─────────────────────────────────┐
│ Kubernetes 集群 │
│ ┌───────┐ ┌───────┐ ┌───────┐ │
│ │ Pod 1 │ │ Pod 2 │ │ Pod 3 │ │
│ └───┬───┘ └───┬───┘ └───┬───┘ │
│ └─────────┼─────────┘ │
│ ┌───┴───┐ │
│ │ 监控 │ │
│ └───┬───┘ │
│ 告警 + 仪表盘 │
└─────────────────────────────────┘
主动发现,提前预警
可观测性三大支柱
| 支柱 | 说明 | 工具 |
|---|---|---|
| Metrics(指标) | 数值型时序数据 | Prometheus, Metrics Server |
| Logs(日志) | 文本型事件记录 | EFK, Loki |
| Traces(链路) | 请求调用链路 | Jaeger, Zipkin |
监控层次
┌─────────────────────────────────────────┐
│ 业务监控 │
│ 请求量、错误率、响应时间、业务指标 │
├─────────────────────────────────────────┤
│ 应用监控 │
│ JVM、Go Runtime、容器资源使用 │
├─────────────────────────────────────────┤
│ 基础设施监控 │
│ Node CPU/内存/磁盘、Pod 状态 │
├─────────────────────────────────────────┤
│ 集群监控 │
│ API Server、etcd、Controller Manager │
└─────────────────────────────────────────┘
常见监控方案
| 方案 | 特点 | 适用场景 |
|---|---|---|
| Metrics Server | 轻量、内置 | HPA、资源查看 |
| Prometheus + Grafana | 功能强大、社区活跃 | 生产环境 |
| EFK Stack | 日志收集和分析 | 日志集中管理 |
| Datadog/New Relic | SaaS、开箱即用 | 不想自建 |
实践练习
练习 1:查看当前集群状态
# 查看 Node 资源使用
kubectl top nodes
# 查看 Pod 资源使用
kubectl top pods
# 查看集群事件
kubectl get events --sort-by='.lastTimestamp'
练习 2:理解监控需求
为你的应用列出需要监控的指标:
- 基础设施层:______
- 应用层:______
- 业务层:______
小结
| 要点 | 说明 |
|---|---|
| 监控目的 | 主动发现问题,提前预警 |
| 三大支柱 | 指标、日志、链路追踪 |
| 监控层次 | 集群、基础设施、应用、业务 |
| 常用工具 | Prometheus、Grafana、EFK |
练习编辑器
bash
Loading...