一、背景

我们知道prometheus是一个时间序列数据库。会周期性的从各个target上抓取数据。那么我们抓取回来的各种指标数据,我们有没有办法再次进行处理呢?
比如:

1、添加或删除某些不必要的标签。

2、从指标中删除敏感或不需要的标签。

3、修改标签的名字或标签的值等。

要实现上述功能,我们就需要对标签进行重新标记
通过重新标记,我们可以控制、管理并标准化环境中的指标。

二、简化的指标抓取的生命周期

从上图中可知,我们有2个阶段(relable_configsmetric_relabel_configs)可以进行重新标记。

1、配置参数详解

# 从已有的标签选择值的源标签组;多个标签,使用separator分隔;
# regex匹配源标签里的值
[ source_labels: '[' <labelname> [, ...] ']' ] # 多个 source_labels 时以这个连接起来
[ separator: <string> | default = ; ] # 替换成的目标标签,可以使用正则中的分组
[ target_label: <labelname> ] # 正则表达式匹配标签中的值
[ regex: <regex> | default = (.*) ] # Modulus to take of the hash of the source label values.
[ modulus: <int> ] # 替换正则表达式匹配的分组,分组引用使用 $1,$2,$3
[ replacement: <string> | default = $1 ] # 正则表达式匹配后执行的动作
[ action: <relabel_action> | default = replace ]

1、action:存在的值

1、替换标签值

  1. replace:首先将source_labels中指定的各标签的值以separator进行连接起来,然后将regex字段中的正则标签是对连接起来的标签值进行匹配判定,如果匹配上了,则将target_label字段中指定的标签的值替换为replacement字段中保存的值。
  2. hashmod:target_label的值设置为一个hash值,该hash则由modules字段指定的hash模对source_labels上各标签的串联值进行hash计算生成。

2、删除指标

  1. keep: 使用regex不能匹配到target上的source_labels上的各标签的串联值时,则删除该target
  2. drop:使用regex能匹配到target上的source_labels上的各标签的串联值时,则删除该target

3、创建或删除标签

  1. lablemap:regex对所有的标签名进行匹配判定,而后将匹配到的标签的值赋给replacement字段指定的标签名之上。通常用于生成一个新的标签。
  2. labeldrop:regex对所有的标签名进行匹配判断,能够匹配到的标签从该target的标签集中删除。
  3. labelkeep:regex对所有的标签名进行匹配判断,不能够匹配到的标签从该target的标签集中删除。

2、删除标签注意事项

标签时间序列唯一性约束。如果删除标签或重命名标签并导致时间序列重复,那么系统 可能会出现问题。

3、几个系统内置的标签

__address__:当前Target实例的访问地址:。
__scheme__:采集目标服务访问地址的HTTP Scheme,HTTP或者HTTPS。
__metrics_path__:采集目标服务访问地址的访问路径。
__param_<name>:采集任务目标服务的中包含的请求参数。
__name__:此标签是标识指标名称的预留标签。

1、relable_configs 阶段

该阶段发生在指标抓取之前,即来自服务发现的目标。

**示例:**将__scheme__、__address__和__metrics_path__标签对应的值连接起来,判断是否是以(http或https)开头,如果是,则将 instance 标签对应的值修改成正确匹配的值。

scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9080']
relabel_configs:
- source_labels: ["__scheme__","__address__","metrics_path__"]
regex: "(http|https)(.*)"
separator: ""
target_label: "instance"
replacement: "${1}://${2}"
action: replace

2、metric_relable_configs 阶段

该阶段发生在指标抓取之后且数据没有保存到系统之前。

**示例:**删除go_info标签

三、参考文档

1、https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config

最新文章

  1. yourphp的edit,updata,dele
  2. [转]hive实例讲解实现in和not in子句
  3. WPF数据双向绑定
  4. C#高级特性
  5. Socket服务端口长连接最多能支持多少?
  6. C++ 知识点1
  7. Saiku对Measure(指标)查询结果进行计算后显示的方法
  8. 打包静默安装参数(nsis,msi,InstallShield,InnoSetup)
  9. 在Linux系统安装Nodejs 最简单步骤
  10. Linux (Redhat / Fedora / CentOS) 更改 hostname 的方式
  11. 硬盘扩容9999T
  12. ⌈洛谷4735⌋⌈BZOJ3261⌋最大异或和【可持久化01Trie】
  13. webpack2.x抽取css
  14. 【Winform系列】Winform控件DataGridView添加数据的几种方式
  15. 如何在原生工程中引入Cordova工程-for iOS 【转】
  16. linux中iptables的用法
  17. Esper学习之七:EPL语法(三)
  18. Java泛型初探
  19. Django中指定生成表名的方法
  20. Layer Comps

热门文章

  1. 将两个byte型拼接成16位二进制,再转化为十进制
  2. (4)java Spring Cloud+Spring boot+mybatis企业快速开发架构之SpringCloud-Spring Cloud开发环境的准备和Lombok安装步骤
  3. 洛谷P1308——单词统计
  4. Mysql实现无插入有更新(不知主键的情况下)
  5. 手把手教你调试SpringBoot启动 IoC容器初始化源码,spring如何解决循环依赖
  6. Jmeter系列(19)- 常用配置文件
  7. jquery 设置django全局token
  8. three.js 模型常用操作
  9. 鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 百篇博客分析OpenHarmony源码 | v63.01
  10. 鸿蒙内核源码分析(工作模式篇) | CPU是韦小宝,七个老婆 | 百篇博客分析OpenHarmony源码 | v36.04