Prometheus介绍

news2024/11/13 15:03:03

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 exporter
    ClickHouse exporter
    Consul exporter (official)
    Couchbase exporter
    CouchDB exporter
    ElasticSearch exporter
    EventStore exporter
    Memcached exporter (official)
    MongoDB exporter
    MSSQL server exporter
    MySQL server exporter (official)
    OpenTSDB Exporter
    Oracle DB Exporter
    PgBouncer exporter
    PostgreSQL exporter
    ProxySQL exporter
    RavenDB exporter
    Redis exporter
    RethinkDB exporter
    SQL exporter
    Tarantool metric library
    Twemproxy
# Hardware related---硬件相关
    apcupsd exporter
    Collins exporter
    IBM Z HMC exporter
    IoT Edison exporter
    IPMI exporter
    knxd exporter
    Netgear Cable Modem Exporter
    Node/system metrics exporter (official)
    NVIDIA GPU exporter
    ProSAFE exporter
    Ubiquiti UniFi exporter
# Messaging systems---消息服务
    Beanstalkd exporter
    Gearman exporter
    Kafka exporter
    NATS exporter
    NSQ exporter
    Mirth Connect exporter
    MQTT blackbox exporter
    RabbitMQ exporter
    RabbitMQ Management Plugin exporter
# Storage---存储
    Ceph exporter
    Ceph RADOSGW exporter
    Gluster exporter
    Hadoop HDFS FSImage exporter
    Lustre exporter
    ScaleIO exporter
# HTTP---网站服务
    Apache exporter
    HAProxy exporter (official)
    Nginx metric library
    Nginx VTS exporter
    Passenger exporter
    Squid exporter
    Tinyproxy exporter
    Varnish exporter
    WebDriver exporter
# APIs
    AWS ECS exporter
    AWS Health exporter
    AWS SQS exporter
    Cloudflare exporter
    DigitalOcean exporter
    Docker Cloud exporter
    Docker Hub exporter
    GitHub exporter
    InstaClustr exporter
    Mozilla Observatory exporter
    OpenWeatherMap exporter
    Pagespeed exporter
    Rancher exporter
    Speedtest exporter
# Logging---日志
    Fluentd exporter
    Google's mtail log data extractor
    Grok exporter
# Other monitoring systems
    Akamai Cloudmonitor exporter
    Alibaba Cloudmonitor exporter
    AWS CloudWatch exporter (official)
    Cloud Foundry Firehose exporter
    Collectd exporter (official)
    Google Stackdriver exporter
    Graphite exporter (official)
    Heka dashboard exporter
    Heka exporter
    InfluxDB exporter (official)
    JavaMelody exporter
    JMX exporter (official)
    Munin exporter
    Nagios / Naemon exporter
    New Relic exporter
    NRPE exporter
    Osquery exporter
    OTC CloudEye exporter
    Pingdom exporter
    scollector exporter
    Sensu exporter
    SNMP exporter (official)
    StatsD exporter (official)
# Miscellaneous---其他
    ACT Fibernet Exporter
    Bamboo exporter
    BIG-IP exporter
    BIND exporter
    Bitbucket exporter
    Blackbox exporter (official)
    BOSH exporter
    cAdvisor
    Cachet exporter
    ccache exporter
    Confluence exporter
    Dovecot exporter
    eBPF exporter
    Ethereum Client exporter
    Jenkins exporter
    JIRA exporter
    Kannel exporter
    Kemp LoadBalancer exporter
    Kibana Exporter
    Meteor JS web framework exporter
    Minecraft exporter module
    PHP-FPM exporter
    PowerDNS exporter
    Presto exporter
    Process exporter
    rTorrent exporter
    SABnzbd exporter
    Script exporter
    Shield exporter
    SMTP/Maildir MDA blackbox prober
    SoftEther exporter
    Transmission exporter
    Unbound exporter
    Xen exporter
# Software exposing Prometheus metrics---Prometheus度量指标
    App Connect Enterprise
    Ballerina
    Ceph
    Collectd
    Concourse
    CRG Roller Derby Scoreboard (direct)
    Docker Daemon
    Doorman (direct)
    Etcd (direct)
    Flink
    FreeBSD Kernel
    Grafana
    JavaMelody
    Kubernetes (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.coloradmin.cn/o/932183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索图结构:从基础到算法应用

文章目录 理解图的基本概念学习图的遍历算法学习最短路径算法案例分析:使用 Dijkstra 算法找出最短路径结论 🎉欢迎来到数据结构学习专栏~探索图结构:从基础到算法应用 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:I…

C++:构造方法(函数);拷贝(复制)构造函数:浅拷贝、深拷贝;析构函数。

1.构造方法(函数) 构造方法是一种特殊的成员方法,与其他成员方法不同: 构造方法的名字必须与类名相同; 无类型、可有参数、可重载 会自动生成,可自定义 一般形式:类名(形参); 例: Stu(int age); 当用户没自定义构造方法时&…

Linux——基础IO(2)及动静态库多种方式使用及制作

目录 0. 前言 1. 文件存储设备—磁盘 1.1 文件及存储介质 1.2 磁盘结构 1.3 磁盘存储结构 1.4 磁盘的抽象(虚拟、逻辑)结构 1.5 磁盘分区管理 2. 理解文件系统 2.1 Linux磁盘文件管理 2.2 文件inode属性及Data block数据追溯 2.3 inode编号及…

网络安全(黑客)自学——日薪2700

以下是练习舞蹈时长两年半的苕皮哥的故事 你想想一个跨专业的自学三个月都能拿到日薪2700,你上你也行,那么接下来就是我给大家,整理的网络安全学习思路,让大家斩获高薪! 前言: 想自学网络安全(黑…

DataFrame.plot函数详解(四)

DataFrame.plot函数详解(四) 1. area DataFrame.plot.area(xNone, yNone, stackedTrue, **kwargs) df pd.DataFrame({sales: [3, 2, 3, 9, 10, 6],signups: [5, 5, 6, 12, 14, 13],visits: [20, 42, 28, 62, 81, 50], }, indexpd.date_range(start2020…

【算法系列篇】前缀和

文章目录 前言什么是前缀和算法1.【模板】前缀和1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 【模板】二维前缀和2.1 题目要求2.2 做题思路2.3 Java代码实现 3. 寻找数组的中心下标3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 除自身以外的数组的乘积4.1 题目要求4.2 做题思…

Linux学习之Ubuntu 20中OpenResty的nginx目录里内容和配置文件

参考的文章是《nginx配置详解》 可以参考我以前的文章安装OpenResty。 cd /usr/local/openresty切换目录,ls -l查看目录里边的内容。 我的系统中,nginx目录是/usr/local/openresty/nginx,在这个目录里边有一些目录,如下&#xff…

二进制数间按位逻辑运算按位逻辑与、逻辑或运算bitwise_and()bitwise_or()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 二进制数间按位逻辑运算 按位逻辑与、逻辑或运算 bitwise_and() bitwise_or() [太阳]选择题 下列代码最后一次输出的结果是? import numpy as np a, b 3, 8 print("…

linux————haproxy

一、概述 HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上(CentOS、Ubuntu、Debian、OpenSUSE、Fedora、麒麟、欧拉、UOS)。 HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy具…

小研究 - JVM 逃逸技术与 JRE 漏洞挖掘研究(三)

Java语言是最为流行的面向对象编程语言之一, Java运行时环境(JRE)拥有着非常大的用户群,其安全问题十分重要。近年来,由JRE漏洞引发的JVM逃逸攻击事件不断增多,对个人计算机安全造成了极大的威胁。研究JRE安…

HLS实现CORDIC算法计算正余弦并上板验证

硬件:ZYNQ7010 软件:MATLAB 2019b、Vivado 2017.4、HLS 2017.4、System Generator 2017.4 1、CORDIC算法计算正余弦 CORDIC算法详细分析网上有很多资料,它的主要思想是用一系列旋转去逼近目标角度,这一系列旋转的角度为 θ a r…

思乐直播系统短视频直播系统源码 直播短视频平台系统APP源码多功能后台系统

思乐直播系统,集直播、短视频等功能,根据市场趋势开发并推出思乐直播APP,APP功能丰富且可在后台管理系统进行配置,做到按需求来开启功能。APP使用起来方便快捷,随时随地开启直播、分享短视频。 整个系统具备非常完善、…

【C++杂货铺】探索vector的底层实现

文章目录 一、STL1.1 什么是STL?1.2 STL的版本1.3 STL的六大组件 二、vector的介绍及使用2.1 vector的介绍2.2 vector的使用2.2.1 vector的定义2.2.2 vector iterator2.2.3 vector空间增长问题2.2.4 vector增删查改 2.3 vector\<char\> 可以替代 string 嘛&#xff1f; …

垃圾识别工具箱、ChatGPT聊天微信小程序、大型商城电商源码

一、识别垃圾分类应用 垃圾识别工具箱微信小程序源码 前端&#xff1a;微信小程序 采用 uni-app 开发框架&#xff0c;uni-app 是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到iOS、Android、H5、以及各种小程序&#xff08;微信…

RetNet或成Transformer继承者?通向更快、更强、更经济的基础架构

导读 在计算机科学的发展史上&#xff0c;硬件算力、算法程序与计算数据总是螺旋上升。在硬件相同的条件下&#xff0c;算法的效率和优化程度决定了其利用硬件资源的能力&#xff0c;从而直接影响计算机的算力。因此&#xff0c;为了提升计算机系统带来的综合效益&#xff0c;计…

C++:基础

目录 1.C关键字 2.命名空间 1.命名空间定义 2.命名空间的使用 3.C输入与输出 4.缺省参数 1.缺省参数的概念 2.缺省参数的分类 5.函数重载 1.函数重载概念 2.为什么C支持函数重载&#xff0c;C语言不支持&#xff1f; 6.引用 1.引用的概念 2.引用的特性 3.常引用…

重要通知:9月1日起,微信小程序须完成备案后才可上架

微信官方通知 近日&#xff0c;工信部发布了《工业和信息化部关于开展移动互联网应用程序备案工作的通知》&#xff0c;8月9日&#xff0c;微信公众平台也发布了“关于开展微信小程序备案的通知”&#xff1a; 一、备案必要性 在中华人民共和国境内从事互联网信息服务的移动互…

隐式表达的更进一步:基于NeRF的形状可编辑方法

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 [paper]&#xff1a;https://arxiv.org/pdf/2303.09554 [code]&#xff1a;https://ktertikas.github.io/part_nerf 主要贡献&#xff1a; 设计了 PartNeRF&#xff0c;这是一种新颖的部件感知生成模型&…

idea上利用JDBC连接MySQL数据库(8.1.0版)

1.了解jdbc概念 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API&#xff0c;可以为多种 关系数据库提供统一访问&#xff0c;它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准&#xff0c;据此可以构建 更高级的工具和接口&#…

MAVEN利器:一文带你了解IDEA中如何使用Maven

前言&#xff1a; 强大的构建工具——Maven。作为Java生态系统中的重要组成部分&#xff0c;Maven为开发人员提供了一种简单而高效的方式来构建、管理和发布Java项目。无论是小型项目还是大型企业级应用&#xff0c;Maven都能帮助开发人员轻松处理依赖管理、编译、测试和部署等…