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. 洛谷 P5657 [CSP-S2019] 格雷码

    链接: P5657 分析: 签到题,不过也有不少细节. 数据范围需要开 unsigned long long ,前年也有很多人因此丢了5分. pow 会出现神必错误,需要手写一个 mpow 函数. 算 ...

  2. 21.6.17 test

    \(NOI\) 模拟赛. \(T1\) 正解树形DP,由于不是很熟悉概率和期望所以打了个20pts暴力,说不定见多了概率能打出60pts半正解?最后的虚树更不会. \(T2\) 又是概率,还有坐标数量 ...

  3. Spring MVC:HandlerMapping

    HandlerMapping 的类图 Spring中存在两种类型的handlers.第一种是 handler mappings(处理程序映射).它们的角色定位与前面所描述的功能完全相同.它们尝试将当前 ...

  4. hdu 5084 HeHe (观察思考题)

    题意: 给一个n行n列的矩阵M.这个矩阵M由2n-1数构成.分别是t1,t2,....t(2n-1). m个query.每个query形式:ri, ci. 第i个query的答案 ans[i]=E[( ...

  5. vivo 全球商城:商品系统架构设计与实践

    一.前言 随着用户量级的快速增长,vivo官方商城v1.0的单体架构逐渐暴露出弊端:模块愈发臃肿.开发效率低下.性能出现瓶颈.系统维护困难. 从2017年开始启动的v2.0架构升级,基于业务模块进行垂 ...

  6. elementUI合并表格span-method用法

    官方文档 参考链接一 参考链接二

  7. sklearn模型保存与加载

    sklearn模型保存与加载 sklearn模型的保存和加载API 线性回归的模型保存加载案例 保存模型 sklearn模型的保存和加载API from sklearn.externals impor ...

  8. WebSocket实现简易的FTP客户端

    WebScoket的简单应用,实现一个简易的FTP,即文件上传下载,可以查看上传人,下载次数,打开多个Web可以多人上传. 说在前面的话 文件传输协议(File Transfer Protocol,F ...

  9. Mysql - 如何决定用 datetime、timestamp、int 哪种类型存储时间戳?

    背景 数据表都很可能会有一两个字段需要保存日期时间数据,那应该用什么 Mysql 类型来保存呢? 前面讲过 datetime.timestamp.int 的方式来保存日期时间 如何存储 10位.13位 ...

  10. 通过大量实战案例分解Netty中是如何解决拆包黏包问题的?

    TCP传输协议是基于数据流传输的,而基于流化的数据是没有界限的,当客户端向服务端发送数据时,可能会把一个完整的数据报文拆分成多个小报文进行发送,也可能将多个报文合并成一个大报文进行发送. 在这样的情况 ...