Prometheus作为一款开源的监控和告警工具,因其强大的功能和灵活性,已经成为现代IT基础设施监控的首选之一。本文将详细介绍Prometheus的基本概念、架构、安装配置以及实际应用,帮助读者快速入门并掌握这一强大的监控工具。
Prometheus由SoundCloud开发并于2012年开源,现已成为Cloud Native Computing Foundation(CNCF)的毕业项目。它主要用于监控分布式系统中的各种指标,并提供强大的数据存储、查询和告警功能。

Prometheus的架构主要包括以下几个核心组件:
Prometheus Server是整个监控系统的核心,负责收集和存储时间序列数据。它通过配置文件定义监控目标和抓取间隔,定期从各个监控目标中抓取数据。
Exporter是Prometheus的数据采集器,负责将各种服务和硬件的监控数据转换为Prometheus可以识别的格式。常见的Exporter包括Node Exporter(用于主机监控)、MySQL Exporter(用于MySQL数据库监控)等。
Pushgateway用于处理那些无法直接被抓取的数据,例如批处理作业的监控数据。它允许这些作业将监控数据推送到Pushgateway,再由Prometheus Server进行抓取。
Alertmanager负责处理由Prometheus Server生成的告警信息,支持告警分组、抑制和路由等功能。
虽然Grafana并非Prometheus的内置组件,但它常与Prometheus结合使用,提供强大的数据可视化和仪表盘功能。
Prometheus支持多种操作系统,以下以Linux为例进行安装。
下载Prometheus
访问Prometheus官网下载最新版本的Prometheus压缩包:
wget https://github.com/prometheus/prometheus/releases/download/v2.35.0/prometheus-2.35.0.linux-amd64.tar.gz
解压并移动到指定目录
tar -xvf prometheus-2.35.0.linux-amd64.tar.gz
sudo mv prometheus-2.35.0.linux-amd64 /usr/local/prometheus
创建配置文件
Prometheus的配置文件通常为prometheus.yml,可以在解压后的目录中找到示例配置文件。
cd /usr/local/prometheus
cp prometheus.yml.example prometheus.yml
启动Prometheus
./prometheus --config.file=prometheus.yml
此时,Prometheus Server将启动并监听默认的9090端口。
以Node Exporter为例,介绍Exporter的安装和配置。
下载Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
解压并启动
tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz
cd node_exporter-1.3.1.linux-amd64
./node_exporter
Node Exporter默认监听9100端口。
配置Prometheus抓取Node Exporter数据
修改prometheus.yml文件,添加Node Exporter的监控目标:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
重启Prometheus Server使配置生效。
PromQL是Prometheus的查询语言,用于从时间序列数据库中检索和聚合数据。
查询指标:直接输入指标名称即可查询该指标的所有时间序列。
node_cpu_seconds_total
使用标签过滤:通过标签选择器过滤特定的时间序列。
node_cpu_seconds_total{mode="idle"}
sum:对时间序列进行求和。
sum(node_cpu_seconds_total{mode="idle"})
avg:计算时间序列的平均值。
avg(node_cpu_seconds_total{mode="idle"})
rate:计算时间序列在指定时间范围内的变化率。
rate(node_cpu_seconds_total{mode="idle"}[5m])
irate:类似于rate,但适用于瞬时变化率。
irate(node_cpu_seconds_total{mode="idle"}[5m])
Prometheus的告警功能通过配置告警规则和Alertmanager实现。
在Prometheus的配置文件中添加告警规则:
rule_files:
- 'alerting_rules.yml'
创建alerting_rules.yml文件,定义告警规则:
groups:
- name: example
rules:
- alert: HighCpuUsage
expr: sum(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance) > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage detected"
description: "Instance {{ $labels.instance }} has high CPU usage"
下载并安装Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
tar -xvf alertmanager-0.23.0.linux-amd64.tar.gz
sudo mv alertmanager-0.23.0.linux-amd64 /usr/local/alertmanager
配置Alertmanager
创建alertmanager.yml配置文件:
global:
resolve_timeout: 5m
route:
group_by: ['alertname', 'instance']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'webhook'
receivers:
- name: 'webhook'
webhook_configs:
- url: 'http://your-webhook-url'
启动Alertmanager
cd /usr/local/alertmanager
./alertmanager --config.file=alertmanager.yml
配置Prometheus与Alertmanager通信
修改prometheus.yml文件,添加Alertmanager配置:
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
重启Prometheus Server使配置生效。
Grafana是一个开源的数据可视化和监控平台,可以与Prometheus无缝集成,提供丰富的仪表盘和图表功能。
下载并安装Grafana
wget https://dl.grafana.com/oss/release/grafana-8.3.3.linux-amd64.tar.gz
tar -xvf grafana-8.3.3.linux-amd64.tar.gz
sudo mv grafana-8.3.3 /usr/local/grafana
启动Grafana
cd /usr/local/grafana/bin
./grafana-server web
Grafana默认监听3000端口。
登录Grafana
打开浏览器访问http://localhost:3000,默认用户名和密码为admin/admin。
添加Prometheus数据源
http://localhost:9090。导入仪表盘
Grafana提供了丰富的Prometheus仪表盘模板,可以直接导入使用。
1860。自定义仪表盘
用户也可以根据需求自定义仪表盘,添加各种图表和面板。
Prometheus作为一款功能强大的监控工具,凭借其多维数据模型、灵活的查询语言和高效的存储机制,已经成为现代IT基础设施监控的首选之一。通过本文的介绍,读者可以快速掌握Prometheus的安装配置、PromQL查询、告警管理和Grafana集成等核心内容,从而开启监控新时代的大门。在实际应用中,还需根据具体需求进行性能优化、安全性和高可用等方面的考量,以确保监控系统的稳定和高效运行。
]]>
Lei
November 7, 2024
技术探讨