Prometheus简介

Prometheus简介

Prometheus 是一套开源的系统监控报警框架。作为新一代的监控框架,Prometheus具有如下几个特点

  1. 多维度的数据模型
  2. 灵活和强大的查询语句(PromQL)
  3. 易于管理,prometheus是一个独立的二进制文件,不依赖分布式存储
  4. 采用pull模式利用HTTP采集数据
  5. 有多种的可视化图形界面(目前推荐使用Grafana展示数据)

prometheus的架构如下图所示

prometheus的主要工作流程如下

  1. prometheus serve定期从job pull metric,或者接收来自Pushgateway的metrics
  2. prometheus将获取的metric存储在本地,并根据配置的alert rule向Alertmanage发送告警信息
  3. Alertmanage根据配置,对接收的告警信息进行处理,发出相应的告警
  4. 可视化采集的数据

Prometheus相关概念

instance

一个单独采集的目标(target),一般对应一个进程

job

一组相同类型的instance

web-api部署在多台实例上,prometheus会从每个实例上去采集数据
job: web-api
    instance x.x.x.x:port1
    instance x.x.x.x:port2

sample

实际的时间序列,每一个时间序列包含一个float64的值以及一个毫秒级的时间戳

metric

prometheus有4中metric,可以将metric理解为数据模型,metric的格式如下

<metric name>{<label name>=<label value>,...}

label

标签,用来表示采集数据的维度,例如有个指标为http_request_total表示所有http请求的总数,则http_request_total{method=”POST”}则表示请求方式为POST的请求总数,其中method就是label

Prometheus安装配置

下载prometheus,解压安装包

tar -zxvf prometheus-2.6.0.darwin-amd64.tar.gz
cd prometheus-2.6.0.darwin-amd64

启动

prometheus安装包下有一个二进制文件,叫prometheus,之前运行该文件,即可启动prometheus server

./prometheus --help

配置

prometheus的配置文件为prometheus.yml,内容如下

global:
  scrape_interval:     15s # prometheus server 从instance拉取metric的间隔
  evaluation_interval: 15s # prometheus server检测alert rule的间隔
  scrape_timeout: 10s # proemtheus server抓取数据的超时时间

# Alertmanager 配置
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# 告警规则
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# 抓取对象配置
scrape_configs:
  # 全局唯一的名称,用来标识一个job
  - job_name: 'prometheus'

    # 该job对应的所有instance
    static_configs:
    - targets: ['localhost:9090']

Metric

Counter

对数据进行累加,数据只会递增,例如http请求数,错误个数

Guage

可以对数据进行加减,例如温度,线程数量

Histogram

可以理解为柱状图,依据事先设置的阈值,对采集数据进行分类统计,适合统计的指标如response time,request size等

Histogram具有3个指标值

<metric_name>_bucket 对应分桶的条数
<metric_name>_sum 采集数据求和的值
<metric_name>_count 采集条数

下面以实例来说明上述三个指标,例如对response time进行统计,总共采集了3条数据,分别是

100ms,200ms,120ms

则以下三个指标分别表示

response_time_bucket{le=120}=2, response time小于等于120ms的数据有两条
response_time_sum=(100+200+120)=420 对所有的response time进行求和
response_time_count=3 总共采集了3条数据

Summary

与Histogram类似,最大的区别在于Summary可以精确的统计百分位的值,例如90%的响应时间低于200ms

summary也有三个指标

<metric_name>{quantile="<q>"}  0=<q<=1 百分位位于q的值
<metric_name>_sum 采集数据求和的值
<metric_name>_count 采集条数

Histogram VS Summary

  • 都包含<basename>_sum,<basename>_count
  • Histogram 需要通过 \_bucket 计算 quantile, 而 Summary 直接存储了 quantile 的值。

Prometheus实例演示

启动prometheus

./prometheus --config.file="prometheus.yml"

启动成功之后可以在localhost:9090上查看对应的metric

查看对应的指标

在输入框中输入指标名称,即可看到对应指标的值

可视化指标

选择graph标签页,即可将对应的数据可视化,例如查看http请求code为200的QPS

rate(promhttp_metric_handler_requests_total{code="200"}[1m])

参考文献


Reprint please specify: wbl Prometheus简介

Previous
Prometheus2.0实战 Prometheus2.0实战
Prometheus 1.x VS Prometheus 2.x1.0版本与2.0版本最大的改变之一就是存储引擎,1.x版本使用的是LevelDB,2.x使用的是TSDB,性能上有较大的提升,以下是官方对比数据 与 Prometheus
2019-01-26
Next
Kafka源码分析——Consumer Kafka源码分析——Consumer
Consumer使用实例kafka-console-consumersh kafka-console-consumer.sh ----bootstrap-server localhost:9092 --topic test --from-b
2019-01-13