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. Noip模拟12 2021.7.12

    T1 interval 亏得昨天晚上改掉了T3并且理解了单调栈,今天一扫这题目就知道要用啥了. 先预处理出以a[i]为最大值的最大左右区间.然后再将a[i]取%!!!是的,要不然会影响单调栈的使用.. ...

  2. 求1+2+3...+n 牛客网 剑指Offer

    求1+2+3...+n 牛客网 剑指Offer 题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). ...

  3. AtCoder Grand Contest 055题解

    我太菜啦!!!md,第一题就把我卡死了...感觉对构造题不会再爱了... A - ABC Identity 先来看这个题吧,题意就是给定你一个字符串,让你将这个字符串最多分成6个子串,使得每个字符都在 ...

  4. vue3.x版本路由router跳转+传参

    显示传参模式 get import { useRouter } from 'vue-router'; const router = useRouter(); let skipEdit = (key: ...

  5. 策略路由——使用Router-Policy策略路由进行路由协议的引入

    1.实验目的:实现R3-R2-R1为访问主线路,R3-R4-R1为访问备份线路 2.实验拓扑及IP,如图; 3.基本配置(端口IP) R1: <Huawei>sys[Huawei]sys ...

  6. 动态sql & 抽取可重用sql

    抽取可重用的sql片段 抽取:<sql id="xx"></sql> 使用:<include refid="xx">< ...

  7. Cookie、Session、localStorage、sessionStorage区别和用法

    Cookie 在学习一个新知识点前,我们应该明白自己的学习目标,要带着疑问去学习,该小节须要了解 Cookies 什么是cookie,cookie的作用 cookie的工作机制,即cookie是运作流 ...

  8. 升级npm后版本依然没有变 原来是全局npm设置的锅

    最近准备给家里的老爷机打一个 react 的环境 win7系统还不算老~ 不过!由于很多年以前装的node了版本很低,所以赶紧去官网 下了一个 最新的稳定版本的. 卸载和安装都费了老大力了. 以为光明 ...

  9. MySQL 各版本连接驱动字符串

    绪论 MySQL版本与连接驱动的版本有严格的对应关系,所以在这里记录一下 MySQL 5.7 jdbc.drive=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql: ...

  10. More Effective C++笔记(一)(精心整理)

    一.基础议题 条款1:仔细区别pointers和references 指针使用*和->,引用使用"." 引用必须指向一个已初始化的对象,不能为null,而指针可以指向某个对象 ...