首页 > 其他分享 >prometheus学习笔记之服务发现

prometheus学习笔记之服务发现

时间:2024-09-04 11:28:10浏览次数:5  
标签:__ 发现 kubernetes 标签 笔记 学习 prometheus configs

一、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等其他role
      scheme: 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_job
    relabel_configs:
    - source_labels: [__address__]
      modulus: 4
      target_label: __ip_hash
      action: 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接口检索并抓取目标,且始终与集群状态保持同步

 

 

 

标签:__,发现,kubernetes,标签,笔记,学习,prometheus,configs
From: https://www.cnblogs.com/panwenbin-logs/p/18396013

相关文章

  • AI产品经理学习:做AI产品经理的三年,聊聊我的心得
    本文目录:入局:AI风口下的职业判断磨砺:从项目中构建专业能力深潜:“三段式”AI产品经理成长路径践行:AI产品经理的能力“四象限”结语:对于未来的期盼1.引言从2021年校招加入京东开始,我一直从事AI产品经理的工作,有幸见证了AI行业的热情从一台台服务器烧到了全世界各......
  • 基于Prometheus和Grafana的现代服务器监控体系构建
    1.安装PrometheusPrometheus是一个开源的监控系统和时间序列数据库,适用于记录实时的度量指标。•下载并安装Prometheus:•前往Prometheus官方网站下载适用于您操作系统的版本。•解压并配置prometheus.yml文件,定义抓取目标(targets),如服务器、应用程序等。•配......
  • 学习网络安全好就业吗?
    网络安全与我们息息相关,无论是企业还是个人都应该高度重视网络安全。而且网络安全是一个新兴行业,人才需求量远大于供给,因此在薪资上也具有很大的优势,相关培训机构也越来越多,那么网络安全培训完就能就业吗?具体请看下文。参加网络安全培训可以找到工作,因为培训机构在提供课......
  • 【万字文档+PPT+源码】基于springboot+vue高校学生评教系统-可用于毕设-课程设计-练手
    博主简介:......
  • Cobra CLI 学习笔记
    CobraCLI学习笔记简介Cobra是Go的CLI框架。它包含一个用于创建强大的现代CLI应用程序的库,以及一个用于快速生成基于Cobra的应用程序和命令文件的工具。官方文档:https://cobra.dev/安装goget-ugithub.com/spf13/cobra/cobraCobra常用参数解析varroot......
  • 同声传译哪个软件好?发现这5个学习好帮手
    暑假的时光悄然流逝,转眼间大一新生也将准备开学了。依照传统,开学之际,小译总会安利一些非常有价值的学习辅助工具。而在本期,特别想介绍给大家的是一系列同声传译翻译器。这些工具对于学生党来说具有极高的实用性,希望能够为你们的学习带来不小的便利。『第一.』同声传译王它......
  • Prometheus部署
    机器准备prometheus-server192.168.252.143主服务器(自监控和监控)prometheus-node1192.168.252.144远程服务器(被监控)grafana192.168.252.141图像显示一、安装Prometheus-Server192.168.252.143prometheus-server同步时间yum-yinstallntpntpdaten......
  • 学习笔记:数论分块
    数论分块1.0可以快速计算一些含有除法向下取整的和式(形如$\sum_{i=1}^ng(i)\left\lfloor\frac{n}{i}\right\rfloor$)。2.0引理1:\(\left\lfloor\frac{n}{i}\right\rfloor\)的取值最多只有\(2\times\sqrtn\)种。证明:对于\(i\le\left\lfloor\sqrtn\rig......
  • LLM大模型基础知识学习总结
    大家好,我是Edison。在这个已经被大模型包围的时代,不了解一点大模型的基础知识和相关概念,可能出去聊天都接不上话。刚好近期我也一直在用GPT和GitHubCopilot,也刚好对这些基础知识很感兴趣,于是学习了一下,做了如下的整理总结,分享与你!一句话描述GPTGPT:GenerativePre-TrainingTra......
  • Java学习路径
    1.Java基础Java语法:变量、数据类型、控制结构(if、for、while等)面向对象编程:类、对象、继承、多态、接口异常处理:try-catch-finally,创建自定义异常集合框架:List、Set、Map等2.Java高级特性泛型:如何使用和创建泛型类和方法流(Streams)和Lambda表达式:处理集合和数据流多线......