软件安装
1 安装Prometheus
对于非Docker用户,可以从https://prometheus.io/download/找到最新版本的Prometheus Sevrer软件包:
export VERSION=2.4.3
curl -LO https://github.com/prometheus/prometheus/releases/download/v$VERSION/prometheus-$VERSION.darwin-amd64.tar.gz
解压后将相关目录添加到PATH即可使用二进制包prometheus
启动服务。如果想修改Prometheus配置,可以修改对应的yaml文件。Server默认端口为9090.
参数
默认值
说明
--config.file
prometheus.yml
指定主配置文件路径。
--web.listen-address
0.0.0.0:9090
监听的HTTP地址和端口。
--web.enable-lifecycle
false
启用HTTP API的热重载(/-/reload
)和关闭(/-/quit
)。
--web.enable-admin-api
false
启用管理API(如删除时间序列 /api/v2/admin/tsdb/delete_series
)。
--log.level
info
日志级别:debug
, info
, warn
, error
。
--log.format
logger:stderr
日志格式:json
或 logfmt
。
存储
--storage.tsdb.path
data/
TSDB数据存储目录。
--storage.tsdb.retention.time
15d
数据保留时间(支持单位:h
, d
, w
, y
)。
--storage.tsdb.retention.size
0
(无限制)
数据保留的最大字节数(如 512MB
, 100GB
)。
--storage.tsdb.wal-compression
false
启用WAL(预写日志)压缩,减少磁盘占用。
--storage.tsdb.min-block-duration
2h
数据块最小保留时间(影响压缩合并频率)。
--storage.tsdb.max-block-duration
24h
数据块最大保留时间。
--storage.remote.flush-deadline
1m
远程写入时,关闭前的最大刷新等待时间。
抓取与并发
--scrape.timeout
10s
单次抓取超时时间。
--scrape.adjust-timestamps
true
自动对齐抓取时间戳到整秒。
--query.max-concurrency
20
最大并发PromQL查询数。
--query.timeout
2m
查询超时时间。
--query.max-samples
50000000
单次查询最大样本数(防OOM)。
--web.max-connections
512
最大HTTP并发连接数。
2 安装Node Exporter
在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。
Node Exporter同样采用Golang编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从https://prometheus.io/download/获取最新的node exporter版本的二进制包。
curl -OL https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.20.2.linux-amd64.tar.gz
tar -xzf node_exporter-0.20.2.linux-amd64.tar.gz
同样解压后进入相应目录使用二进制文件进行启动。默认端口为9100.
--collector.<name>
启用指定收集器(需确认该收集器未被默认禁用)。
--no-collector.<name>
禁用指定收集器。
--collector.disable-defaults
禁用所有默认收集器,需手动启用所需收集器。
收集器名称
默认启用
功能
cpu
✔️
CPU 使用统计。
filesystem
✔️
文件系统空间使用。
memory
✔️
内存使用统计。
diskstats
✔️
磁盘 I/O 统计。
netdev
✔️
网络接口统计。
systemd
❌
Systemd 服务状态(需手动启用)。
textfile
❌
从本地文本文件加载自定义指标(需手动启用)。
ipvs
❌
IPVS 连接状态(需内核支持)。
自定义指标扩展
--collector.textfile.directory
指定 textfile
收集器读取自定义指标的目录(需启用 textfile
)。
--collector.textfile.mtime
在指标中添加文件修改时间标签(调试用)。
3 安装alertmanager
Alertmanager最新版本的下载地址可以从Prometheus官方网站https://prometheus.io/download/获取。
curl -LO https://github.com/prometheus/alertmanager/releases/download/v0.28.1/alertmanager-0.28.1.linux-amd64.tar.gz
同样解压后进入相应目录使用二进制文件进行启动。默认端口为9093。想修改Prometheus配置,可以修改对应的yaml文件。
基础配置
--config.file
alertmanager.yml
指定主配置文件路径。
--web.listen-address
0.0.0.0:9093
监听的 HTTP 地址和端口。
--web.external-url
外部访问 Alertmanager 的 URL(用于生成告警链接)。
--log.level
info
日志级别:debug
, info
, warn
, error
。
--log.format
logger:stderr
日志格式:json
或 logfmt
。
集群与高可用
--cluster.listen-address
0.0.0.0:9094
集群通信监听的地址和端口。
--cluster.peer
指定集群对等节点地址(格式:host:port
)。
--cluster.advertise-address
对外广播的集群地址(NAT 穿透场景需要)。
--cluster.gossip-interval
200ms
节点间状态同步间隔。
--cluster.pushpull-interval
1m
集群全量数据同步间隔。
存储
--data.retention
120h
(5天)
告警状态数据保留时间。
--data.path
data/
持久化数据存储目录(告警状态、静默规则等)。
告警与通知模板
--web.get-concurrency
10
处理 UI 请求的最大并发数。
--web.timeout
5s
HTTP 请求超时时间。
--notification.smtp.smarthost
全局 SMTP 服务器地址(可被配置文件覆盖)。
--notification.smtp.require-tls
true
强制使用 TLS 连接 SMTP。
--template.path
自定义模板目录路径(覆盖配置文件中的模板)。
Alertmanager的配置主要包含两个部分:路由(route)以及接收器(receivers)。所有的告警信息都会从配置中的顶级路由(route)进入路由树,根据路由规则将告警信息发送给相应的接收器。
在Alertmanager中可以定义一组接收器,比如可以按照角色(比如系统运维,数据库管理员)来划分多个接收器。接收器可以关联邮件,Slack以及其它方式接收告警信息。
当前配置文件中定义了一个默认的接收者default-receiver由于这里没有设置接收方式,目前只相当于一个占位符。
在配置文件中使用route定义了顶级的路由,路由是一个基于标签匹配规则的树状结构。所有的告警信息从顶级路由开始,根据标签匹配规则进入到不同的子路由,并且根据子路由设置的接收器发送告警。目前配置文件中只设置了一个顶级路由route并且定义的接收器为default-receiver。因此,所有的告警都会发送给default-receiver。
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'web.hook'
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://127.0.0.1:5001/'
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
最后更新于