云原生监控系统 Prometheus(1)

Prometheus介绍

Prometheus是新一代的开源监控系统,配置简单却灵活,对容器、微服务等支持良好.

特性

  • 多维度数据模型 一个时间序列由一个度量指标和多个指标健对确定
  • 灵活的查询语言 对收集哒时序数据进行重组
  • 不依赖任何分布式存储 内存+本地存储,可通过功能分片和联盟来扩展性能
  • 常见方式是通过拉取方式采集数据,也可通过中间网关支持推送方式采集数据
  • 通过服务发现或者静态配置来发现监控目标
  • 支持多种图形界面展示方式 多与grafana集成

概念

  1. 数据模型

    • 度量指标(Metric) http请求总数 匹配正则表达式 [a-zA-Z_:][a-zA-Z0-9_:]*
    • 标签(Tag/Label) 哪个服务器 [a-zA-Z_][a-zA-Z0-9_]*
    • 采样值(Sample) http数量
    • 注解(Annotation) Metric+Tag 标明时间序列
    api_http_requests_total{method="GET", handler="/v2/api/token"}
    
  2. 度量指标

    • 计数器(Counter) 累积型 http请求总数 累加
    • 计量器(Gauge) http请求响应时间 可增可减
    • 直方图(Histogram)
    • 汇总(Summary)
  3. 任务和实例

    • 任务(Job)
    • 实例(Instance)

安装配置使用

docker run -itd --net=host  prom/prometheus:v2.2.1

默认监听端口: 9090

PromQL 语法

时序选择器

  • 瞬时向量选择器 http_requests_total{code="200"}/http_requests_total{code!="400"}
= 完全相等
!= 不相等
=~ 匹配 
!~ 不匹配
  • 区间向量选择器 http_requests_total{code!="300"}[5m]
s: 秒
m: 分钟
h: 小时
d: 天
w: 周
  • 偏移修饰器 http_requests_total{code!="300"} offset 1m 1分钟前code值不为300的http_requests_total采样值 http_requests_total{code!="300"}[1m] offset 1w 1周前的这歌时间点过去1分钟的采用值
sum/avg: 求和/平均
min/max: 最小/最大
count: 个数
rate

推荐阅读