草庐IT

【2023】Prometheus-相关知识点(面试点)

丶重明 2023-10-22 原文

目录

架构图:

1.Prometheus

1.1.什么是Prometheus

Prometheus是一款开源的监控系统,由SoundCloud开发,用于收集、存储和查询时间序列数据,其数据模型是基于键-值对的时序数据

1.2.Prometheus的工作流程

  • Prometheus server 定期从配置的targets中拉取metrics数据,并存储在本地的时间序列数据库中。
  • Prometheus会根据用户定义的规则对这些时间序列进行计算、聚合,并触发警报通知用户。
  • Prometheus收集的数据回在其内置的web UI中或grafana中提供可视化功能。

1.3.Prometheus的组件有哪些

  • Prometheus Server:Prometheus服务器
  • Client Libraries:检测应用程序代码的客户端库
  • Push Gateway:用于支持短期临时或批量计划任务工作的数据汇聚节点
  • Alertmanager:用于告警
  • Exporter:收集监控样本数据

1.4.Prometheus有什么特点

  • 通过PromQL实现多维度数据模型的灵活查询。
  • 定义了开放指标数据的标准,自定义探针(如Exporter等),编写简单方便。
  • PushGateway组件让这款监控系统可以接收监控数据。
  • 提供了VM和容器化的版本。

1.5.Metric的几种类型?分别是什么?

有四种

  • counter:其值从0开始只能增加,不会减少;重启进程后,会被重置;适用于跟踪事件的数量或大小,可以用来记录服务的请求次数、任务完成数、错误发生次数。
  • gauge:是一种常规指标,反映系统当前状态的快照,是对一个值的瞬时测量。
  • histogram:用于表示在一段时间范围内对数据进行采样,对指定区间以及总数进行分组统计。
  • summary:常用于跟踪与时间相关的数据。

1.6.Prometheus的优点和缺点

  • 优点:支持多语言客户端;支持本地和第三方远程存储,单机性能强劲;高效存储,平均一个采样数据占用3.5B左右;可扩展性强;精确告警;支持静态文件配置和动态发现等自动发现机制等
  • 缺点:不适合存储事件或者日志;不会针对大量的历史数据进行存储等

1.7.Prometheus怎么采集数据

Prometheus调用HTTP GET请求或metrics数据接口获取数据。

1.8.Prometheus怎么获取采集对象

通过静态和动态两种方式;静态配置是一种传统的服务发现方式,适用于固定的监控环境、IP地址和统一服务接口场景;动态发现方式适用于云环境使用。

1.9.Prometheus的配置文件组成

Prometheus配置文件由以下几部分组成:

  • global:用于定义全局变量和设置相关参数
  • rule:用于定义报警规则和报警条件
  • alertmanager:用于定义报警器的配置信息
  • scrape:用于定义收集数据的配置信息

1.10.Prometheus有什么高可用方案

  • 多实例Prometheus:相同的配置,共同接收处理数据,可搭配负载均衡使用
  • 多实例+远程存储:解决了上条架构存在的数据一致性、持久化、迁移性、扩展性等问题
  • 联邦集群:可以将监控采集任务以分治法的形式划分给不同的Prometheus实例分别进行处理,以实现功能分区,这种架构有利于水平扩展
  • thanos集群:Thanos和 Prometheus无缝集成,并为 Prometheus带来了全局视图和不受限制的历史数据存储能力

1.11.Prometheus有哪几种服务发现

  • 基于文件服务发现
  • 基于consul服务发现
  • 基于DNS的服务发现

1.12.Prometheus怎么监控k8s

通过kubernetes API来监控k8s集群,可以监控k8s组件和应用程序运行状态,收集k8s集群指标存储在prometheus服务器中。

2.alertmanager

2.1.alertmanager是什么

alertmanager是一款开源的告警管理工具,可以聚合来自Prometheus服务器的告警,并将其发送到用户指定的接收者。

2.2.alertmanager处理告警的流程

从源接收告警然后将其聚合为单个通知,接着对告警进行路由,将其发送到配置的通知目标,还可以对告警进行处理,例如抑制和延迟。

2.3.alertmanager怎么实现高可用

通过Gssip机制为多个alertmanager之间提供了信息传递的机制,确保及时在多个Alertmanager分别接收到相同告警信息的情况下,也只有一个告警通知被发送给Receiver。
实现方式是通过配置启动参数。

3.exporter

3.1.exporter的类型

  • 直接采集型:这类Exporter直接内置了相应的应用程序,用于向Prometheus直接提供Target数据支持,例如cAdvisor、Kubernetes等
  • 间接采集型:原始监控目标并不直接支持Prometheus,需要我们使用Prometheus提供的Client Library编写该监控目标的监控采集程序,如:Node exporter

3.2.什么是白盒监控

需要把对应的Exporter程序安装到被监控的目标主机上,从而实现对主机各种资源及其状态的数据采集工作的方式叫做白盒监控。

3.3.什么是黑盒监控

无法直接通过安装exporter监控到目标,Blackbox Exporter无须安装在被监控的目标环境中,用户只需要将其安装在与Prometheus和被监控目标互通的环境中,通过HTTP、HTTPS、DNS、TCP、ICMP等方式对网络进行探测监控,还可以探测SSL证书过期时间。

4.pushgateway

4.1.pushgateway是什么

Pushgateway是一个独立的服务组件,可在HTTP REST API上接收Prometheus指标,位于发送指标的应用服务程序和Prometheus服务器之间。Pushgateway接收指标,然后将其作为目标进行抓取,以便将指标提供给Prometheus服务器。

4.2.pushgateway能做什么

用于处理Prometheus无法直接去拉取各个目标的监控数据,目标资源的生命周期太短,目标资源没有可以抓取的端点等情况

4.2.pushgateway有什么缺点

  • 单点故障,可能出现性能瓶颈
  • 会丧失Prometheus通过UP监控指标检查实例健康状况的功能
  • Pushgateway会对推送给它的所有监控数据进行持久化,即使被监控服务已经下线销毁了,Prometheus还是会获取到过期的历史监控数据

有关【2023】Prometheus-相关知识点(面试点)的更多相关文章

  1. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  2. 华为OD机试用Python实现 -【明明的随机数】 2023Q1A - 2

    华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o

  3. ruby-on-rails - 在具有 ActiveRecord 条件的相关模型中按字段排序 - 2

    我正在尝试按Rails相关模型中的字段进行排序。我研究的所有解决方案都没有解决如果相关模型被另一个参数过滤?元素模型classItem相关模型:classPriority我正在使用where子句检索项目:@items=Item.where('company_id=?andapproved=?',@company.id,true).all我需要按相关表格中的“位置”列进行排序。问题在于,在优先级模型中,一个项目可能会被多家公司列出。因此,这些职位取决于他们拥有的company_id。当我显示项目时,它是针对一个公司的,按公司内的职位排序。完成此任务的正确方法是什么?感谢您的帮助。PS-我

  4. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  5. ruby - 使用指向 ruby​​ 可执行文件的符号链接(symbolic link)时查找相关库 - 2

    假设您有一个可执行文件foo.rb,其库bar.rb的布局如下:/bin/foo.rb/lib/bar.rb在foo.rb的header中放置以下要求以在bar.rb中引入功能:requireFile.dirname(__FILE__)+"../lib/bar.rb"只要对foo.rb的所有调用都是直接的,这就可以正常工作。如果你把$HOME/project和符号链接(symboliclink)foo.rb放入$HOME/usr/bin,然后__FILE__解析为$HOME/usr/bin/foo.rb,因此无法找到bar.rb关于foo.rb的目录名.我意识到像ruby​​gems这

  6. 华为OD机试真题 C++ 实现【带传送阵的矩阵游离】【2023 Q2 | 200分】 - 2

            所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录题目n行m列的矩阵,每个位置上有一个元素你可以上下左右行走,代价是前后两个位置元素值差的绝对值.另外,你最多可以使用一次传送阵(只能从一个数跳到另外一个相同的数)求从走上角走到右下角最少需要多少时间。输入描述:第一行两个整数n,m,分别代表矩阵的行和列。后面n行,每行m个整数,分别代表矩阵中的元素。输出描述:一个整数,表示最少需要多少时间。

  7. HarmonyOS原子化服务开发相关术语 - 2

    术语中文解释Ability原子化服务帮助用户完成任务的原子化服务,和用户的意图进行关联。Fulfillment服务履行通过图标,卡片,语音等形式呈现用户意图。开发者通过接口的方式,处理用户意图,返回内容。Intent意图用于表达用户想要达成的目标或完成的任务。HUAWEIAssistant智能助手“无微不智”的个人助手,通过不断的学习用户的使用习惯,不断的为用户提供贴心的精准的便捷的个性化服务。AISearch全局搜索用户可快速搜索关键词,与之匹配的原子化服务则会出现在搜索结果中。SmartService智慧服务用户订阅原子化服务,在到达特定触发条件(时间、地点、事件)后,卡片推送至用户智能助

  8. H2数据库配置及相关使用方式一站式介绍(极为详细并整理官方文档) - 2

    目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式

  9. ruby-on-rails - 旧的 Ruby 错误在我的 Ruby on Rails 应用程序中反复出现,与 Class.create 和 delayed_job 相关 - 2

    这个错误已经有好几个月了,在这里:http://www.ruby-forum.com/topic/1094002其中显示代码更改的两个链接:https://github.com/godfat/ruby/commit/f4e0e8f781b05c767ad2472a43a4ed0727a75708https://github.com/godfat/ruby/commit/c7a6cf975d88828c2ed27d253f41c480f9b66ad6我有Ruby1.9.2和rvm。我会把这些更改粘贴到适当的文件中,但我不知道如何粘贴。这在几天前就奏效了。我不能像这样执行RubyonRai

  10. IDEA 2023.1 正式发布,新特性简介 - 2

     昨晚看到IDEA官推宣布IntelliJIDEA2023.1正式发布了。简单看了一下,发现这次的新版本包含了许多改进,进一步优化了用户体验,提高了便捷性。至于是否升级最新版本完全是个人意愿,如果觉得新版本没有让自己感兴趣的改进,完全就不用升级,影响不大。软件的版本迭代非常正常,正确看待即可,不持续改进就会慢慢被淘汰!根据官方介绍:IntelliJIDEA2023.1针对新的用户界面进行了大量重构,这些改进都是基于收到的宝贵反馈而实现的。官方还实施了性能增强措施,使得Maven导入更快,并且在打开项目时IDE功能更早地可用。由于后台提交检查,新版本提供了简化的提交流程。IntelliJIDEA

随机推荐