Kubernetes 手动部署 Prometheus 学习计划
- Prometheus 基础与 Kubernetes 监控体系
1.1 Prometheus 基础
-
监控体系(Metrics vs Logs vs Tracing)
- 了解三种监控方式的区别与适用场景
- 学习Metrics监控的核心概念
-
Prometheus 组件
- Server:核心服务组件
- Exporter:指标暴露组件
- Alertmanager:告警管理组件
- Grafana:数据可视化组件
-
Pull vs Push 数据采集方式
- 理解Prometheus的Pull模型工作原理
- 与Push模型的对比分析
-
PromQL 查询基础
- 学习基本查询语法
- 掌握常用聚合操作
1.2 Kubernetes 监控体系
-
监控层级
- 容器级别监控
- Pod/Service级别监控
- 应用级别监控
-
Service Discovery 作用
- 理解服务发现在K8s监控中的重要性
- 学习Prometheus如何利用K8s服务发现
-
监控 K8s 关键组件
- API Server监控
- Scheduler监控
- Controller Manager监控
- Kubelet监控
2. 手动部署 Prometheus 并采集 Kubernetes 指标
2.1 配置 Prometheus
-
编写
prometheus.yml
抓取规则- 配置基本抓取设置
- 设置K8s服务发现规则
-
配置
ConfigMap
并挂载- 创建ConfigMap资源
- 挂载到Prometheus容器
-
使用
Deployment
部署 Prometheus- 编写Deployment配置
- 设置资源请求与限制
-
创建
Service
访问 Prometheus- 配置ClusterIP服务
- 可选配置Ingress或NodePort
2.2 采集 Kubernetes 指标
-
部署
kube-state-metrics
- 理解其作用与指标类型
- 配置RBAC权限
-
部署
node-exporter
- 学习节点资源监控
- 配置DaemonSet部署
-
运行 PromQL 查询 K8s 指标
- 实践常用K8s监控查询
- 分析查询结果
3. 手动部署 Alertmanager 与 Grafana
3.1 部署 Alertmanager
-
编写
alertmanager.yml
- 配置告警接收器
- 设置告警路由规则
-
使用
ConfigMap
部署 Alertmanager- 创建ConfigMap资源
- 配置Alertmanager Deployment
-
在 Prometheus 中配置
alerting_rules.yml
- 编写基础告警规则
- 配置关键K8s组件告警
3.2 部署 Grafana
-
使用
Deployment
部署 Grafana- 配置持久化存储
- 设置环境变量
-
连接 Prometheus 作为数据源
- 配置数据源
- 测试连接
-
使用社区 Kubernetes 监控模板
- 导入常用仪表板
- 自定义监控视图
4. 优化 Prometheus 生产环境部署
4.1 Prometheus 资源优化
-
调整
scrape_interval
- 平衡数据精度与资源消耗
- 针对不同监控目标设置不同间隔
-
限制
retention
以节省存储- 配置数据保留策略
- 评估存储需求
-
处理高 Cardinality 问题
- 识别高基数指标
- 实施缓解策略
4.2 远程存储与数据归档
-
配置
remote_write
归档数据- 设置远程存储端点
- 调优远程写入参数
-
集成 Thanos 或 VictoriaMetrics
- 比较不同长期存储方案
- 实施选定的解决方案
-
实现 Prometheus 高可用
- 配置多实例部署
- 处理重复数据
4.3 监控业务应用
-
监控 MySQL(
mysqld_exporter
)- 部署MySQL exporter
- 配置关键指标监控
-
监控 Nginx、Redis
- 部署对应exporter
- 设置业务相关告警
-
监控 Spring Boot、Node.js 应用
- 配置应用指标暴露
- 集成业务指标监控