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 & |
