Prometheus是什么

  首先, Prometheus 是一款时序(time series) 数据库, 但他的功能却并非支部与 TSDB , 而是一款设计用于进行目标 (Target) 监控的关键组件.

  结合生态系统内的其他组件, 例如: Pushgateway, Altermanager, Grafana等,可构成一个完整的IT监控系统.

时序数据简介

  时序数据, 是在一段时间内通过重复测量(measurement)而获得的观测值的结合, 将这些观测值绘制于图形之上, 他会有一个数据轴和时间轴.

  服务器指标数据, 应用程序性能监控数据, 网络数据等也是时序数据.

Prometheus 的优点

Prometheus怎么工作的

基于 HTTP call, 从配置文件指定的网络端点(endpoint) 上周期性获取指标数据

Prometheus 支持的监控方式

Prometheus 支持通过三种类型的途径从目标上 "抓取(Scrape)" 指标数据.

  • Exporters

  • Instrumentation (测量系统, 应用程序内建的支持Prometheus采集格式)

  • Pushgateway

Prometheus Push and Push

  Prometheus 同其他的 TSDB 相比有一个非常典型的特性: 它主动从各 Target 上 "拉取(pull)"数据, 而非等待被监控端的推送"push" .

两个方式各有优劣, 其中, Pull 模型的优势在于.

  集中控制: 有利于将配置集中在 Prometheus Server 上完成, 包括指标及采取速率等.

  Prometheus的根本目标在于手机在 Target 上预先完成集合的聚合型数据, 而非一款由时间驱动的存储系统.

Prometheus 生态组件

  Prometheus 负责时序性指标数据的采集以及存储, 但是数据的分析, 聚合及直观展示以及告警等功能并非由 Prometheus Server 所负责.

Prometheus数据模型

Prometheus 仅用于以 "键值" 形式存储时序式的聚合数据, 它并不支持存储文本信息,

其中的 "键" 称为指标 (Metric), 它通常意味着CPU速率, 内存使用率或区分空闲比例等

同一个指标会适配多个目标设备, 因而他使用 "标签作为元数据", 从而为 Metric添加更多的信息描述纬度.

这些标签可以作为过滤器进行指标过滤及聚合运算.

Prometheus 的指标定义

  Prometheus 的所有指标 (Metric) 被统一定义为:  <metric name> {label_name=<label_value>,....}

  指标定义设计指标名称和标签两个部分.

指标名称(metric name)

  指标名称用于说明指标的含义, 例如 http_request_total 代表 HTTP 请求总数.

  指标名称必须由字母, 数字, 瞎花钱或者冒号组成. 其中的冒号指标不能用于 exporter.

标签(label)

  标签可以体现指标的纬度特征, 用于过滤和聚合, 它通过指标名 (label name) 和标签值 (label value ) 这种键值对的形式, 形成多种纬度.

  指标的某些标签以 "__"开头的, 这些标签时在 Prometheus 系统内部使用的, 在形式上 http_request_total{status="200"} 和 {__name__="http_request_total ", status="200"} 代表相同的指标.

  Prometheus 指标采用标签的方式能够很好的与容器结合, 无论是原生 Docker 还是 Kubernetes, 都通过标签关联资源.

指标类型(Metric Types)

Prometheus 使用四种方法来描述监控的指标

Counter

  计数器, 用于保存单调递增型的数据, 例如站点访问次数, 机器的启动时间, HTTP访问量等, 不能为负值, 也不支持减少, 但可以重置回0;

  Counter 具有很好的不关联性, 不会因为重启而置0, 我们使用 Counter 指标是, 通常会结合 rate() 方法获取该指标在某个时间段的变化, 例如, "HTTP请求总数", 指标就属于典型的 Counter 指标, 通过对他进行 rate()操作, 可以得出请求的变化率.

Gauge

  仪表盘, 用于存储有着起伏特征的数据实施变化的数据, 例如内存空闲大小等可增可减.

  Gauge 是 Counter 的超集, 但存在指标数据丢失的可能性, Counter 能让用户确切的了解指标随时间的变化状态, 而 Gauge 则可能随时间流逝而精准度越来越低.

Histogram

  直方图, 它会在一段时间范围内对数据进行采样, 并将其计入可配置的 bucket 之中, Histogram 能够存储更多的信息, 包括样本值分布在每个 bucket (bucket 自身可配置) 中的数量, 所有样本值之和以及总的样本数量, 从而 Prometheus 能够使用内置函数进行如下操作.

  • 计算样本平均值, 以值的总和除以值的数量.

  • 计算样本分位值: 分位数有助于来哦接符合特定标准数据个数, 例如评估响应时长超过1秒中的请求比例, 若超过20%即发送告警信息.

Summary

  摘要, Histogram 的扩展类型, 单他是直接被检测端自行聚合计算出分位数, 并将计算结果响应给Prometheus Server 的样本采集请求, 因而其分位数计算是由监控端完成.

作业(Job)和实例(Instance)

  Instance: 即能够接收 Prometheus Server 数据 Scrape 操作的每个网络端点(endpoint), 即为一个 Instance(实例)

  通常, 具有类似功能的 Instance 的集合成为一个 Job, 例如一个 Mysql 主从复制几圈中的所有 Mysql 进程.

Prometheus概述的更多相关文章

  1. 理解OpenShift(7):基于 Prometheus 的集群监控

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  2. Kubernetes学习之路(二十四)之Prometheus监控

    目录 1.Prometheus概述 2.Prometheus部署 2.1.创建名称空间prom 2.2.部署node_exporter 2.3.部署prometheus-server 2.4.部署ku ...

  3. kubernetes(k8s) Prometheus+grafana监控告警安装部署

    主机数据收集 主机数据的采集是集群监控的基础:外部模块收集各个主机采集到的数据分析就能对整个集群完成监控和告警等功能.一般主机数据采集和对外提供数据使用cAdvisor 和node-exporter等 ...

  4. 实战 Prometheus 搭建监控系统

    实战 Prometheus 搭建监控系统 Prometheus 是一款基于时序数据库的开源监控告警系统,说起 Prometheus 则不得不提 SoundCloud,这是一个在线音乐分享的平台,类似于 ...

  5. Prometheus在Kubernetes下的服务发现机制

    Prometheus作为容器监控领域的事实标准,随着以Kubernetes为核心的云原生热潮的兴起,已经得到了广泛的应用部署.灵活的服务发现机制是Prometheus和Kubernetes两者得以连接 ...

  6. 050.集群管理-Prometheus+Grafana监控方案

    一 Prometheus概述 1.1 Prometheus简介 Prometheus是由SoundCloud公司开发的开源监控系统,是继Kubernetes之后CNCF第2个毕业的项目,在容器和微服务 ...

  7. Prometheus + Grafana 监控系统搭

    本文主要介绍基于Prometheus + Grafana 监控Linux服务器. 一.Prometheus 概述(略) 与其他监控系统对比 1 Prometheus vs. Zabbix Zabbix ...

  8. 部署Prometheus+Grafana监控

    Prometheus 1.不是很友好,各种配置都手写 2.对docker和k8s监控有成熟解决方案 Prometheus(普罗米修斯) 是一个最初在SoudCloud上构建的监控系统,开源项目,拥有非 ...

  9. Kubernetes K8S之kube-prometheus概述与部署

    Kubernetes K8S之kube-prometheus概述与部署 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7. ...

随机推荐

  1. [LGP2758]编辑距离

    目录 题目 题目描述 输入格式 输出格式 输入输出样例 题目分析 状态转移方程 初始状态 结束状态 Code 题目 题目描述 设A和B是两个字符串.我们要用最少的字符操作次数,将字符串A转换为字符串B ...

  2. objcopy使用

    objcopy - copy and translate object files:用于二进制文件的拷贝和翻译(转化) objcopy的man文件如下所示: objcopy [-F bfdname|- ...

  3. cf 11B Jumping Jack(贪心,数学证明一下,,)

    题意: 给一个数X. 起始点为坐标0.第1步跳1格,第2步跳2格,第3步跳3格,.....以此类推. 每次可以向左跳或向右跳. 问最少跳几步可以到坐标X. 思路: 假设X是正数. 最快逼近X的方法是不 ...

  4. java性能优化常用工具jps、jstat、jinfo

    jps:虚拟机进程状况工具 jps可以用来查看虚拟机进程,基本等同于ps -ef|grep java #查看jps的使用文档 [root@localhost script]# jps -help us ...

  5. 了解一下Git的常用语句

    简单学习了一下Git,整理了一点常用语句 http连接 git clone https://仓库地址 连接githup cd shop 进入文件夹 git config --global user.n ...

  6. 详解calc()函数功能

    calc()对大家来说,或许很陌生,不太会相信calc()是css中的部分.因为看其外表像个函数,既然是函数为何又出现在CSS中呢?这一点也让我百思不得其解,今天有一同事告诉我,说CSS3中有一个属性 ...

  7. Java学习(十)

    今天学习的是参数的传入,感觉这个和c++差不多. 传一个参数进去,要看这个参数是地址还是一个值,如果是值的话那无论在方法中如何加减,也只是另一个局部变量的事情了,与该参数无关,在原方法中参数的值保持不 ...

  8. webpack 项目接入Vite的通用方案介绍(上)

    愿景 希望通过本文,能给读者提供一个存/增量项目接入Vite的点子,起抛砖引玉的作用,减少这方面能力的建设成本 在阐述过程中同时也会逐渐完善webpack-vite-serve这个工具 读者可直接fo ...

  9. Mac 下安装 MySQL 步骤

    安装 MySQL Mac 下安装MySQL推荐去官网下载dmg 版本的,我使用的版本是5.7.30. 如上图所示. 之后就是傻瓜式一键狂点不过需要注意的是,不要关闭下图所示的框框!不要关闭下图所示的框 ...

  10. 菜鸡的Java笔记 图书馆

    图书大厦        开发要求            现在要求模拟一个图书大厦图书管理的程序结构,可以在图书大厦实现某一类图书的上架操作,下架操作,以及关键字模糊查询的操作            注 ...