Prometheus 介绍

Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。

作为新一代的监控框架,Prometheus 具有以下特点:

  • 强大的多维度数据模型: 时间序列数据通过 metric 名和键值对来区分。 所有的 metrics 都可以设置任意的多维标签。
  • 数据模型更随意,不需要刻意设置为以点分隔的字符串。 可以对数据模型进行聚合,切割和切片操作。
  • 支持双精度浮点类型,标签可以设为全unicode。 灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个 metrics进行乘法、加法、连接、取分数位等操作。
  • 易于管理: Prometheus server是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。 高效:平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。 使用 pull模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。 可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端。 可以通过服务发现或者静态配置去获取监控的 targets。
  • 有多种可视化图形界面。 易于伸缩。 需要指出的是,由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100%
  • 准确的情形。但如果用于记录时间序列数据,Prometheus 具有很大的查询优势,此外,Prometheus 适用于微服务的体系架构。

示例图:

Prometheus的适用场景

在选择Prometheus作为监控工具前,要明确它的适用范围,以及不适用的场景。
Prometheus在记录纯数值时间序列方面表现非常好。它既适用于以服务器为中心的监控,也适用于高动态的面向服务架构的监控。
在微服务的监控上,Prometheus对多维度数据采集及查询的支持也是特殊的优势。
Prometheus更强调可靠性,即使在故障的情况下也能查看系统的统计信息。权衡利弊,以可能丢失少量数据为代价确保整个系统的可用性。因此,它不适用于对数据准确率要求100%的系统,比如实时计费系统(涉及到钱)。

Prometheus核心组件介绍

Prometheus Server:

Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。 Prometheus Server可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。其次Prometheus Server需要对采集到的监控数据进行存储,Prometheus Server本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。最后Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。 Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。 Prometheus Server的联邦集群能力可以使其从其他的Prometheus Server实例中获取数据,因此在大规模监控的情况下,可以通过联邦集群以及功能分区的方式对Prometheus Server进行扩展。

Exporters:

Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus
Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。 一般来说可以将Exporter分为2类:
直接采集:这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接内置了用于向Prometheus暴露监控数据的端点。
间接采集:间接采集,原有监控目标并不直接支持Prometheus,因此我们需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序。例如: Mysql Exporter,JMX Exporter,Consul Exporter等。

PushGateway:

在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。在AlertManager中我们可以与邮件,Slack等等内置的通知方式进行集成,也可以通过Webhook自定义告警处理方式。

Service Discovery:

服务发现在Prometheus中是特别重要的一个部分,基于Pull模型的抓取方式,需要在Prometheus中配置大量的抓取节点信息才可以进行数据收集。有了服务发现后,用户通过服务发现和注册的工具对成百上千的节点进行服务注册,并最终将注册中心的地址配置在Prometheus的配置文件中,大大简化了配置文件的复杂程度,
也可以更好的管理各种服务。 在众多云平台中(AWS,OpenStack),Prometheus可以
通过平台自身的API直接自动发现运行于平台上的各种服务,并抓取他们的信息Kubernetes掌握并管理着所有的容器以及服务信息,那此时Prometheus只需要与Kubernetes打交道就可以找到所有需要监控的容器以及服务对象.

  • Consul(官方推荐)等服务发现注册软件
  • 通过DNS进行服务发现
  • 通过静态配置文件(在服务节点规模不大的情况下)

Prometheus UI

Prometheus UI是Prometheus内置的一个可视化管理界面,通过Prometheus UI用户能够轻松的了解Prometheus当前的配置,监控任务运行状态等。 通过Graph面板,用户还能直接使用PromQL实时查询监控数据。访问ServerIP:9090/graph打开WEB页面,通过PromQL可以查询数据,可以进行基础的数据展示。

Prometheus 简介相关推荐

  1. prometheus简介

    一.prometheus简介 1.1 什么是prometheus? Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包.从2012年开始,许多公司和组织开始使用Prome ...

  2. Prometheus详解(一)——Prometheus简介与特点

    今天继续给大家介绍Linux运维相关知识,本文主要内容是Prometheus简介与特点. 一.Prometheus简介 Prometheus是由SoundCloud开发的开源监控系统,由GO语言编写而 ...

  3. Prometheus简介与部署

    Prometheus简介与部署 1. Prometheus简介 2. Prometheus原理 3. Prometheus的特点 4. 什么是样本 5. Prometheus优缺点: 6. Prome ...

  4. prometheus job 重复_分享一款开源的监控神器--Prometheus 简介、架构及相关概念

    概述 老环境用的zabbix做监控,新环境因为用的微服务架构,所以对比再三,选择了prometheus来做监控,下面介绍下什么是prometheus. 一.简介 Prometheus 是一套开源的系统 ...

  5. Prometheus简介和安装

    1.Prometheus功能 在业务层用作埋点系统: Prometheus支持多种语言(Go,java,python,ruby官方提供客户端,其他语言有第三方开源客户端).我们可以通过客户端方面的对核 ...

  6. 【运维】第二节 Prometheus 简介

    目录 一. Prometheus组件及架构 1.  Prometheus server 服务端 2.  Pushgateway 推送网关 3.  Alertmanager 警报管理器 4.  Prom ...

  7. Prometheus 简介与架构

    起源 Prometheus 起源于 SoundCloud ,因为微服务迅速发展,导致实例数量以几何倍数递增,不得不考虑设计一个符合以下几个功能的监控系统: 多维数据模型,可以按照实例,服务,端点和方法 ...

  8. 常用监控与prometheus监控的简介

    文章目录 一.常用监控简介 ❻zabbix核心组件介绍 #Zabbix 4.Prome theus .borg . kubernetes Prometheus具有以下特性: ❾可利用Pushgatew ...

  9. 监控利器Prometheus初探

    导读:Kubernetes作为当下最炙手可热的容器管理平台,在给应用部署运维带来便捷的同时,也给应用及性能监控带来了新的挑战.本文给大家分享一款十分火热的开源监控工具Prometheus,让我们一起来 ...

最新文章

  1. distribution counting—a sorting method from aocp
  2. 我总结的120页《图解MIT线性代数笔记.pdf》,都是干货!
  3. Oracle备份恢复之逻辑备份
  4. SWF反编译软件Action Script Viewer ASV2011/06发布
  5. 51nod--1212 最小生成树
  6. Remove Duplicates from Sorted Array
  7. 7.通过scp命令从linux服务器下载文件夹
  8. ubuntu常用软件
  9. idea 格式化代码 快捷键
  10. cad插入块_5大模块,彻底学会CAD块!
  11. JavaScript核心之Document对象概述(document的属性,方法,事件)
  12. Java并发学习(四)-sun.misc.Unsafe
  13. 计算机网络 数据链路层 数据链路层的作用
  14. ArcMap制作3D地形图
  15. cadence 通孔焊盘_通孔焊盘内走线不报错
  16. 【UV打印机】PrintExp打印软件教程(五)-高级
  17. ZJYYC 活字印刷 DFS
  18. rust休闲玩家_《Rust》坚持强制限定角色性别 玩家怒喷开发商傻蛋
  19. 任务管理器都关不掉应用程序进程怎么办?
  20. python去除数据集里空格_Python将文本去空格并保存到txt文件中

热门文章

  1. c语言可以小数乘小数吗,DSP 定点算数运算设计
  2. Java SE 8 新特性之旅 : Java开发世界的大变动
  3. 使用MPAndroidChart图标遇到的坑-X轴文字显示不全问题
  4. MapReduce编程入门-日志访问次数统计任务
  5. PFC中各服务对象使用说明
  6. R语言画图——添加数学表达式和R2(Ⅱ)
  7. python 操作 mysql
  8. CSS 浮动(float)
  9. 国内代码托管中心-码云
  10. 盈利模式方案范本_模式方案