Prometheus重新标记
Prometheus重新标记
一、背景
我们知道prometheus
是一个时间序列数据库。会周期性的从各个target
上抓取数据。那么我们抓取回来的各种指标数据,我们有没有办法再次进行处理呢?
比如:
1、添加或删除某些不必要的标签。
2、从指标中删除敏感或不需要的标签。
3、修改标签的名字或标签的值等。
要实现上述功能,我们就需要对标签进行重新标记
。
通过重新标记
,我们可以控制、管理并标准化环境中的指标。
二、简化的指标抓取的生命周期
从上图中可知,我们有2个阶段(relable_configs
和metric_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、替换标签值
replace:
首先将source_labels
中指定的各标签的值以separator
进行连接起来,然后将regex
字段中的正则标签是对连接起来的标签值进行匹配判定,如果匹配上了,则将target_label
字段中指定的标签的值替换为replacement
字段中保存的值。hashmod:
将target_label
的值设置为一个hash值,该hash则由modules
字段指定的hash模对source_labels
上各标签的串联值进行hash计算生成。
2、删除指标
keep:
使用regex
不能匹配到target
上的source_labels
上的各标签的串联值时,则删除该target
。drop:
使用regex
能匹配到target
上的source_labels
上的各标签的串联值时,则删除该target
。
3、创建或删除标签
lablemap:
将regex
对所有的标签名进行匹配判定,而后将匹配到的标签的值赋给replacement
字段指定的标签名之上。通常用于生成一个新的标签。labeldrop:
将regex
对所有的标签名进行匹配判断,能够匹配到的标签从该target
的标签集中删除。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
Prometheus重新标记的更多相关文章
- 阿里云上万个 Kubernetes 集群大规模管理实践
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...
- Prometheus 系统监控方案 一
最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错.而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下. Prometheus 是什 ...
- [系统集成] 部署 mesos-exporter 和 prometheus 监控 mesos task
前几天我在mesos平台上基于 cadvisor部署了 influxdb 和 grafana,用于监控 mesos 以及 docker app 运行信息,发现这套监控系统不太适合 mesos + do ...
- Prometheus(转载)
Prometheus 系统监控方案 一 https://www.cnblogs.com/vovlie/p/Prometheus_CONCEPTS.html 最近一直在折腾时序类型的数据库,经过一段时间 ...
- prometheus 标签使用
标签的配置使用 考虑到要明智地使用标签,我们需要给事物重新命名.在一个集中的.复杂的监视环境中,我们有时无法控制正在监视的所有资源以及它们公开的监视数据.重新标记允许在自己的环境中控制.管理和潜在地标 ...
- Prometheus监控学习笔记之Prometheus从1.x升级到2.x
详细参考这篇文章 https://cloud.tencent.com/developer/article/1171434 prometheus 2.0于2017-11-08发布,主要是存储引擎进行了优 ...
- Go语言开发Prometheus Exporter示例
一.Prometheus中的基本概念 Prometheus将所有数据存储为时间序列,这里先来了解一下prometheus中的一些基本概念 指标名和标签每个时间序列都由指标名和一组键值对(也称为标签)唯 ...
- TiKV 源码解析系列文章(三)Prometheus(上)
本文为 TiKV 源码解析系列的第三篇,继续为大家介绍 TiKV 依赖的周边库 rust-prometheus,本篇主要介绍基础知识以及最基本的几个指标的内部工作机制,下篇会介绍一些高级功能的实现原理 ...
- Prometheus监控学习笔记之初识PromQL
0x00 概述 Prometheus 提供了一种功能表达式语言 PromQL,允许用户实时选择和汇聚时间序列数据.表达式的结果可以在浏览器中显示为图形,也可以显示为表格数据,或者由外部系统通过 HTT ...
随机推荐
- Junit5快速入门指南-3
Fixtures 是测试中非常重要的一部分.他们的主要目的是建立一个固定/已知的环境状态以确保 测试可重复并且按照预期的方式运行.比如在app测试中 基类@BeforeClass 配置初始化,初始化d ...
- Fastjson反序列化漏洞基础
Fastjson反序列化漏洞基础 FastJson是alibaba的一款开源JSON解析库,可用于将Java对象转换为其JSON表示形式,也可以用于将JSON字符串转换为等效的Java对象. 0x0 ...
- ysoserial CommonsColletions2分析
ysoserial CommonsColletions2分析 前言 此文章是ysoserial中 commons-collections2 的分析文章,所需的知识包括java反射,javassist. ...
- CodeForce-812C Sagheer and Nubian Market(二分)
Sagheer and Nubian Market CodeForces - 812C 题意:n个货物,每个货物基础价格是ai. 当你一共购买k个货物时,每个货物的价格为a[i]+k*i. 每个货物只 ...
- Java面向对象系列(3)- 回顾方法的调用
方法的调用 静态方法 非静态方法 形参和实参 值传递和引用传递 this关键字(继承篇讲解) 静态方法 非静态方法 形参和实参 package oop.demo01; public class Dem ...
- Jmeter系列(27)- 常用逻辑控制器(6) | 如果(if)控制器If Controller
如果(if)控制器(If Controller) 在实际工作中,当使用JMeter做性能脚本或者接口脚本时,当遇到需要对不同的条件做不同的操作时,我们可以使用JMeter中if控制器来实现 if控制器 ...
- Django边学边记—模型查询
查询集 两大特性 惰性执行:创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代.序列化.与if合用 缓存:查询集的结果被存下来之后,再次查询时会使用之前缓存的数据 返回列 ...
- IDL读取fits文件
使用mrdfits函数 这是天文学标准库中的函数,下载地址:https://idlastro.gsfc.nasa.gov/homepage.html,下载后,将pro文件夹导入到IDL工程中. str ...
- django 如何在HMTL中使用媒体media_url
django 如何在HMTL中使用媒体media_url中指定的路径 第一种: 一. setting.py里,一般图片或者文件上传路径都是是以下设置, MEDIA_URL = '/media/' ...
- python学习2-博客-蓝图
#!/usr/bin/env python # -*- coding: UTF-8 -*- from flask import Blueprint,Flask #这里创建了一个名称为 'admin' ...