type
status
date
slug
summary
tags
category
icon
password

💡Prometheus能做什么?

 

Google SRE的运维理念

SRE是一种运维的标准、亦或者是一种岗位职责制度,SRE制度里有一条红线,运维的人只能把一半的时间花在运维上,另外一半的时间必须搞工程上、研发上的东西。研发可以是写工具,可以是参与系统设计,参与可靠性的提高,但是要保证运维不能只干运维
 
主要定位作为企业服务监控告警解决方案
 

核心组件

 
  1. Prometheus Server 主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
  1. Client libraries 用于对接 Prometheus Server, 可以查询和上报数据
  1. Push Gateway 用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
  1. Exports 各种汇报数据的 exporters ,例如汇报机器数据的 node_exporter, 汇报 MongoDB 信息的 MongoDB exporter 等等
  1. AlertManage
    1. 用于告警通知管理的 alertmanager 。
       
       
服务架构图
服务架构图
 

服务流程简述

 

TIPS:

Prometheus 的数据是基于时序的 float64 的值,如果你的数据值有更多类型,无法满足。
Prometheus 不适合做审计计费,因为它的数据是按一定时间采集的,关注的更多是系统的运行瞬时状态以及趋势,即使有少量数据没有采集也能容忍,但是审计计费需要记录每个请求,并且数据长期存储,这个 Prometheus 无法满足,可能需要采用专门的审计系统。
OpenTSDB的表示法是一致的
时序数据库 OpenTSDB
 

数据模型

索引

Prometheus存储的是时序数据, 即按照相同时序(相同的名字和标签),以时间维度存储连续的数据的集合,(但不保证连续不中断)
 
时序由time series<metric [name]>{<label name=[values…]>, ...} 一组 K/V标签格式定义的具有相同的名字以及标签属于相同时序。
 
名称规则
  • 时序的名字可以使用规则为 ASCII字符,数字,下划线,以及冒号组成,它必须满足正则表达式[a-zA-Z_:][a-zA-Z0-9_:]* 其名字应该具有语义化,一般表示一个可以度量的指标,例如 http_request_total
  • __开头属于Prometheus保留
  • 支持中文
 
 

时序样本

  • float64
  • unix时间戳
 

格式

 
 

Metric时序的4种类型

 
  • Counter 表示数据收集指标用于趋势变化的,例如增长的请求数、异常等统计值
  • Gauge 表示数据瞬时值,服务器压力等指标,磁盘、内存、网络吞吐、CPU占用率等
  • Histogram 主要用于表示一段时间范围内对数据进行采样(通常是请求持续时间或响应大小),并能够对其指定区间以及总数进行统计,通常它采集的数据展示为直方图。
  • Summary 由 <basename>{quantile="<φ>"}<basename>_sum<basename>_count 组成,主要用于表示一段时间内数据采样结果(通常是请求持续时间或响应大小),它直接存储了 quantile 数据,而不是根据统计区间计算出来的。
  • Histogram vs Summary
 

作业和实例

 
 
Tips:
独立的数据源(target) 在Prometheus中称为 Instance 包含当前相同类型实例的集合叫做 Job
 
 

自动生成标签和时序

如果其中任一标签已经在此前采集的数据中存在,那么将会根据 honor_labels 设置选项来决定新标签。
 
对每一个实例而言,Prometheus 按照以下时序来存储所采集的数据样本:
 
 
 

功能模块

 

Server

 

Exporter

 

PushGateway

 
 
 

配置

 

全局配置 - Global

告警配置 - alerting

规则文件配置 - rule_files

拉取配置 - scrape_configs

远程读写配置 - remote_read remote_write

 
 
 

围绕网关服务健康度检测

 
 
 
部署一台mysql服务
企业微信推送消息测试
 
 
 
 

🤗 总结归纳

 
  • Prometheus 需要手动修改文件配置。
  • Prometheus 适用于主机监控,还适用于 Cloud, SaaS, Openstack,Container 等监控。
  • Prometheus 属于一站式监控告警平台,依赖少,功能齐全。
  • Prometheus 支持对云或容器的监控,其他系统主要对主机监控。
  • Prometheus 数据查询语句表现力更强大,内置更强大的统计函数。
  • Prometheus 在数据存储扩展性以及持久性上没有 InfluxDB,OpenTSDB,Sensu 好。
 
 

📎 参考文章

使用Rollup构建React项目《忆武功山》轻装徒步记
  • GitTalk
2021-2025 guozichun.

BLOG | Father, Husband, Developer