Prometheus 和 Grafana 是云原生监控领域的黄金组合。Prometheus 负责采集和存储时序数据,而 Grafana 则负责数据的可视化。本文将指导您如何在 Kubernetes (K8s) 集群中快速部署这一监控体系,并配置一个全方位的集群性能监控大屏。
1. 准备工作
您需要确保拥有以下工具和权限:
- 一个可用的 Kubernetes 集群(版本 ≥ 1.16)。
- kubectl 命令行工具。
- helm 3.x 版本,用于部署 kube-prometheus-stack。
2. 部署 kube-prometheus-stack
部署 kube-prometheus-stack 是最简便的方式,它包含了 Prometheus、Grafana、Alertmanager、kube-state-metrics 和 Node Exporter 等所有必要组件,并且预配置了 K8s 服务的发现规则。
步骤 2.1:添加 Helm 仓库并创建命名空间
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
kubectl create namespace monitoring
步骤 2.2:安装监控堆栈
我们使用 Helm 将整个堆栈安装到 monitoring 命名空间中。这可能需要几分钟。
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring
3. 访问 Grafana 服务
安装完成后,Prometheus 和 Grafana 服务已经启动。为了在本地访问 Grafana Web 界面,我们使用 kubectl port-forward。
步骤 3.1:确认 Grafana Service 名称
kubectl get svc -n monitoring | grep grafana
# 假设输出为 prometheus-grafana
步骤 3.2:端口转发
将本地的 3000 端口映射到集群中的 Grafana 服务。
kubectl port-forward svc/prometheus-grafana 3000:80 -n monitoring
现在您可以通过浏览器访问 http://localhost:3000。
登录凭证:
- 用户名: admin
- 密码: 默认情况下,该 Helm Chart 会自动生成或使用 prom-operator(如果未修改配置)。如果密码未知,您可以通过以下命令获取默认密码:
kubectl get secret --namespace monitoring prometheus-grafana -o jsonpath="{.data.admin-password}" | base64 --decode
4. 导入 Kubernetes 监控大屏
kube-prometheus-stack 自动配置了 Grafana 数据源(指向 Prometheus),因此我们只需导入一个社区维护的高质量 K8s 监控模板即可。
步骤 4.1:选择仪表板 ID
Grafana Labs 提供了大量预构建的仪表板。我们推荐使用 ID 3119 (Kubernetes Cluster Monitoring (via Prometheus)),它提供了集群、节点、Pod 和容器的全面视图。
步骤 4.2:导入操作
- 登录 Grafana。
- 点击左侧导航栏的 + 图标,然后选择 Import。
- 在 “Import via grafana.com” 字段中输入 3119,然后点击 Load。
- 在接下来的配置页面中,确保 “Prometheus” 字段选择已经自动配置好的 Prometheus 数据源(通常名称是 Prometheus)。
- 点击 Import。
导入成功后,您将看到一个包含 CPU 使用率、内存消耗、网络 I/O、文件系统使用等关键指标的动态大屏,实时反映您的 K8s 集群健康状况和性能。
5. 总结
通过使用 kube-prometheus-stack,我们极大地简化了 K8s 监控环境的搭建过程。利用社区提供的 Grafana 仪表板模板,我们无需手动编写复杂的 PromQL 查询语句,即可在几分钟内构建出专业的集群性能监控大屏。
汤不热吧