初识 prometheus

初识 prometheus

prometheus是什么及其主要功能注意事项

prometheus 是什么?

我现在目前的读者都肯定通过prometheus这个监控吧,那么它到底是什么呢? prometheus是一个基于时间序列(time_series)的监控软件,它是由soundCloud开源监控告警解决方案,从2012年开始编写代码,再到2015年github上开源,已经很多大公司使用,2016年prometheus成为继kubernetes后,第二个CNCF(cloud native Computing Foundation云原生计算基金会)的成员。2017年底发布了基于全新存储层的2.0版本,能更好地与容器平台、云平台配合,并同时支持告警。

prometheus的主要功能

  • 多维数据模型(时序由metrics[指标]和k/v的labels构成)
  • 灵活的查询语句(PromQL)支持基本数据运算和函数
  • 无依赖存储,支持local和remote不同的模型
  • 采用http协议,使用pull/push模式来获取数据
  • 监控目标,可以采用服务发现和静态配置的方式
  • 支持多种统计数据模型,配合grafana使用图形化友好

prometheus的核心组件

  • prometheus server:主要对获取的数据和存储时序数据,另外还提供查询和alert rule(报警规则)配置管理
  • client libraries:用于对接prometheus server,可以查询和上报数据
  • Pushgateway: 用于批量,短期的监控数据的汇总节点,监控主机上报给pushgeateway,然后pushgateway上报给prometheus sever。
  • exporters: 各种汇报数据的exporters,例如汇报机器数据的node_exporter,汇报docker情况的cAdvisor
  • alertmanager: 用于告警通知的

prometheus基础架构图

下面这张图是官方的架构图

从上图中我们也能看出来prometheus的主要包含的模块,pushgateway,exporters,retrieval,TSDB(存储)HTTP,PromeQl,Alertmanager。

他的大致逻辑是这样的:
1,prometheus会定期从静态配置的targets或者服务发现的targets中向部署在被监控端的服务器上请求exporters来获取数据,或者由客户端通过定时任务定期向pushgateway发送数据,然后有pushgateway向prometheus发送数据。
2,当新的数据大于配置内存缓存区的时候,prometheus会将数据持久化到磁盘,(如果使用remote storage将持久到云端)
3,prometheus可以配合grafana通过特定的表达是来获取我们想要的监控图形
4,prometheus可以配置rules(规则),然后定时查询数据,当出发告警条件的时候,会通知alertmanager推送到配置的告警信息上去
4,alertmanager收到告警信息的时候,可以根据配置,聚合,去重,降噪最后发送警告

promethesus使用的注意事项

  • prometheus的数据是基于时间序列(time-series)的fload64的值,
  • prometheus不适合做审计计费,因为他的数据是按照时间间隔来采集的,关注的更多是系统的运行的瞬时状态以及趋势,即使有少量的数据没有采集也能容忍,但是审计计费需要记录每个请求,并且数据长期存储,这个prometheus无法满足。

prometheus和其他监控的对比

prometheus相对于其他软件的优势

1,易于管理
prometheus核心部分只有一个单独的用golang编写的二进制文件,不存在任何的第三方依赖(数据库,缓存等)。唯一需要做的就是本地磁盘和内存,所以他可以运行在各种平台。
prometheus是基于pull和push模型的架构方式,在任何地方搭建我们的监控系统,对于一些复杂的情况,还可以使用prometheus服务发现(server Discovery)的能力动态管理监控目标。

2,监控服务的内部运行状态
prometheus鼓励用户监控服务的内部状态,基于prometheus丰富的client库,用户可以轻松的在应用程序中添加的对prometheus的支持,从而让用户可以获取服务和应用内部真正的运行状态。

3,强大的数据模型
所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB)。所有的样本除来基本的指标名称以外,还包含一组用于描述该样本特征的标签。

4,强大的查询语言PromQL
prometheus内置来一个强大的数据查询语言promQL,通过PromQL可以实现对监控数据的查询/聚合。同时PromeQL也被应用于数据可视化(grafana)以及告警中。

5,高效
对于监控系统而言,大量的监控任务必然导致有大量的数据产生。而Prometheus可以高效地处理这些数据,对于单一Prometheus Server实例而言它可以处理:

  • 数以百万的监控指标
  • 每秒处理数十万的数据点。

6,可扩展性
Prometheus是如此简单,因此你可以在每个数据中心、每个团队运行独立的Prometheus Sevrer。Prometheus对于联邦集群的支持,可以让多个Prometheus实例产生一个逻辑集群,当单实例Prometheus Server处理的任务量过大时,通过使用功能分区(sharding)+联邦集群(federation)可以对其进行扩展。

7,易于集成
因为prometheus采用的是http的协议来进行通信获取数据的,所以所有语言只要支持http协议都可以被当作exporters来使用

8,可视化
prometheus配合grafana制定精美的监控图表

prometheus VS zabbix

  • Zabbix 使用的是 C 和 PHP, Prometheus 使用 Golang, 整体而言 Prometheus 运行速度更快一点。
  • Zabbix 属于传统主机监控,主要用于物理主机,交换机,网络等监控,Prometheus 不仅适用主机监控,还适用于 Cloud, SaaS, docker,kubernetes,Container 监控。
  • Zabbix 在传统主机监控方面,有更丰富的插件。
  • Zabbix 可以在 WebGui 中配置很多事情,但是 Prometheus 需要手动修改文件配置。

prometheus vs nagios

  • Nagios 数据不支持自定义 Labels, 不支持查询,告警也不支持去噪,分组, 没有数据存储,如果想查询历史状态,需要安装插件。
  • Nagios 是上世纪 90 年代的监控系统,比较适合小集群或静态系统的监控,显然 Nagios 太古老了,很多特性都没有,相比之下Prometheus 要优秀很多。

prometheus vs InfluxDB

  • InfluxDB 是一个开源的时序数据库,主要用于存储数据,如果想搭建监控告警系统, 需要依赖其他系统。
  • InfluxDB 在存储水平扩展以及高可用方面做的更好, 毕竟核心是数据库。

原文地址:https://blog.51cto.com/13447608/2441403

时间: 2024-11-09 12:33:15

初识 prometheus的相关文章

初识Prometheus

安装Prometheus Server Prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖.用户只需要下载对应平台的二进制包,解压并且添加基本的配置即可正常启动Prometheus Server. 从二进制包安装 对于非Docker用户,可以从https://prometheus.io/download/找到最新版本的Prometheus Sevrer软件包: export VERSION=2.4.3 curl -LO https://github.com/pro

初识Python,望君多多关照

在学习Python之前,我们接触过数据结构和网页制作.前者让我们学习如何把C语言运用的更加整齐规范,而后者让我们亲身学习如何运用所学,制作一个静态网页.通过这些课程的学习,让我对C语言产生了比较大的压力,以至于对编程.对这学期的Python课程都有一种如临大敌的感觉. 但是真的学习了这门课程,体会了编码过程中的一些固定运用方法和套路之后,也许过程中对这门课程隐隐约约产生了一点点朦胧的感觉,仿佛他也并没有想象中的那么困难,起码现在的学习让我认为,他可能没有C语言那么繁琐和麻烦.当然,以一个初学者的

初识数组排序!!!!

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>初识数组排序</title> <!--调试成功--> <style type="text/css"> *{ padding:0; margin: 0; } li,ul{ list-style: none; } #p

初识操作系统和linux

初识操作系统和linux 1.计算机系统由硬件系统和软件系统两大部分组成:是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动.高速地处理,然后把处理结果输出的现代化智能电子设备. 2.世界上第一台计算机是1946年诞生在美国宾州大学. 3.冯·诺依曼体系结构:1946年数学家冯·诺依曼于提出计算机硬件系统由运算器.控制器.存储器.输入设备.输出设备.摩根定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍.现在计算机技术进本很难遵

JAVA 初识类加载机制 第13节

JAVA 初识类加载机制 第13节 从这章开始,我们就进入虚拟机类加载机制的学习了.那么什么是类加载呢?当我们写完一个Java类的时候,并不是直接就可以运行的,它还要编译成.class文件,再由虚拟机解释给当前的操作系统去执行.这些过程都是我们看不见的,我们能看见的也就是一个.class文件.既然虚拟机要解释这些.class文件给当前的操作系统听,那么他怎么获得这些.class文件呢?虚拟机获得这些.class文件的过程就是类加载了. 所以,总结来说就是:虚拟机将.class文件从磁盘或者其他地

初识React

原文地址:北云软件-初识React 专注于UI 在MVC分层设计模式中,react常被拿来实现视图层(V).React不依赖于技术栈的其他部分,因此可以方便的在现有项目中尝试用它来实现一个小特性. 虚拟DOM React从DOM中抽象出来,给出一种更简洁的编程模型,且性能表现更好.能够通过NodeJS实现服务端渲染,通过React Native开发原生app. 数据流React实现单向.响应式数据流,减少boilerplate且比传统数据绑定更容易理解. 简洁的组件React的组件都实现了一个r

泛型的几种类型以及初识webform

今天学习的可以分为两类吧,但是学习的都是比较抽象的,不太容易掌握吧.首先我们大部分时间学习了泛型,泛型的委托,泛型接口以及枚举器,迭代器,扩展方法:最后简单的认识了webform,实现了一个简单的功能. 一.泛型 定义:泛型(generic)可以软糖多个类型共享一组代码,泛型允许我们声明类型参数化.可以用不同的类型进行实例化,说白了,就是可以用类型占位符,创建具体类型致命的真实概念.C#中提供了五种泛型,类,结构,接口,委托和方法.下面举例说明可能更容易理解, class MyStack<T>

最新计算机技术与管理科学应用专家——初识ERB

ERB管理系统:英文全称Enterprise Resource and Behavior,英文简称:ERB,中文名全称:企业资源与行为管理系统.ERB是由理文企业管理顾问有限公司首席管理师,现任商翼ERB企业管理系统项目总监吴志华先生,于2010年9月首先提出的.ERB不再单以供应链管理作为系统应用的基础,而是以企业行为与企业资源规划的最佳结合作为系统应用设计的核心基础,强调企业行为的规划.执行.监督与追溯,强调企业管理水平与员工素养的持续提升:提供企业行为与企业资源管理最佳结合的整体应用解决方

[OpenGL]环境搭建以及OpenGL初识

想往游戏行业发展的话,经常被提及到的就是OpenGL和DirectX,这两者听起来感觉是一门挺高深的技术,今天我也开始摸索学习OpenGL,那么OpenGL到底是什么?它和DirectX有什么区别和联系? OpenGL初识 OpenGL只是一套图形函数库 DirectX包含图形.声音.输入.网络等模块. 但就图形而论,DirectX的图形库性能不如OpenGL,OpenGL稳定,可以跨平台使用,DirectX只支持Windows平台,所以OpenGL还是有它的优势!OpenGL ES是OpenG