如何通过Prometheus记录规则生成自定义INFO指标?
更通用的Prometheus自定义INFO指标实现方法
你当前使用absent(non_exist{network_id="1",network_name="Ethereum"})的方式虽能生效,但依赖一个不存在的指标,逻辑不够直观。以下是更通用、易维护的实现方法:
方法1:静态生成单个元数据指标
利用vector()函数创建基础时间序列,再通过记录规则的labels字段直接定义所需元数据标签,无需依赖不存在的指标:
groups: - name: custom_network_metadata rules: - record: networks_id expr: vector(1) labels: network_id: "1" network_name: "Ethereum Mainnet"
执行后会生成目标序列:networks_id{network_id="1", network_name="Ethereum Mainnet"} 1,逻辑清晰且无额外依赖。
方法2:批量生成多个同类指标
若需创建多条元数据记录,可在同一规则组内添加多条record规则,维护成本低:
groups: - name: custom_network_metadata rules: - record: networks_id expr: vector(1) labels: network_id: "1" network_name: "Ethereum Mainnet" - record: networks_id expr: vector(1) labels: network_id: "2" network_name: "BNB Chain"
方法3:基于已有指标扩展(动态场景)
如果元数据来自已存在的监控指标(比如配置类指标),可直接在记录规则中补充标签,实现动态关联:
groups: - name: custom_network_metadata rules: - record: networks_id expr: config_network # 假设这是已有的配置指标 labels: network_name: "Ethereum Mainnet"
上述方法均无需依赖不存在的指标,更符合Prometheus记录规则的常规用法,可读性和可维护性更强。
内容的提问来源于stack exchange,提问作者Ivan Aracki
相关产品推荐
相关产品推荐

