Prometheus + Grafana 监控:K8s 集群资源与应用指标的可视化配置
·
Prometheus + Grafana 监控:Kubernetes 集群资源与应用指标的可视化配置
在 Kubernetes(K8s)集群中,使用 Prometheus 收集指标数据并结合 Grafana 进行可视化,是监控集群资源(如 CPU、内存)和应用指标(如请求延迟、错误率)的高效方案。以下配置步骤基于最佳实践,逐步指导您完成设置。整个过程分为部署 Prometheus、配置指标收集、部署 Grafana 和创建仪表盘四个阶段。所有操作均在 K8s 集群内执行,使用 Helm 工具简化部署(确保您已安装 Helm)。
1. 部署 Prometheus
Prometheus 负责从 K8s 组件和应用中拉取指标数据。推荐使用 Helm chart 快速安装。
-
步骤:
- 添加 Prometheus Helm 仓库并更新:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update - 安装 Prometheus(默认配置适用于大多数集群):
helm install prometheus prometheus-community/prometheus -n monitoring --create-namespace - 验证部署:检查 Pod 状态:
kubectl get pods -n monitoring- 预期输出:
prometheus-server-*和prometheus-node-exporter-*Pod 应为Running状态。
- 预期输出:
- 添加 Prometheus Helm 仓库并更新:
-
关键点:
- Prometheus 会自动发现 K8s 服务(通过 ServiceMonitor),但需确保目标暴露了指标端点(如
/metrics)。 - 资源指标(如节点 CPU)由
node-exporter提供;应用指标需应用自身暴露 Prometheus 格式的端点。
- Prometheus 会自动发现 K8s 服务(通过 ServiceMonitor),但需确保目标暴露了指标端点(如
2. 配置指标收集
配置 Prometheus 收集 K8s 集群资源指标和应用自定义指标。
-
集群资源指标:
- 部署
kube-state-metrics以获取 Pod、Deployment 等资源状态:helm install kube-state-metrics prometheus-community/kube-state-metrics -n monitoring - Prometheus 会自动发现这些目标(通过 ServiceMonitor)。例如,节点 CPU 使用率公式在查询时可用行内表达式表示:$ \text{CPU使用率} = \frac{\text{已用CPU}}{\text{总CPU}} \times 100% $。
- 部署
-
应用指标:
- 确保您的应用暴露 Prometheus 指标端点(如 Spring Boot Actuator 的
/actuator/prometheus)。 - 创建 ServiceMonitor 资源(YAML 示例),让 Prometheus 自动拉取:
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: app-metrics namespace: monitoring spec: selector: matchLabels: app: your-app # 匹配应用的 Service 标签 endpoints: - port: web # 应用的指标端口名 path: /metrics # 指标路径- 应用后,Prometheus 的 Targets 页面(通过
kubectl port-forward访问)应显示新目标。
- 应用后,Prometheus 的 Targets 页面(通过
- 确保您的应用暴露 Prometheus 指标端点(如 Spring Boot Actuator 的
-
验证:
- 使用 Prometheus UI 查询指标:
kubectl port-forward svc/prometheus-server 9090:80 -n monitoring,然后访问http://localhost:9090。 - 输入查询如
kube_pod_container_resource_limits_cpu_cores检查资源指标。
- 使用 Prometheus UI 查询指标:
3. 部署 Grafana
Grafana 用于可视化 Prometheus 数据。同样使用 Helm 安装。
- 步骤:
- 添加 Grafana Helm 仓库:
helm repo add grafana https://grafana.github.io/helm-charts helm repo update - 安装 Grafana:
helm install grafana grafana/grafana -n monitoring - 获取管理员密码(用于首次登录):
kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode - 访问 Grafana:
kubectl port-forward svc/grafana 3000:80 -n monitoring,然后打开http://localhost:3000。
- 添加 Grafana Helm 仓库:
4. 配置 Grafana 仪表盘
添加 Prometheus 数据源并创建仪表盘,可视化集群和应用指标。
-
添加数据源:
- 在 Grafana UI 中,导航到 Configuration > Data Sources > Add data source。
- 选择 Prometheus,输入 URL:
http://prometheus-server.monitoring.svc.cluster.local:80(K8s 内部服务地址)。 - 保存并测试连接(应显示 "Success")。
-
创建仪表盘:
- 集群资源仪表盘:
- 导入预建仪表盘(如 ID
3119用于节点监控):- 在 Grafana 中选择 Create > Import,输入 ID
3119,加载 Kubernetes 集群仪表盘。 - 仪表盘显示 CPU、内存、网络等指标,例如内存使用率公式:$ \text{内存使用率} = \frac{\text{已用内存}}{\text{总内存}} \times 100% $。
- 在 Grafana 中选择 Create > Import,输入 ID
- 导入预建仪表盘(如 ID
- 应用指标仪表盘:
- 手动创建面板:选择 Create > Dashboard > Add new panel。
- 在 Query 选项卡中,选择 Prometheus 数据源,输入应用指标查询(如
http_requests_total计算请求率)。- 错误率公式示例:$ \text{错误率} = \frac{\text{http_requests_total{status="500"}}}{\text{http_requests_total}} \times 100% $。
- 设置可视化类型(如图表、仪表),保存仪表盘。
- 示例仪表盘元素:
- CPU 使用率:折线图显示所有节点趋势。
- Pod 状态:表格显示运行/失败计数。
- 应用延迟:直方图展示请求延迟分布。
- 集群资源仪表盘:
-
优化:
- 设置告警:在 Grafana 面板中配置规则(如 CPU > 80% 时触发)。
- 使用变量:在仪表盘中添加集群或命名空间变量,实现动态过滤。
总结
通过以上步骤,您已实现 K8s 集群的全面监控:Prometheus 收集资源与应用指标,Grafana 提供实时可视化仪表盘。此方案可扩展性强,支持自定义指标和告警。
- 优势:实时监控、快速故障诊断、资源优化依据。
- 后续建议:定期更新 Helm chart,集成 Alertmanager 告警,并扩展应用到业务指标(如数据库查询延迟)。
如需更详细配置(如特定应用指标),请提供更多上下文,我将进一步优化指导!
更多推荐
所有评论(0)