文章目录
前言
Prometheus 默认是采用 pull 方式拉取监控数据的,也就是定时去目标主机上抓取 metrics 数据,每一个被抓取的目标需要暴露一个 HTTP 接口,prometheus 通过这个暴露的接口就可以获取到相应的指标数据,这种方式需要由目标服务决定采集的目标有哪些,通过配置在 scrape_configs 中的各种 job来实现,无法动态感知新服务,如果后面增加了节点或者组件信息,就得手动修promrtheus 配置,并重启 promethues,很不方便,所以出现了动态服务发现,动态服务发现能够自动发现集群中的新端点,并加入到配置中,通过服务发现,
Prometheus 能查询到需要监控的 Target 列表,然后轮询这些 Target 获取监控数据。
本文介绍基于Kubernetes API实现的服务发现,即kubernetes_sd_configs。让 prometheus 动态发现 kubernetes 中被监控的目标。
kubernetes_sd_config
全称为Kubernetes Services Discovery Configurations,K8s服务发现配置。它可以从Kubernetes REST API中采集数据,并与集群状态保存数据同步。目前可以发现的角色目标为:
- node 节点
- service 服务
- pod 容器
- endpoints 端点
- endpointslice 端点切片
- ingress 入口
Relabeling
重写标签(Relabeling)是一种功能强大的工具,可以在目标被抓取数据之前动态重写它的标签集。每个抓取过程可以配置多个重写标签步骤。它们按照在配置文件中出现的顺序应用于每个目标的标签集。
指标抓取的生命周期
Prometheus 对发现的各个目标提供了重新打标的机会,可以在 job 配置段的 relabel_configs 中进行配置。通常用于实现过滤 target 和将元数据标签中的信息附加到指标的标签上。
在重新打标之后便会对指标数据进行抓取及指标数据返回的过程。收到的指标数据在保存之前,还允许用户在 metric_relabel_configs 配置段中对指标数据重新打标并对其进行过滤。通常用于删除不需要的指标、在指标中删除敏感或不需要的标签以及添加、编辑或者修改指标的标签值或标签格式。
label详解
标签 | 含义 |
---|---|
source_labels | 源标签,没有经过 relabel 处理之前的标签名字 |
target_label | 目的标签,通过 action 处理之后的新的标签名字 |
regex | 给定的值或正则表达式匹配,匹配源标签的值 |
replacement | 通过分组替换后标签(target_label)对应的/()/() $1:$2 |
action详解
标签 | 含义 |
---|---|
replace | 将正则表达式与连接的source_labels匹配。然后,将target_label设置为replacement,将replacement中的匹配组引用( 1 , {1}, 1,{2},…)用它们的值替换。如果regex不匹配,则不进行替换。 |
lowercase |