有关Prometheus 数据采集2-爱可生
本期作者:罗韦
爱可生上海研发中心成员 , 研发工程师 , 主要负责DMP平台监控告警功能的相关工作 。
上篇文章(第02期:数据采集一)介绍了Prometheus数据采集的格式和分类 , 本文会对采集过程进行详细的介绍 。
Prometheus数据采集过程介绍
Prometheus从采集数据到将存储的过程中 , 会对采集目标及数据样本作一系列处理 。 了解这个过程有利于帮助我们更充分、合理的使用可配参数 。
一、文章中使用的概念简介
target:采集目标 , PrometheusServer会从这些目标设备上采集监控数据
sample:PrometheusServer从targets采集回来的数据样本
metalabel:执行relabel前 , target的原始标签 。 可在Prometheus的/targets页面或发送GET/api/v1/targets请求查看 。
二、数据采集流程

文章图片
2.1relabel(targets标签修改/过滤)
relabel是Prometheus提供的一个针对target的功能 , relabel发生PrometheusServer从target采集数据之前 , 可以对target的标签进行修改或者使用标签进行target筛选 。 注意以下几点:
Prometheus在relabel步骤默认会为target新增一个名为instance的标签 , 并设置成"__address__"标签的值;在relabel结束后 , 以"__"开头的标签不会被存储到磁盘;metalabel会一直保留在内存中 , 直到target被移除 。在Prometheus的targets页面 , 可以看到target在relabel之前的标签 , 如下图所示 , 在relabel之前 , target的标签有:"__address__" , "__metrics_path__" , "__schema__" , "job" 。 经过relabel之后我们最终看到的targets的标签为:instance、job 。

文章图片
2.2relabel配置
relabel的基本配置项:
source_labels:[<labelname>,...]#需要进行relabel操作的metalabelstarget_label:<labelname>#relabel操作的目标标签 , 当使用action为"replace"时会把替换的结果写入target_labelregex:<regex>#正则表达式 , 用于在source_labels的标签值中提取匹配的内容 。 默认为"(.*)"modulus:<uint64>#用于获取源标签值的哈希的模数replacement:<string>#regex可能匹配到多个内容 , replacement指定要使用哪一个匹配内容进行替换 , 默认为"$1" , 表示使用第一个匹配的内容action:<relabel_action>#定义对source_labels进行何种操作 , 默认为"replace"下面举几个使用relabel配置的例子:
2.2.1replace修改标签
例1.继续使用上一个部署了两个Prometheus的环境 , 假如我们希望给targets添加一个"host"标签 , 内容取"__address__"的host部分 , 可以添加如下relabel配置:
scrape_configs:-job_name:prometheusrelabel_configs:-source_labels:["__address__"]#我们要替换的metalabel为"__address__"target_label:"host"#给targets新增一个名为"host"的标签regex:"(.*):(.*)"#将匹配的内容分为两部分groups-->(host):(port)replacement:$1#将匹配的host第一个内容设置为新标签的值action:replace
运行结果:

文章图片
【有关Prometheus 数据采集2-爱可生】例2."__metrics_path__"标签保存了target提供的metrics访问路径 , 默认情况下"__metrics_path__"标签在relabel之后是会被移除的 , 但是我们又希望在查询metrics时能方便的看到这个采集端的metrics访问路径 , 那么可以使用replace将"__metrics_path__"标签替换成我们希望的标签 , 并保留"__metrics_path__"的值 , 配置可以简化如下:
relabel_configs:-source_labels:["__metrics_path__"]#我们要替换的metalabel为"__metrics_path__"target_label:"metrics_path"#给targets新增一个名为"metrics_path"的标签

文章图片
2.2.2keep/drop筛选targets
例3.当需要过滤target时 , 可以将action项定义为keep或drop 。 接着上面的例子我们再继续添加如下配置:
-source_labels:["host"]regex:"localhost"#只保留host标签值为"localhost"的targetsaction:keep
运行结果:
在targets页面只剩下一个target

文章图片

文章图片
三、scrape拉取样本
Prometheus通过http从target采集所有metrics的样本 , http路径可以通过下的"metrics_path"配置 , 默认为"/metrics" 。 请求超时时间配置在下的"scrape_timeout" , 默认10s , 可根据网络状况作相应调整 。 标签的合法性也会在这个过程中检查 。
3.1honorlabel冲突检查
Prometheus会默认给metric添加一些标签 , 如"job"、"instance" , 或者某些配置项配置了一些特定标签 , 如果采集回来的时间序列也存在同名的标签 , 那冲突就产生了 。 下的"honor_labels"就是用来解决这样的场景的 , 如果"honor_labels"设置为"true" , 那么冲突标签的值会使用采集到的标签值;如果设置为"false" , 采集上来的冲突标签会被重命名:加上"exported_"前缀 , 如"exported_job"、"exported_instance" 。
3.2metricrelabel(metric标签重写)
metric_relabel功能、配置和relabel类似 , 区别在于metric_relabel针对sample的标签 , 在config文件中的配置项为 。 metric_relabel不支持Prometheus自动生成的时间序列 , 如"up"、"scrape_duration_seconds"、"scrape_samples_scraped"、"scrape_samples_post_metric_relabeling"、"scrape_series_added"等 。 通常用于过滤掉意义不大、或采集成本过高的时间序列 。
3.3save
经过一系列处理后 , 采集到的数据会被持久化保存 , 关于数据存储会在后续文章中介绍 。
关于爱可生
爱可生成立于2003年 , 依托于融合、开放、创新的数据处理技术和服务能力 , 为大型行业用户的特定场景提供深度挖掘数据价值的解决方案 。
公司持续积累的核心关键技术 , 覆盖到分布式数据库集群、云数据平台、数据库大体量运管平台、海量数据集成于存储、清洗与治理、人工智能分析挖掘、可视化展现、安全与隐私保护等多个领域 。
公司已与多个行业内的专业公司建立了长期伙伴关系 , 不断促进新技术与行业知识相结合 , 为用户寻求新的数据驱动的价值增长点 。 公司已在金融、能源电力、广电、政府等行业取得了众多大型用户典型成功案例 , 获得了市场的认可和业务的持续增长 。

文章图片
推荐阅读
- 湿疹、哮喘、食物过敏,这些问题可能都与新发现的这个遗传因素有关
- |为未成年人撑起保护伞!湖北省检察院有关部门负责人19日做客“市民有约”
- 清轻涟漪|婚姻的质量与你的这几点有关
- 侧卧和仰卧?睡眠姿势和未来患痴呆症的风险有没有关系
- 万-比萨卡抢断最多,两丢球却跟他有关,曼联该谢他还是该怨他?
- 694亿元,越南“叫停”国内最大钢铁项目!原因与中国有关?
- 断轴跟质量有关?理想官方再次发表声明!快来看看怎么说
- 穿越火线:许蔚终极黑化,是否与游戏试验有关
- 疫苗事件|新冠疫苗有关国家技术标准发布
- 红蜘蛛|香蕉生长状态不佳,多半与红蜘蛛有关
