prometheus学习笔记之服务发现

一、prometheus 的服务发现机制

prometheus 默认是采用 pull 方式拉取监控数据的, 也就是定时去目标主机上抓取 metrics 数据, 每一个被抓取的目标需要暴露一个 HTTP 接口, prometheus通过这个暴露的接口就可以获取到相应的指标数据,
这种方式需要由目标服务决定采集的目标有哪些, 通过配置在 scrape_configs 中的各种 job 来实现, 无法动态感知新服务, 如果后面增加了节点或者组件信息, 就得手动修 promrtheus配置,
并重启 promethues, 很不方便, 所以出现了动态服务发现, 动态服务发现能够自动发现集群中的新端点, 并加入到配置中, 通过服务发现, Prometheus能查询到需要监控的 Target 列表, 然后轮询这些 Target 获取监控数据。prometheus 获取数据源 target 的方式有多种,如静态配置和动态服务发现配置,prometheus 目前支持的服务发现有很多种, 常用的主要分为以下几种: 1.kubernetes_sd_configs: #基于 Kubernetes API 实现的服务发现, 让 prometheus 动态发现 kubernetes 中被监控的目标 2.static_configs: #静态服务发现, 基于 prometheus 配置文件指定的监控目标,每当有一个新的目标实例需要监控, 都需要手动修改配置文件配置目标 target。 3.dns_sd_configs: #DNS 服务发现监控目标 4.consul_sd_configs: #Consul 服务发现, 基于 consul 服务动态发现监控目标 5.file_sd_configs: #基于指定的文件实现服务发现, 基于指定的文件发现监控目标,相比较于静态服务发现,使用文件服务发现可以不重启prometheus服务

参考文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/  #所有 *_sd_config> 为当前支持的自动发现的配置

二、prometheus 标签修改(relabeling)

promethues 的 relabeling(重新修改标签) 功能很强大, 它能够在抓取到目标实例之前把目标实例的元数据标签动态重新修改, 动态添加或者覆盖标签
prometheus 动态发现目标(targer)之后, 在被发现的 target 实例中, 都包含一些原始的Metadata 标签信息, 默认的标签有:
__address__: 以<host>:<port> 格式显示目标 targets 的地址
__scheme__: 采集的目标服务地址的 Scheme 形式, HTTP 或者 HTTPS
__metrics_path__: 采集的目标服务的访问路径

1.label重新标记 

为了更好的识别监控指标,便于后期调用数据绘图、 告警等需求, prometheus 支持对发现的目标进行 label 修改, 在两个阶段可以重新标记:
relabel_configs : 在对 target 进行数据采集之前(比如在采集数据之前重新定义标签信息, 如目的 IP、目的端口等信息) , 可以使用 relabel_configs 添加、 修改或删除一些标签、 也可以只采集特定目标或过滤目标。
metric_relabel_configs: 在对 target 进行数据采集之后, 即如果是已经抓取到指标数据时, 可以使用metric_relabel_configs 做最后的重新标记和过滤。流程如下

如上一篇文章总prometheus  kubernetes_sd_configs服务自动发现中对api-server抓取的配置

    - job_name: 'kubernetes-apiserver' #kubernetes_sd_configs: #基于 kubernetes_sd_configs 实现服务发现- role: endpoints #发现 endpoints,还有 node svc pod ingress等其他rolescheme: https   #当前 jod 使用的发现协议tls_config: #证书配置ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt #容器里的证书路径,默认内置存在 为集群ca证书的公钥bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token  #容器里的 token 路径,默认内置存在relabel_configs: #重新 re 修改标签 label 配置 configs- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name] #源标签,即对哪些标签进行操作,不同的发现机制源标签也不相同,具体参考对应的发现机制官方文档action: keep #保留source_labels中标签,其他过滤,action 定义了 relabel 的具体动作, action 支持多种regex: default;kubernetes;https   #与source_labels中对应,分别为名称空间  svc名称  svc中port的名称,注意此处是名称不是协议,协议在scheme字段配置,此处含义为发现 default 命名空间的 kubernetes 服务并且是 https 协议

2.label 详解

source_labels: 源标签, 没有经过 relabel 处理之前的标签名字
target_label: 通过 action 处理之后的新的标签名字
regex: 给定的值或正则表达式匹配, 匹配源标签
replacement: 通过分组替换后标签(target_label) 对应的值

3.action 详解

replace: 替换标签值, 根据 regex 正则匹配到源标签的值, 使用 replacement 来引用表达式匹配的分组
keep: 满足 regex 正则条件的实例进行采集, 把 source_labels 中没有匹配到 regex 正则内容的 Target
实例丢掉, 即只采集匹配成功的实例。
drop: 满足 regex 正则条件的实例不采集,把 source_labels 中匹配到 regex 正则内容的 Target 实例丢掉,
即只采集没有匹配到的实例。
hashmod: 使用 hashmod 计算 source_labels 的 Hash 值并进行对比, 基于自定义的模数取模, 以实现对
目标进行分类、 重新赋值等功能:
scrape_configs:
  - job_name: ip_jobrelabel_configs:
    - source_labels: [__address__]modulus: 4target_label: __ip_hashaction: hashmod
    - source_labels: [__ip_hash]regex: ^1$action: keep
labelmap: 匹配 regex 所有标签名称,然后复制匹配标签的值进行分组, 通过 replacement 分组引用
(${1},${2},…) 替代
labelkeep: 匹配 regex 所有标签名称,其它不匹配的标签都将从标签集中删除
labeldrop: 匹配 regex 所有标签名称,其它匹配的标签都将从标签集中删除

 



二、kubernetes_sd_configs服务自动发现
参考文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config

Kubernetes 服务发现配置允许从Kubernetes的REST  API接口检索并抓取目标,且始终与集群状态保持同步

 

 

 

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

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

相关文章

iverilog+gtkwave搭建轻量级verilog仿真环境

前言 在之前用到的仿真工具只有vivado与modelsim,vivado的笨重不用多说,可能你搭建一个工程的时间比你看波形的时间还要长,modelsim倒是稍微轻一些,但步骤也较为繁琐,虽然我在之前也意外收获了modelsim的仿真脚本模板且屡试不爽,但还是觉得稍微有些麻烦,正好之前在学习t…

大厂为啥都发苹果电脑?哪个系统是开发之王?

大家到底用哪个操作系统来学编程呢?大家好,我是程序员鱼皮。最近秋招火热进行中,今年大厂为了抢人才,各出奇招。比如腾讯校招支持 24 届应届生投递,京东校招开放 1.8 万个岗位、同时将校招生薪酬再次大幅上调!大厂除了薪资福利待遇能打之外,资源和配套设施也会更齐全一些…

Minesweeper++

好久之前的冷饭,来炒一下。 代码链接本文来自博客园,作者:haozexu,转载请注明原文链接:https://www.cnblogs.com/haozexu/p/18396085

如何在 Cursor 中使用驭码CodeRider?

驭码CodeRider 是极狐GitLab 公司自研发布的 AIGC 产品,可以用来进行 AI 编程和 DevOps 流程处理。本文分享如何在 Cursor 中使用驭码CodeRider。 Cursor 是近期比较火爆的一款 AI 代码编辑器,通过将 AI 能力引入软件研发来提升软件研发效率。而驭码CodeRider 除了具备 AI 编…

04 Windows批处理中的条件执行

if 命令在所有编程语言中都很常见,它只会在条件为真时执行一行或多行代码,而只有在条件为假时才会执行另一段代码。 其基本原理很简单,但是在批处理中,条件子句为true或false的实体与其他语言中的类似子句有很大不同。大多数比较操作符都是批处理所独有的,在本文中,我们将…

在centos上安装docker

第一步,安装docker,因为我是在centos上面安装的docker,这里就细讲centos的安装步骤 1:官方建议Linux内核为3.10及以上 ,我们可以查看一下自己的Linux内核uname -r2:启用centos-extras存储库 该存储库默认情况下是处于启用状态的,如果之前禁用过,需要重新启用它yum repo…

iLogtail 开源两周年:社区使用调查报告

尽管收集到的有效问卷数量可能未达到传统统计显著性的门槛,但这批反馈却异常宝贵,为我们的策略制定与优化提供了第一手的洞察力。这些见解不仅直接源自实际应用场景,还蕴含了用户对于提升 iLogtail 功能体验、文档丰富度及社区互动多样性的真切期待,为后续的社区建设与发展…

CogVideoX huggingface 接口说明文档

https://huggingface.co/docs/diffusers/api/pipelines/cogvideox 预览

回归树模型 0基础小白也能懂(附代码)

回归树其实是将输入空间划分为$M$个单元,每个区域的输出值是该区域内所有点$y$值的平均数回归树模型 0基础小白也能懂(附代码) 啥是回归树模型 大家在前面的部分学习到了使用决策树进行分类,实际决策树也可以用作回归任务,我们叫作回归树。而回归树的结构还是树形结构,但…

如何通过API接口实现库存的精准掌控

https://img2024.cnblogs.com/blog/3506472/202409/3506472-20240904105309327-1011277110.png在电子商务的快速发展中,库存管理已成为衡量企业运营效率的关键指标。随着消费者对快速配送和商品可用性的期望不断提高,电商企业必须找到更智能、更高效的库存管理方法。电商库存…

manim边学边做--曲线类

manim中曲线,除了前面介绍的圆弧类曲线,也可以绘制任意的曲线。 manim中提供的CubicBezier模块,可以利用三次贝塞尔曲线的方式绘制任意曲线。 关于贝塞尔曲线的介绍,可以参考:https://en.wikipedia.org/wiki/B%C3%A9zier_curve。 本文主要介绍贝塞尔曲线和两种带箭头的曲线…