Prometheus 零碎

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 主动推送 metricsPushGateway,而Prometheus只是定时去Gateway上抓取数据。
  • Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

architecture

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 &