Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从指标到洞察力的普罗米修斯监控

从指标到洞察力的普罗米修斯监控

作者头像
宋小生
发布于 2023-02-28 02:34:29
发布于 2023-02-28 02:34:29
1.8K00
代码可运行
举报
文章被收录于专栏:新技术新技术
运行总次数:0
代码可运行

简介

为什么需要Prometheus?

普罗米修斯官网的首页简单的对普罗米修斯做了定义:从指标到洞察力

普罗米修斯通过领先的开源监控解决方案为用户的指标和告警提供强大的支持。

可以看到普罗米修斯是领先的开源的、也是一种监控解决方案、支持用户指标告警等需求。

使用普罗米修斯可以有效的解决在云原生时代下的指标埋点,服务异常监控等需求,比如:

  • 借助时序数据库存储海量多维度指标数据 ,使用PromQL进行指标数据查询,聚合分析或者Grafana这样的图形化页面展示指标数据。
  • 传统监控的异常监控需求,也就是监控那些我们知道某个地方可能会出现问题但是又不知道何时会出现问题(Know-Unknow)的地方。
  • 云原生时代服务快速的重启发布,自动弹性扩缩容,面对海量容器POD频繁变化,每次地址发生了变化修改配置肯定是不现实的,普罗米修斯通过及时感知的服务发现模型来解决云原生时代大规模服务发现问题。

当然作为云原生优秀的监控系统,并不仅仅可以解决这里罗列的问题,普罗米修斯生态庞大,在云原生时代为可观测性的指标埋点提供了足够的铺垫

后续通过一些可观测性技术深度串联分析链路和日志数据通过故障预测,根因分析可以有效的解决我们不知道会出现问题的地方和不知道何时会出现问题的地方(Unknow-Unknow)

普罗米修斯不仅仅可以洞察主机层的指标信息,也可以深度通过系统指标埋点深度洞察系统内部的健康状态,那具体怎么做呢?可以继续往下看。

起源

普罗米修斯是由SoundCloud开发的开源监控告警系统,是Google BorgMon监控系统的开源版本。2016年,由Google发起的Linux基金会旗下的原生云基金会CNCF(Cloud Native Computing Foundation)将Prometheus纳入其第二大开源项目(第一大开源项目是kunernetes)。

2012年开源的普罗米修斯监控系统从开源到现在经过了数十年的打磨具备如下特性:

可以看到普罗米修斯在多维度指标监控告警等方面拥有强大的支持。

下面就进入正题,从普罗米修斯的架构到入门案例来看下如何使用普罗米修斯进行服务指标监控。

架构

下面就直接来看下Prometheus 的架构及其一些生态系统组件:

这个图完整的体现了普罗米修斯从发现服务,采集数据,到监控告警分析数据的整个过程:

初步了解了普罗米修斯的一些概念,想要优雅的使用普罗米修斯监控还需要我们了解一些常见术语,下面可以看下。

常见术语

下面列举一些我们常用的术语说明:

Meters(指标)

用外行的话来说,指标是数字测量。时间序列意味着随着时间的推移记录变化。用户想要测量的内容因应用程序而异。对于 Web 服务器,它可能是请求时间,对于数据库,它可能是活动连接数或活动查询数等。

Collector(收集器)

收集器是代表一组指标的导出器的一部分。如果它是直接检测的一部分,则它可能是单个指标;如果它是从另一个系统提取指标,则它可能是多个指标。

Endpoint(端点)

可以抓取的指标来源,通常对应于单个进程。

Exporter(导出器)

导出器是与您要从中获取指标的应用程序一起运行的二进制文件。导出器公开 普罗米修斯 指标,通常是将以非 普罗米修斯 格式公开的指标转换为 普罗米修斯 支持的格式。

PromQL(普罗米修斯查询语言)

PromQL是普罗米修斯查询语言。它允许进行广泛的操作,包括聚合、切片和切块、预测和连接。

Pushgateway(推送网关)

Pushgateway保留来自批处理作业的最新指标推送。这允许 普罗米修斯 在它们终止后抓取它们的指标(实时性较高可以先缓存在推送网关中后续由普罗米修斯拉取。

Sample(样本)

样本是时间序列中某个时间点的单个值。在 普罗米修斯 中,每个样本都包含一个 float64 值和一个毫秒精度的时间戳。

The Four Golden Signals(四大黄金信号)

Google SRE中提到的概念,监控的四个黄金信号是延迟、流量、错误和饱和度。如果您只能衡量面向用户的系统的四个指标,请关注这四个指标。原文链接如下:

https://sre.google/sre-book/monitoring-distributed-systems/

Black-Box Versus White-Box(黑盒与白盒)

Metric names and labels(指标名称和标签)

指标名称: 指定了被测系统的一般特征(例如http_requests_total- 接收到的 HTTP 请求总数

标签: 启用 Prometheus 的维度数据模型:相同指标名称的任何给定标签组合标识该指标的特定维度 实例(例如:所有使用处理程序方法POST的HTTP 请求/api/tracks)。查询语言允许基于这些维度进行过滤和聚合。更改任何标签值,包括添加或删除标签,都将创建一个新的时间序列。

METRIC TYPES(指标类型)

Prometheus 客户端库提供四种核心指标类型,用来解决不同指标差异区分,帮助用户理解和区分这些不同监控指标之间的差异,Prometheus 定义了 4 种不同的指标类型:Counter(计数器)Gauge(仪表盘)Histogram(直方图)Summary(摘要)

这里常见术语列举的相对还是比较多的,不过慢慢消化,下面就开始通过一个简单的案例来入门普罗米修斯的使用来实现对普罗米修斯自身的一些指标的暴漏与抓取。

入门示例

普罗米修的安装

这里演示环境为Centos7系统。

下载

登录服务器后,直接输入如下命令,从官方仓库下载压缩文件到本地,并解压。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@iZ8lgm9icspkthZ ~] wget https://github.com/prometheus/prometheus/releases/download/v2.41.0/prometheus-2.41.0.linux-amd64.tar.gz

[root@iZ8lgm9icspkthZ ~] tar -zxvf ./prometheus-2.41.0.linux-amd64.tar.gz

配置

打开prometheus.yml配置文件,可以看到配置文件里面默认文件如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# my global config 全局配置(如果有内部单独设定,会覆盖这个参数)
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. 默认15s 全局每次数据收集的间隔
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).  规则扫描时间间隔是15秒,

# Alertmanager configuration  告警插件定义。这里会设定alertmanager这个报警插件。
alerting:
  alertmanagers:
    - static_configs:
        - targets:
# - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.  告警规则。按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现。
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.  采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现
  - job_name: "prometheus"  #任务目标名,可以理解成分组,每个分组包含具体的target组员。

# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

启动服务

指定配置文件,同时后台运行服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./prometheus --config.file=prometheus.yml &

启动服务成功后可以看到如下info日志,普罗米修斯启动后监听了一个9090端口。

访问Dashboard

浏览器打开地址 http://当前服务器IP:9090 即可,可以看到如下可视化页面:

在菜单栏中找到服务发现地址如下:

指标查询

指标解析

指标查询这里提供两种方式,一种是直接在服务器上访问地址如下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl http://localhost:9090/metrics

查询后会得到普罗米修斯提供的指标类型,如下图:

可以看到这个图中存在一个指标名称为promhttp_metric_handler_requests_total的指标,#HELP中的内容为当前指标的描述,#TYPE中的内容是描述当前指标的类型,指标的详细格式为给定一个指标名称和一组标签,时间序列通常使用这种表示法来识别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<metric name>{<label name>=<label value>, ...}

关于指标的命名:前缀通常是指标类型名称,后缀必须有一个单位,更详细的指标命名规范可以参考如下链接:

https://prometheus.io/docs/practices/naming/

PromQL查询

让监控的数据会说话。日常数据查询、可视化及告警配置这三大功能模块都是依赖PromQL实现的,PromQL (Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,内置函数很多,在日常数据可视化以及rule 告警中都会使用到它。

这里我们介绍一些简单的语法。首先来看下表达式语言数据类型。

在 Prometheus 的表达式语言中,表达式或子表达式可以计算为四种类型之一:

PromQL 查询结果主要有 3 种类型:

瞬时数据 (Instant vector):

包含一组时序,每个时序只有一个点,例如:http_requests_totalhttp_requests_total{}

区间数据 (Range vector):

包含一组时序,每个时序有多个点,例如:http_requests_total[5m]

纯量数据 (Scalar):

纯量只有一个数字,没有时序,例如:count(http_requests_total)

了解了基本语法之后可以重新打开dashboard输入以下命令来111查询筛选标签中状态码为200的请求数据:promhttp_metric_handler_requests_total{code="200"} 查询结果如下图所示:

第一个图为表格展示列表数据

第二个图以图表形式展示

总结

完善的监控系统能够引导技术人员快速定位问题并解决,让监控告警先于用户发现问题的最佳手段。

Prometheus是基于指标的监控系统,是打造一站式通用监控架构的最佳方案之一,借助普罗米修斯监控系统可以尝试在开发之初就想好要需要为业务埋下哪些监控埋点。

当然也有人提出指标驱动开发(MDD)的开发理念,通过实时指标来驱动快速、精确和细粒度的软件迭代, 帮助我们更早地 发现问题明确目标

当然普罗米修斯也不是万能的,使用时也需要注意很多的注意事项,比如:

  • 如果Pushgateway从许多不同的来源收集指标时宕机,用户将失去对所有这些来源的监控,可能会触发许多不必要的告警。
  • Alertmanager是独立于Prometheus的一个告警组件,需要单独安装部署,Prometheus可以将多个Alertmanager配置为一个集群,通过服务发现动态发现告警集群中节点的上下,如下图:
  • 另外存储方面普罗米修斯并不是为了解决大容量存储问题,TB级以上数据建议保存到远端TSDB中,通常来说,InfluxDB在集群方面的表现更佳,但是InfluxDB的单机版本免费,而集群版本是收费的。
  • 作为时序数据库普罗米修斯不仅仅对系统时间的准确性要求很高,必须保证本机时间实时同步。另外还需要注意监控的高可用搭建,如果监控挂了一切系统将成为黑盒,即便系统出现了问题也无法及时发现,这里可以通过Prometheus中的3种常见的HA架构来保证高可用,分别是简单HA、基本HA+远程存储、基本HA+远程存储+联邦集等方式 配置。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 中间件源码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
普罗米修斯
Prometheus(普罗米修斯)是一套开源的监控系统,其基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,不需要任何 SDK 或者其他的集成过程,其架构如图:
六个核弹
2022/12/23
2.9K0
普罗米修斯
普罗米修斯 -- 基本使用
普罗米修斯是用 go 语言编写的软件并且利用了 go 语言的交叉编译特性编译成了纯二进制文件, 运行的时候不需要额外安装依赖。 直接从官网上下载就可以。 下载地址: https://prometheus.io/download/ 这里面除了普罗米修斯的主程序意外, 一些 额外的组件,比如 pushgateway, alertmanager 以及各种官方 exporter 的下载包都可以在这里找到。 由于我们现在部署普罗米修斯都是容器化部署的, 所以这里我选择用 docker 进行部署。
TesterHome小助手
2022/01/11
1.4K0
接近完美的监控系统—普罗米修斯
普罗米修斯(Prometheus)是一个SoundCloud公司开源的监控系统。当年,由于SoundCloud公司生产了太多的服务,传统的监控已经无法满足监控需求,于是他们在2012年决定着手开发新的监控系统,即普罗米修斯。
全栈程序员站长
2022/09/09
6.3K0
接近完美的监控系统—普罗米修斯
搞定Prometheus普罗米修斯监控系统
AAA公司是一家电商网站,由于公司的业务快速发展,公司要求对现有机器进行为业务监控,责成运维部门来实施这个项目。
全栈程序员站长
2022/09/09
6.1K0
搞定Prometheus普罗米修斯监控系统
普罗米修斯 -- 初识 PromQL
之前讲过普罗米修斯自己就是一个时序数据库, 它从 exporter 拉取的数据都会按时间戳保存到对应的文件里,这个时序数据库默认会保存 14 天的数据。 而它自己也开发了一套名为 PromQL 的类 SQL 的查询语言用来从各种维度让用户来查询并计算监控的数据。 我们先来看一下我自己编写的 exporter 的接口, 看看它向普罗米修斯的主服务返回的监控数据是什么样的。
TesterHome小助手
2022/01/12
1.8K0
搭建普罗米修斯Prometheus监控系统「建议收藏」
Prometheus(由go语言(golang)开发)是一套开源的监控&报警&时间序列数据库的组合。适合监控docker容器。因为K8S的流行带动了Prometheus的发展。
全栈程序员站长
2022/09/09
9.1K0
搭建普罗米修斯Prometheus监控系统「建议收藏」
普罗米修斯Prometheus监控神器
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/161742.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/09
2K0
一文搞懂Prometheus、Grafana(含腾讯云上实战)
通常来说,对于一个运行时的复杂系统,如果系统出了问题是很难排查的。因为你是不太可能在运行时一边检查代码一边调试的。因此,你需要在各种关键点加上监控,通过监控获取的数据,指导我们进一步工作,解决问题。
yuann
2021/01/06
58.2K2
一文搞懂Prometheus、Grafana(含腾讯云上实战)
普罗米修斯 -- HTTP API 调用 PromQL
Prometheus API 使用了 JSON 格式的响应内容。 当 API 调用成功后将会返回查询结果。所有的 API 请求均使用以下的 JSON 格式:
TesterHome小助手
2022/01/20
4.2K0
什么是 Promethues | 普罗米修斯( 集群监控系统 )
3、prometheus根据配置定时去拉取各个节点的数据,默认使用的拉取方式是pull
全栈程序员站长
2022/09/09
2.4K0
什么是 Promethues | 普罗米修斯( 集群监控系统 )
Prometheus(普罗米修斯)监控系统「建议收藏」
Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,由 SoundCloud 公司开发。
全栈程序员站长
2022/09/09
1.9K0
Prometheus入门
Prometheus(普罗米修斯) 是一种 新型监控告警工具,Kubernetes 的流行带动了 Prometheus 的应用。
fliter
2023/09/05
2560
Prometheus入门
监控利器:普罗米修斯介绍和安装
我们的程序想要稳定的运行,或者说当出现问题时能第一时间知道,这就离不开监控,目前比较主流的就是 Prometheus(普罗米修斯)+ Grafana 的组合。
oec2003
2023/11/01
3.9K0
监控利器:普罗米修斯介绍和安装
linux安装Promethus普罗米修斯监控
下载地址:Releases · prometheus/node_exporter · GitHub
全栈程序员站长
2022/09/09
1.1K0
普罗米修斯java_springboot集成普罗米修斯
Prometheus 是一套开源的系统监控报警框架。它由工作在 SoundCloud 的 员工创建,并在 2015 年正式发布的开源项目。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,非常的受欢迎。
全栈程序员站长
2022/09/09
1.8K0
普罗米修斯java_springboot集成普罗米修斯
“你感受过被监控的恐惧吗?”
这就是Prometheus 随着容器技术的迅速发展,Kubernetes已然成为大家追捧的容器集群管理系统。Prometheus作为生态圈 Cloud Native Computing Foundation(简称:CNCF)中的重要一员,其活跃度仅次于 Kubernetes, 现已广泛用于 Kubernetes 集群的监控系统中。 本文带领大家体验如何使用Prometheus开始收集系统指标,以便开发人员和云平台运维人员可以快速的掌握 Prometheus。 上图是Grafana看板的监
腾讯云TStack
2019/07/12
1.4K0
“你感受过被监控的恐惧吗?”
下一代应用监控指标采集器Prometheus核心介绍
Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用Prometheus,该项目拥有一个非常活跃的开发人员和用户社区。它现在是一个独立的开源项目。Prometheus于2016年加入谷歌主导的顶级开源社区云原生计算基金会(CNCF),成为第二个顶级托管项目。第一是大名鼎鼎的k8s。prometheus是属于下一代监控。可用来监控操作系统、应用、容器等。
码农小胖哥
2019/12/10
1.3K0
下一代应用监控指标采集器Prometheus核心介绍
Prometheus监控学习笔记之Prometheus普罗米修斯监控入门
视频讲解通过链接网易云课堂·IT技术快速入门学院进入,更多关于Prometheus的文章。
Jetpropelledsnake21
2018/12/25
9.7K0
Prometheus 监控体系
从这个架构图,也可以看出 Prometheus 的主要模块包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。
BUG弄潮儿
2021/07/22
9230
Prometheus学习笔记_01
本文介绍Prometheus 监控及在k8s集群中使用node-exporter、prometheus、grafana对集群进行监控。实现原理类似ELK、EFK组合。node-exporter组件负责收集节点上的metrics监控数据,并将数据推送给prometheus, prometheus负责存储这些数据,grafana将这些数据通过网页以图形的形式展现给用户。
Cyylog
2020/08/19
1.2K0
相关推荐
普罗米修斯
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验