一款Google开源的系统监控和告警工具包,帮助您监控网络环境内服务运行状态。
1.00¥ 原价为:1.00¥。0.00¥当前价格为:0.00¥。
Prometheus 是一款开源的系统监控和告警工具包。它以其强大的多维数据模型、灵活的查询语言 (PromQL) 和高效的数据收集方式而广泛应用于云原生环境。
主要特点:
核心功能:
配置监控目标 (Exporters): Prometheus 通过 Exporters 采集监控数据。您需要部署并配置与您要监控的服务或系统相对应的 Exporters。例如,要监控 Linux 系统,您需要部署 Node Exporter;要监控 Kubernetes 集群,您可以使用 kube-state-metrics 和 cAdvisor 等。
配置 Prometheus 抓取任务: Prometheus 需要知道从哪些 Exporters 获取指标数据。您需要在 Prometheus 的配置文件 (prometheus.yml
) 中定义抓取任务 (scrape_configs
)。每个抓取任务指定了要抓取的目标地址、抓取间隔、标签重写规则等。
一个简单的 scrape_config
示例 (假设 Node Exporter 运行在 localhost:9100
):
YAML
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
启动 Prometheus 服务: 在配置好 prometheus.yml
文件后,启动 Prometheus 服务。Prometheus 将会按照配置文件中的定义,定期地从配置的目标抓取指标数据。
使用 Prometheus 表达式浏览器查询数据: Prometheus 提供了一个内置的表达式浏览器,通常通过 Prometheus 服务运行的 9090
端口访问(例如 http://localhost:9090
)。您可以在表达式输入框中输入 PromQL 查询语句,并查看实时的监控数据和图表。
node_cpu_seconds_total
,可以查看该指标的所有时间序列。node_cpu_seconds_total{instance="your-node", mode="user"}
。sum(rate(node_cpu_seconds_total[5m])) by (instance)
计算每个节点的 CPU 使用率。定义告警规则: 您可以在 Prometheus 的配置文件中或者独立的告警规则文件中定义告警规则。告警规则基于 PromQL 表达式,当表达式的计算结果为真时,Prometheus 会触发告警。
一个简单的告警规则示例 (alert.rules
):
YAML
groups:
- name: NodeHighCPU
rules:
- alert: HighCPUUsage
expr: sum(rate(node_cpu_seconds_total[5m])) by (instance) > 0.8
for: 5m
labels:
severity: critical
annotations:
summary: "High CPU usage detected on {{ $labels.instance }}"
description: "CPU usage on {{ $labels.instance }} is above 80% for more than 5 minutes."
配置 Alertmanager (可选但推荐): Prometheus 本身只负责触发告警,通常需要与 Alertmanager 集成来处理告警的通知。您需要配置 Prometheus 将触发的告警发送给 Alertmanager,并在 Alertmanager 中配置告警的接收者和通知方式。
使用 Grafana 进行可视化 (可选但常用): Grafana 是一款流行的开源数据可视化工具,可以与 Prometheus 集成,创建功能强大的监控仪表盘。您需要在 Grafana 中添加 Prometheus 作为数据源,并创建各种图表来展示您关心的监控指标。
假设我们已经运行了一个 Node Exporter 实例,它暴露了主机的系统指标,并且 Prometheus 服务也已经启动并配置了抓取该 Node Exporter 的任务(如第二部分的示例配置)。
目标: 使用 Prometheus 表达式浏览器查询主机的 CPU 使用率。
步骤:
确认 Node Exporter 正在运行: 假设 Node Exporter 运行在 localhost:9100
。您可以在浏览器中访问 http://localhost:9100/metrics
,如果看到类似 # HELP node_cpu_seconds_total Time spent in seconds in each CPU mode.
的指标数据,则表示 Node Exporter 正在正常工作。
访问 Prometheus 表达式浏览器: 在浏览器中打开 Prometheus 的 Web 界面,通常是 http://localhost:9090
。
输入 PromQL 查询: 在表达式输入框中输入以下 PromQL 查询,以计算所有 CPU 核心在用户模式下的平均使用率(以百分比表示):
avg by (instance) (rate(node_cpu_seconds_total{mode="user"}[5m])) * 100
解释:
node_cpu_seconds_total{mode="user"}
: 筛选出 CPU 在用户模式下消耗的总时间(累积值)。rate(...[5m])
: 计算在过去 5 分钟内该指标的每秒增长率,即每秒的 CPU 使用量。avg by (instance) (...)
: 按 instance
标签(通常是主机名或 IP 地址)计算平均值。* 100
: 将结果转换为百分比。执行查询并查看结果: 点击 “Execute” 按钮。Prometheus 将会显示一个包含每个被监控主机的 CPU 用户使用率的时间序列数据。
查看图表: 切换到 “Graph” 选项卡,Prometheus 将会绘制出 CPU 用户使用率随时间变化的图表。您可以调整时间范围以查看不同时间段的监控数据。
进阶 (定义一个简单的告警规则):
假设我们要创建一个告警,当主机的平均 CPU 使用率超过 80% 持续 5 分钟时触发。
编辑 Prometheus 告警规则文件 (alert.rules
): 添加以下规则:
groups:
- name: HostCPUAlerts
rules:
- alert: HighAverageCPUUsage
expr: avg by (instance) (rate(node_cpu_seconds_total[5m])) * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: "High average CPU usage detected"
description: "Average CPU usage on {{ $labels.instance }} is above 80% for more than 5 minutes."
配置 Prometheus 加载告警规则文件: 确保您的 prometheus.yml
文件中配置了 rule_files
来加载该告警规则文件:
rule_files:
- 'alert.rules'
重启 Prometheus 服务: 使配置更改生效。
现在,当被监控主机的平均 CPU 使用率持续超过 80% 达 5 分钟时,Prometheus 将会触发一个名为 HighAverageCPUUsage
的告警。这个告警可以被 Alertmanager 进一步处理和通知。
这个简单的实例展示了如何通过 Prometheus 表达式浏览器查询基本的监控数据,并定义一个简单的告警规则。在实际应用中,您需要根据您监控的具体服务和系统配置相应的 Exporters 和更复杂的查询和告警规则。