Prometheus介绍

Prometheus介绍

    • 1. Prometheus 简介
    • 2. Prometheus 的特点
    • 3. Prometheus 的架构
    • 4. Prometheus 的基本组件
    • 5. Prometheus工作流程
    • 6. Prometheus和Zabbix对比
    • 7. Prometheus的部署模式
      • 7.1 基本高可用模式
      • 7.2 基本高可用+远程存储
      • 7.3 基本HA + 远程存储 + 联邦集群方案
    • 8. Prometheus能监控什么
    • 9. Prometheus对kubernetes的监控

在这里插入图片描述

1. Prometheus 简介

普罗米修斯(古希腊语:Προμηθεύς、英语:Prometheus,名字的含义是“先见之明”),是古希腊神话中泰坦一族的神明之一,他是地母盖亚与乌拉诺斯的儿子伊阿珀托斯与克吕墨涅所生,和厄庇墨透斯是兄弟。普罗米修斯曾与智慧女神雅典娜共同创造了人类,普罗米修斯负责用泥土雕塑出人的形状,雅典娜则为泥人灌注灵魂,并教会了人类很多知识。普罗米修斯还反抗宙斯,将火种带到人间。

Prometheus是由前 Google 工程师从 2012 年开始在Soundcloud以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了证明这一点,Prometheus 于 2016 年 5 月加入CNCF基金会,成为继Kubernetes之后的第二个 CNCF 托管项目。

Prometheus支持多种语言(Go,java,python,ruby官方提供客户端,其他语言有第三方开源客户端)

Cloud Native Computing Foundation,云原生计算基金会(简称CNCF)是一个开源软件基金会,它致力于云原生(Cloud Native)技术的普及和可持续发展。官网 https://www.cncf.io/

2. Prometheus 的特点

  1. 多维度数据模型
  2. 灵活的查询语言(PromQL):可以对采集的metrics指标进行加法,乘法,连接等操作;
  3. 可以直接在本地部署,不依赖其他分布式存储;
  4. 通过基于HTTP的(pull)方式采集时序数据;
  5. 可以通过中间网关(pushgateway)的方式把时间序列数据推送到prometheus server端;
  6. 可通过服务发现或者静态配置来发现目标服务对象(targets)。
  7. 有多种可视化图像界面,如Grafana等。
  8. 高效的存储,每个采样数据占3.5 bytes左右,300万的时间序列,30s间隔,保留60天,消耗磁盘大概200G。
  9. 做高可用,可以对数据做异地备份,联邦集群,部署多套prometheus,pushgateway上报数据

多维度数据模型:每一个时间序列数据都由metric度量指标名称和它的标签labels键值对集合唯一确定:这个metric度量指标名称指定监控目标系统的测量特征(如:http_requests_total- 接收http请求的总计数)。labels开启了Prometheus的多维数据模型:对于相同的度量名称,通过不同标签列表的结合, 会形成特定的度量维度实例。(例如:所有包含度量名称为/api/tracks的http请求,打上method=POST的标签,则形成了具体的http请求)。这个查询语言在这些度量和标签列表的基础上进行过滤和聚合。改变任何度量上的任何标签值,则会形成新的时间序列图。

3. Prometheus 的架构

Prometheus 的整体架构以及生态系统组件如下图所示:
在这里插入图片描述

  • Prometheus Server:Retrieval通过 HTTP Server定时向服务动态发现的目标抓取metrics(指标)数据,每个抓取目标都需要暴露一个HTTP服务接口(符合Prometheus规范)用 于Prometheus定时抓取。并将采集来的监控数据持久化后存在TSDB中;
  • PromQL查询:可以通过Prometheus WebUi,Api Clients或Grafana使用PromQL来查询各种指标数据;
  • 告警推送:将计算后超过阈值的告警发送至Alertmanager,经过Alertmanager的进一步分组,抑制,静默后发送到更丰富的告警通道;
  • 采集目标:被采集的目标既可以是各种官方Exporter,也可以是实现了Prometheus规范的三方接口(如Nacos和Arrangodb的metrics接口),如:PushGateway等

TSDB:时间序列数据库 (Time Series Database , 简称 TSDB)是一种 高性能、低成本、稳定可靠的在线时间序列数据库

4. Prometheus 的基本组件

  1. Prometheus Server: 用于收集和存储时间序列数据。
  2. Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。
  3. Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端,所有向promtheus server提供监控数据的程序都可以被称为exporter
  4. Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。
  5. Grafana:监控仪表盘,可视化监控数据
  6. pushgateway: 各个目标主机可上报数据到pushgateway,然后prometheus server统一从pushgateway拉取数据。

5. Prometheus工作流程

  1. Prometheus server可定期从活跃的(up)目标主机上(target)拉取监控指标数据,目标主机的监控数据可通过配置静态job或者服务发现的方式被prometheus server采集到,这种方式默认的pull方式拉取指标;也可通过pushgateway把采集的数据上报到prometheus server中;还可通过一些组件自带的exporter采集相应组件的数据;
  2. Prometheus server把采集到的监控指标数据保存到本地磁盘或者数据库;
  3. Prometheus采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的报警发送到alertmanager
  4. Alertmanager通过配置报警接收方,发送报警到邮件,微信或者钉钉等
  5. Prometheus 自带的web ui界面提供PromQL查询语言,可查询监控数据
  6. Grafana可接入prometheus数据源,把监控数据以图形化形式展示出

6. Prometheus和Zabbix对比

前面的文章中,我们介绍了zabbix,同为监控软件的prometheus和zabbix,我们在生产环境中如何选择呢?

  1. 数据模型和查询语言
    Prometheus使用一个称为PromQL的查询语言来查询和处理时间序列数据。PromQL支持许多数据模型和查询功能,包括度量标准、标签和聚合函数。Zabbix使用自己的数据模型和查询语言,包括项、触发器和动作等概念。
  2. 存储方式
    Prometheus使用一种称为TSDB的时间序列数据库来存储时间序列数据。TSDB使用一种称为WAL的写前日志,以确保数据的可靠性。Zabbix使用关系型数据库来存储数据。
  3. 自动化和配置管理
    Prometheus具有自动化和自动配置的能力,它可以自动发现服务和指标,并对它们进行监控。Zabbix也提供了类似的功能,但需要手动配置。
  4. 可视化和警报
    Zabbix和Prometheus都支持可视化和警报功能。Zabbix提供了一个基于Web的前端界面,可以查看监控数据和设置警报。Prometheus通常与Grafana等工具一起使用,以实现更高级的可视化和警报功能。
  5. 性能和扩展性
    Prometheus在性能和扩展性方面表现良好,能够处理大规模的时间序列数据。Zabbix也具有良好的性能和扩展性,但在大规模监控方面可能需要更多的资源和配置。

在这里插入图片描述

总结:

  • Zabbix上手难度要低很多,对于传统的服务器、系统、网络等都有优秀的监控能力,但是定制化程度低且对于云原生产品的支持也不太好,适合对于监控方面要求不高、整体技术能力较弱的传统企业使用。
  • Prometheus是云原生时代的监控工具,因此对于Kubernetes等容器产品的支持非常友好,且定制化程度高。但是上手难度也会更大,因此更适合具有较好技术能力、监控需求复杂的互联网企业使用。
  • Zabbix 更加适合用于 本地计算机 的监控,而 Prometheus 更适合在现在流行的 云计算 监控上使用。

7. Prometheus的部署模式

7.1 基本高可用模式

基本的HA模式只能确保Promthues服务的可用性问题,但是不解决Prometheus Server之间的数据一致性问题以及持久化问题(数据丢失后无法恢复),也无法进行动态的扩展。因此这种部署方式适合监控规模不大,Promthues Server也不会频繁发生迁移的情况,并且只需要保存短周期监控数据的场景。
在这里插入图片描述

7.2 基本高可用+远程存储

在解决了Promthues服务可用性的基础上,同时确保了数据的持久化,当Promthues Server发生宕机或者数据丢失的情况下,可以快速的恢复。 同时Promthues Server可能很好的进行迁移。因此,该方案适用于用户监控规模不大,但是希望能够将监控数据持久化,同时能够确保Promthues Server的可迁移性的场景。
在这里插入图片描述

7.3 基本HA + 远程存储 + 联邦集群方案

Promthues的性能瓶颈主要在于大量的采集任务,因此用户需要利用Prometheus联邦集群的特性,将不同类型的采集任务划分到不同的Promthues子服务中,从而实现功能分区。例如,一个Promthues Server负责采集基础设施相关的监控指标,另外一个Prometheus Server负责采集应用监控指标。再有上层Prometheus Server实现对数据的汇聚。
在这里插入图片描述

8. Prometheus能监控什么

# Databases---数据库Aerospike exporterClickHouse exporterConsul exporter (official)Couchbase exporterCouchDB exporterElasticSearch exporterEventStore exporterMemcached exporter (official)MongoDB exporterMSSQL server exporterMySQL server exporter (official)OpenTSDB ExporterOracle DB ExporterPgBouncer exporterPostgreSQL exporterProxySQL exporterRavenDB exporterRedis exporterRethinkDB exporterSQL exporterTarantool metric libraryTwemproxy
# Hardware related---硬件相关apcupsd exporterCollins exporterIBM Z HMC exporterIoT Edison exporterIPMI exporterknxd exporterNetgear Cable Modem ExporterNode/system metrics exporter (official)NVIDIA GPU exporterProSAFE exporterUbiquiti UniFi exporter
# Messaging systems---消息服务Beanstalkd exporterGearman exporterKafka exporterNATS exporterNSQ exporterMirth Connect exporterMQTT blackbox exporterRabbitMQ exporterRabbitMQ Management Plugin exporter
# Storage---存储Ceph exporterCeph RADOSGW exporterGluster exporterHadoop HDFS FSImage exporterLustre exporterScaleIO exporter
# HTTP---网站服务Apache exporterHAProxy exporter (official)Nginx metric libraryNginx VTS exporterPassenger exporterSquid exporterTinyproxy exporterVarnish exporterWebDriver exporter
# APIsAWS ECS exporterAWS Health exporterAWS SQS exporterCloudflare exporterDigitalOcean exporterDocker Cloud exporterDocker Hub exporterGitHub exporterInstaClustr exporterMozilla Observatory exporterOpenWeatherMap exporterPagespeed exporterRancher exporterSpeedtest exporter
# Logging---日志Fluentd exporterGoogle's mtail log data extractorGrok exporter
# Other monitoring systemsAkamai Cloudmonitor exporterAlibaba Cloudmonitor exporterAWS CloudWatch exporter (official)Cloud Foundry Firehose exporterCollectd exporter (official)Google Stackdriver exporterGraphite exporter (official)Heka dashboard exporterHeka exporterInfluxDB exporter (official)JavaMelody exporterJMX exporter (official)Munin exporterNagios / Naemon exporterNew Relic exporterNRPE exporterOsquery exporterOTC CloudEye exporterPingdom exporterscollector exporterSensu exporterSNMP exporter (official)StatsD exporter (official)
# Miscellaneous---其他ACT Fibernet ExporterBamboo exporterBIG-IP exporterBIND exporterBitbucket exporterBlackbox exporter (official)BOSH exportercAdvisorCachet exporterccache exporterConfluence exporterDovecot exportereBPF exporterEthereum Client exporterJenkins exporterJIRA exporterKannel exporterKemp LoadBalancer exporterKibana ExporterMeteor JS web framework exporterMinecraft exporter modulePHP-FPM exporterPowerDNS exporterPresto exporterProcess exporterrTorrent exporterSABnzbd exporterScript exporterShield exporterSMTP/Maildir MDA blackbox proberSoftEther exporterTransmission exporterUnbound exporterXen exporter
# Software exposing Prometheus metrics---Prometheus度量指标App Connect EnterpriseBallerinaCephCollectdConcourseCRG Roller Derby Scoreboard (direct)Docker DaemonDoorman (direct)Etcd (direct)FlinkFreeBSD KernelGrafanaJavaMelodyKubernetes (direct)Linkerd

9. Prometheus对kubernetes的监控

对于Kubernetes而言,我们可以把当中所有的资源分为几类:

  • 基础设施层(Node):集群节点,为整个集群和应用提供运行时资源
  • 容器基础设施(Container):为应用提供运行时环境
  • 用户应用(Pod):Pod中会包含一组容器,它们一起工作,并且对外提供一个(或者一组)功能
  • 内部服务负载均衡(Service):在集群内,通过Service在集群暴露应用功能,集群内应用和应用之间访问时提供内部的负载均衡
  • 外部访问入口(Ingress):通过Ingress提供集群外的访问入口,从而可以使外部客户端能够访问到部署在Kubernetes集群内的服务

因此,如果要构建一个完整的监控体系,我们应该考虑,以下5个方面:

  • 集群节点状态监控:从集群中各节点的kubelet服务获取节点的基本运行状态;
  • 集群节点资源用量监控:通过Daemonset的形式在集群中各个节点部署Node Exporter采集节点的资源使用情况;
  • 节点中运行的容器监控:通过各个节点中kubelet内置的cAdvisor中获取个节点中所有容器的运行状态和资源使用情况;
  • 如果在集群中部署的应用程序本身内置了对Prometheus的监控支持,那么我们还应该找到相应的Pod实例,并从该Pod实例中获取其内部运行状态的监控指标。
  • 对k8s本身的组件做监控:apiserver、scheduler、controller-manager、kubelet、kube-proxy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/82317.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp-滑块验证组件wo-slider

wo-slider是一款支持高度自定义的滑块验证组件,采用uniapp-vue2编写 采用touchstart、touchmove、touchend事件实现的滑块组件,支持H5、微信小程序(其他小程序未试过,可自行尝试) 可到插件市场下载尝试: https://ext.…

目标检测笔记(十一):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)

文章目录 背景代码结果 背景 由于我们在做项目的时候可能会涉及到某个指定区域进行目标检测或者人脸识别等任务,所以这篇博客是为了探究如何在传统目标检测的基础上来结合特定区域进行检测,以OpenCV自带的包为例。 一般来说有两种方式实现区域指定&…

CSS3盒模型+flex

1.盒模型 标准盒模型: wwidthpaddingborderhheightpaddingborder 怪异盒模型(ie盒模型) wwidth包含了(paddingborder)hheight包含了(paddingborder) 2.CSS3弹性盒(重点新版弹性盒) 弹性盒: 设置为弹性盒后,父元素为容器,子元素为项目弹性盒中存在两根轴,默认水平为主轴,垂…

PHP“牵手”拼多多商品详情数据获取方法,拼多多API接口批量获取拼多多商品详情数据说明

拼多多商品详情接口 API 是开放平台提供的一种 API 接口,它可以帮助开发者获取拼多多商品的详细信息,包括商品的标题、描述、图片等信息。在拼多多电商平台的开发中,拼多多详情接口 API 是非常常用的 API,因此本文将详细介绍拼多多…

Android studio 2022.3.1 鼠标移动时不显示快速文档

在使用技术工具的过程中,我们时常会遇到各种各样的问题和挑战。最近,我升级了我的Android Studio到2022.3.1版本,但是在使用过程中,我碰到了一个让我颇为困扰的问题:在鼠标移动到类名或字段上时,原本应该显…

基于数据湖的多流拼接方案-HUDI概念篇

目录 一、为什么需要HUDI? 1. 传统技术选型存在哪些问题? 2. Hudi有什么优点? 基于 Hudi Payload 机制的多流拼接方案: 二、HUDI的应用场景 1. 什么场景适合使用hudi? 2. 什么场景不适合使用hudi? …

vue实现表格的动态高度

需求:表格能够根据窗口的大小自动适配页面高度 防抖和节流函数的使用场景是当需要对频繁触发的事件进行限制时,例如: 防抖函数常用于限制用户在短时间内多次触发某一事件,例如搜索框输入并搜索,当用户一直在输入时,我们可以使用防抖函数来避免多次请求搜索结果,减轻服…

c#扩展方法的使用

扩展方法可以向现有类型“添加”方法,无需创建新的派生类型、重新编译或以其他方式修改原始类型,用起来很方便,下面是我写的例子,为string这个常用的类型添加一个showmes方法,以下是扩展方法的代码: public…

Tomcat的安装与介绍

首先我们先了解一下什么是服务器?什么是服务器软件? 什么是服务器?安装了服务器软件的计算机。 什么是服务器软件? 服务器软件是一种运行在服务器操作系统上,用于接收和处理客户端请求,并提供相应服务和资…

自动化测试之Junit

Junit引入注解参数化单参数多参数方法传参 测试用例执行顺序断言测试套件 Junit引入 Junit来编写和组织自动化测试用例,使用Selenium来实际模拟用户与Web应用程序的交互。也就是使用JUnit的测试功能来管理和运行Selenium测试。常见的做法是,使用JUnit作…

【Linux】权限问题

Linux权限 一、Linux 权限的概念二、Linux 权限管理1. 文件访问者的分类2. 文件类型和访问权限(事物属性)3. 文件访问权限的相关设置方法 三、默认权限1. 对文件和目录进行操作需要的权限2. 文件和目录的默认权限3. 粘滞位 一、Linux 权限的概念 Linux …

windows窗口背景色修改方法

windows也不知道什么时候将notepad, word, vs的背景色由白色变成了浅绿色,用了一段时间没去改觉得麻烦,就一直用下去了,今天有时间找了下方法改回了白色。 1. 被动默认浅绿色效果 2. 修改注册表. 保存,重启电脑. 3. 恢复如初.