1. wiki
Prometheus
是由 SoundCloud 开发的开源监控报警系统和时序列数据库(TSDB
)。使用 Golang 开发,基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,任意组件只要提供对应的 HTTP 接口就可以接入监控。
2. 组成
Server
:主要负责数据采集和存储,提供 PromQL
查询语言的支持。
Push Gateway
:支持临时性 Job 主动推送指标的中间网关。
Alertmanager
:警告管理器,用来进行报警。
3. 服务过程
Prometheus Daemon
负责定时去目标上抓取 metrics(指标)
数据,每个抓取目标需要暴露一个 http 服务的接口给它定时抓取。Prometheus
支持通过配置文件、文本文件、Zookeeper等方式指定抓取目标。Prometheus
采用 PULL 的方式进行监控,即服务器可以直接通过目标 PULL 数据或者间接地通过中间网关来 Push 数据。
Prometheus
在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。
Prometheus
通过PromQL
和其他API可视化地展示收集的数据。Prometheus
支持很多方式的图表可视化,例如Grafana
、自带的Promdash
以及自身提供的模版引擎等等。Prometheus
还提供 HTTP API 的查询方式,自定义所需要的输出。
PushGateway
支持 Client 主动推送 metrics
到PushGateway
,而Prometheus
只是定时去Gateway
上抓取数据。
Alertmanager
是独立于Prometheus
的一个组件,可以支持Prometheus
的查询语句,提供十分灵活的报警方式。
4. 热更新配置
1
| curl -XPOST localhost:9090/-/reload
|
5. 启动
1
| nohup ./prometheus --config.file=/home/demo/prometheus/prometheus.yml --storage.tsdb.path=/home/demo/prometheus_tsdb --storage.tsdb.retention=15d --log.level=info --web.enable-lifecycle &
|