Prometheus 是由 SoundCloud 开源监控告警解决方案。


Prometheus java 自定义指标项目 prometheus value_hg

prometheus

prometheus存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合。
时序(time series)是由名字(Metric)以及一组key/value标签定义的,具有相同的名字以及标签属于相同时序。
  • metric名字:表示metric的功能,如http_request_total。时序的名字由 ASCII 字符,数字,下划线,以及冒号组成,它必须满足正则表达式 [a-zA-Z_:][a-zA-Z0-9_:]*, 其名字应该具有语义化,一般表示一个可以度量的指标,例如 http_requests_total, 可以表示 http 请求的总数。
  • 标签:
  • 样本:按照某个时序以时间维度采集的数据,称之为样本。实际的时间序列,每个序列包括一个float64的值和一个毫秒级的时间戳
  • 一个 float64 值
  • 一个毫秒级的 unix 时间戳
  • 格式:Prometheus时序格式与OpenTSDB相似:
<metric name>{<label name>=<label value>, ...}
  • Metric类型:
  • Counter: 一种累加的metric,如请求的个数,结束的任务数,出现的错误数等
  • Gauge: 常规的metric,如温度,可任意加减。其为瞬时的,与时间没有关系的,可以任意变化的数据。
  • Histogram: 柱状图,用于观察结果采样,分组及统计,如:请求持续时间,响应大小。其主要用于表示一段时间内对数据的采样,并能够对其指定区间及总数进行统计。根据统计区间计算
  • Summary: 类似Histogram,用于表示一段时间内数据采样结果,其直接存储quantile数据,而不是根据统计区间计算出来的。不需要计算,直接存储结果

PromQL

PromQL (Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言。

主要用于告警公式编辑和grafana面板配置使用,也可在prometheus中查询使用。具体使用方法可以查阅标题的文档。

Pushgateway

Pushgateway是一个独立的服务,Pushgateway位于应用程序发送指标和Prometheus服务器之间。

Pushgateway接收指标,然后将其作为目标被Prometheus服务器拉取。可以将其看作代理服务,或者与blackbox exporter的行为相反, 它接收度量,而不是探测它们。

  • 可使用pushgateway相关sdk发送指标到Pushgateway,再由prometheus拉取
  • 之前写过一个metrics-monitor的插件,可借鉴 https://gitee.com/Faylinn/metrics-monitor

Exporter

exporter是prometheus的client,可以自定义也可以使用官方已经提供的。

可查看https://prometheus.io/docs/instrumenting/exporters/ 或者自行到网上搜索别人造好的轮子

Grafana

prometheus的UI系统,可以通过配置公式展示不同酷炫的面板页面。

时在中春,阳和方起