Prometheus


相同技术栈的路人甲

一、聊聊监控

1、为什么要监控?
  • 对系统不间断实时监控
  • 实时反馈系统当前状态
  • 保证业务持续性运行
2、怎么来监控
  • 监控工具 free df top …
    在这里插入图片描述
  • 监控系统 Zabbix --> Nightingale —> Prometheus
3、要监控什么
监控项 内容
硬件 温度 硬件故障等
系统 CPU 内存 硬盘 网卡流量 TCP状态 进程数
应用 Nginx Tomcat PHP MySQL Redis
日志 系统 服务 访问 错误
安全 WAF 敏感文件
API 可用性 接口请求 响应时间
业务 电商网站,每分钟产生多少订单 注册多少用户 多少活跃用户 推广活动效果
流量 根据流量获取用户相关信息,用户地理位置、某页面访问状况、页面停留时间
4、Promethus监控范畴
  • 熟悉被监控对象,思考这个问题,它的类是什么?想好了给我留言
  • 整理监控指标

目前行业内提供的数据远远超出你对机器、内核的想象,走best practice 就好;
业务的话,你就多参与业务内容 必须深入进去才能贴切的落地,SRE路线?走走就知道了。

  • 告警阈值定义

个人认为这个是最有意思的点,多看看统计学的思想 。有了统计的美 ,落地才显得更有意义,不是么
呵呵,只有思想还不行,看看线性代数是怎么给你高效的解决的,算法?

  • 故障处理流程

作为一名优秀的SRE,只走DevOps还不够优秀
有了告警 让后呢? 看告警处理故障呗,流程和规范是不是更让别人省心呢

二、Prometheus概述

1、是什么

【官网】【中文文档】【prometheus-book】【github】

  • 多维数据模型:由度量名称和键值对标识的时间序列数据
  • PromQL: 一种灵活的查询语言,可以利用多维数据完成复杂的查询
  • 不依赖分布式存储,单个服务器节点可直接工作
  • 基于HTTP的pull方式采集时间序列数据
  • 推送时间序列数据通过PushGateway组件支持
  • 通过服务发现或静态配置发现目标(尽量不要用static,不要问我为什么)
  • 多种图形模式及仪表盘支持(仪表盘的标准,军刀—grafana
2、组成与架构
  • Prometheus Server: 收集指标和存储时间序列数据,并提供查询接口
  • PushGateway: 短期存储指标数据。主要用于临时性的任务,后期实践起来很有用
  • Exporters: 采集监控指标并暴露metrics
  • Alertmanager: 告警,神器 — 多多品尝
  • Web UI: 简单的Web控制台
    在这里插入图片描述
3、监控指标数据模型
  • 在 Prometheus 里一个数据点由 Metric(metric + labelsets) + timestamp + value 组成。
    数据点,具体是在 Prometheus pull 采集的数据后处理并存储后形成的。所以 timestamp 时间戳是针对于 pull 后的时间,并不是在客户端采集时候的的时间戳。
# TYPE http_requests_total counter
|--------------------------- Metric ----------------------------|-timestamp -|-value-|
|--- metric name --|------------------ labelsets ---------------|
http_requests_total{
   
   code="200",handler="prometheus",method="get"}               721
# labelsets 代表了这个 metric name 下的一个维度,可以有多个维度,后期方便做聚合操作
  • Prometheus将所有数据存储为时间序列
  • 每个时间序列都由度量标准名称和一组键值对(标签)唯一标识;具有相同度量名称以及标签属于同一个指标
	<metric name>{
   
   <label name>=<label value>,...}
	eg: api_http_requests_total{
   
   method="POST",handler="/messages"}
  • time-series 中的每一行数据称为一个 sample

指标(metric) :metric name 和描述当前样本特征的 labelset
时间戳(timestamp):一个精确到毫秒的时间戳。(截图中因为获取的是即时指,没有打印时间戳)
样本值(value):一个 float64 的浮点型数据表示当前样本的值。

4、监控指标数据类型
  • Counter: 递增的计数器。例如 rpc 请求总数。http请求总数
  • Gauge: 可以任意变化的数值。例如内存/cup占用,goroutine数量等。
  • Histogram: 对一段时间范围内数据进行采样,并对所有数值求和与统计数量,
    在这里插入图片描述
    在这里插入图片描述

反应样本的随机正态分布数据,例如rpc请求延迟分布。
prometheus的直方图是累计的。原因:想象一下,如果 histogram 类型的指标中加入了额外的标签,或者划分了更多的 bucket,那么样本数据的分析就会变得越来越复杂。如果 histogram 是累积的,在抓取指标时就可以根据需要丢弃某些 bucket,这样可以在降低 Prometheus 维护成本的同时,还可以粗略计算样本值的分位数。通过这种方法,用户不需要修改应用代码,便可以动态减少抓取到的样本数量。

  • Summary: 根据样本统计百分位,分位数由客户端计算
    在这里插入图片描述

Counter 以及 Gauge 都是对收集的样本 value 采用 atomic 方式操作
Histogram 以及 Summary 则加入了统计操作相关算法

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值