前言
随着云原生和 Kubernetes 的发展,Kubernetes 监控变得越来越重要。而 Prometheus 和 Grafana 组合,已成为目前最受欢迎的 Kubernetes 监控方案之一。本文旨在帮助大家快速地搭建一个 Prometheus 和 Grafana 监控系统,以便更好地监控 Kubernetes 集群中的各种指标。
Prometheus 简介
Prometheus 是一个开源的监控系统,旨在收集系统和服务的指标数据,并提供基于这些数据的查询、警报和可视化功能。
Prometheus 的主要特点包括:
- 多维数据模型
- 灵活的查询语言
- 不依赖分布式存储,单个服务器节点可以处理数百万个指标
- 支持简单的水平扩展
- 通过 pull 模型采集时间序列数据
- 支持通过 HTTP API 实时查询数据
Grafana 简介
Grafana 是一个流行的开源监控和可视化平台,可用于显示 Prometheus 数据。
Grafana 的主要特点包括:
- 支持多种数据源
- 灵活的查询语言
- 多种可视化图表类型
- 丰富的面板功能
- 支持多租户
- 支持报警功能
Prometheus 和 Grafana 的工作流程
Prometheus 和 Grafana 的工作流程如下图所示:
- Prometheus 通过 Target 配置文件或 Kubernetes Service Discovery 服务发现规则,定期抓取目标服务的指标数据。
- Prometheus 存储和处理采集到的指标数据,并通过查询语言提供实时查询和聚合功能。
- Grafana 通过 Prometheus 数据源,从 Prometheus 中查询指标数据。
- 根据查询结果,Grafana 生成各种图表和面板,并提供可视化的操作界面。
Prometheus 和 Grafana 的搭建
1. 下载 Prometheus 和 Grafana
首先需要下载 Prometheus 和 Grafana。
Prometheus 的下载地址:https://prometheus.io/download/
Grafana 的下载地址:https://grafana.com/grafana/download
本文使用的是 Prometheus v2.29.2 和 Grafana v8.1.5。
2. 启动 Prometheus
下载 Prometheus 后,解压缩到任意目录,进入该目录,运行以下命令启动 Prometheus:
./prometheus --config.file=prometheus.yml
其中 prometheus.yml 是 Prometheus 的配置文件,可以根据实际情况修改。
启动后,在浏览器中访问 http://localhost:9090,即可看到 Prometheus 的 Web 界面。
3. 启动 Grafana
下载 Grafana 后,解压缩到任意目录,进入该目录,运行以下命令启动 Grafana:
./bin/grafana-server
启动后,在浏览器中访问 http://localhost:3000,即可看到 Grafana 的登录界面。
初始用户名和密码均为 admin。
4. 配置 Grafana 数据源
在登录 Grafana 后,需要先配置数据源,才能显示 Prometheus 中的指标数据。
具体步骤如下:
- 点击左侧菜单栏的 Configuration,选择 Data Sources。
- 点击 Add data source,选择类型为 Prometheus。
- 在 URL 栏输入 http://localhost:9090。
- 点击 Save & Test 按钮,测试连接是否成功。
5. 导入示例面板
Prometheus 自带了一些示例指标数据,可以用来测试和演示。我们先导入一个官方示例面板:node-exporter Full。
具体步骤如下:
- 进入 https://grafana.com/grafana/dashboards/1860,下载 node-exporter-full.json 文件。
- 在 Grafana 中点击左侧菜单栏的 +-> Import,选择导入方式为 Upload JSON File,上传下载好的 node-exporter-full.json 文件。
- 点击 Load 按钮,等待导入完成。
- 导入成功后,即可在 Grafana 中看到该示例面板,包括各种指标数据的图表和表格。
Prometheus 和 Grafana 的高级用法
PromQL 查询语言
Prometheus 提供了强大的查询语言 PromQL,支持多种操作符和函数,可用于聚合、计算和过滤指标数据。
以下是一些常用的 PromQL 查询示例:
- 查询节点 CPU 使用率:
100 * (1 - avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])))
- 查询 Pod 的 CPU 使用率:
sum(rate(container_cpu_usage_seconds_total{pod_name=~"POD_NAME_REGEX"}[1m])) by (pod_name)
- 查询 Pod 的内存使用率:
sum(container_memory_usage_bytes{pod_name=~"POD_NAME_REGEX", container_name!="POD"} ) BY (pod_name)/sum(container_spec_memory_limit_bytes{pod_name=~"POD_NAME_REGEX", container_name!="POD"} ) BY (pod_name) * 100
Grafana 面板
Grafana 提供了强大的面板功能,可用于可视化指标数据,并提供各种组件和样式。以下是一些常用的 Grafana 面板示例:
- 折线图:
- 圆形图:
- 柱状图:
总结
本文介绍了 Prometheus 和 Grafana 的搭建和基本用法,以及一些高级用法和示例。希望对大家了解和使用 Kubernetes 监控有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6480394648841e9894fb6e3f