通过配置 Yaml 从 Jmx 导出器中消除特定值
Eliminate specific value from Jmx exporter through config Yaml
这是当前的 Jmx 导出器 模式:
pattern: 'metrics<name=resilience4jCircuitbreakerState.name.(.*).state.(.*), type=gauges><>Value'
name: 'x.y.z.resilience4j.circuitbreaker.state'
labels: {name: "", kind: "" }
type: GAUGE
当前输出:
x_y_z_resilience4j_circuitbreaker_state{kind="open",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="b",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="c",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="d",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="e",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="f",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="g",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="h",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="i",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="j",} 1.0
实际上效果很好。但是为了提高基数,我们决定不公开修改 Yml 的 0.0 值(如果有的话)。
上述样本的预期输出是,
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="b",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="i",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="j",} 1.0
欢迎在下方留言。
看起来每个 name
都有 5 个 x_y_z__resilience4j_circuitbreaker_state
指标,每个指标都有不同的 kind
标签,一个的值为 1.0
,其他的值为 0.0
.
在这种情况下,如果您不公开 0.0
并且断路器在所有状态下发生变化,所有指标都将报告 1.0
。
要减少基数,您应该删除 kind
标签并将值设置为状态。
而不是这个:
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="a",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="open",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="b",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="b",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="open",name="b",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="b",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="b",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="c",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="c",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="open",name="c",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="c",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="c",} 0.0
你应该报告这样的事情:
x_y_z__resilience4j_circuitbreaker_state{name="a"} 1.0 # 1 represents "closed"
x_y_z__resilience4j_circuitbreaker_state{name="b"} 2.0 # 2 represents "open"
x_y_z__resilience4j_circuitbreaker_state{name="c"} 3.0 # 3 represents "half_open"
下面的正则表达式终于对我有用了,
^(?!0(\.0)?$)
这是我的结果验证,
这是当前的 Jmx 导出器 模式:
pattern: 'metrics<name=resilience4jCircuitbreakerState.name.(.*).state.(.*), type=gauges><>Value'
name: 'x.y.z.resilience4j.circuitbreaker.state'
labels: {name: "", kind: "" }
type: GAUGE
当前输出:
x_y_z_resilience4j_circuitbreaker_state{kind="open",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="b",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="c",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="d",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="e",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="f",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="g",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="h",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="i",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="j",} 1.0
实际上效果很好。但是为了提高基数,我们决定不公开修改 Yml 的 0.0 值(如果有的话)。
上述样本的预期输出是,
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="b",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="i",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="j",} 1.0
欢迎在下方留言。
看起来每个 name
都有 5 个 x_y_z__resilience4j_circuitbreaker_state
指标,每个指标都有不同的 kind
标签,一个的值为 1.0
,其他的值为 0.0
.
在这种情况下,如果您不公开 0.0
并且断路器在所有状态下发生变化,所有指标都将报告 1.0
。
要减少基数,您应该删除 kind
标签并将值设置为状态。
而不是这个:
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="a",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="open",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="a",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="b",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="b",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="open",name="b",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="b",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="b",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="disabled",name="c",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="closed",name="c",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="open",name="c",} 0.0
x_y_z__resilience4j_circuitbreaker_state{kind="half_open",name="c",} 1.0
x_y_z__resilience4j_circuitbreaker_state{kind="forced_open",name="c",} 0.0
你应该报告这样的事情:
x_y_z__resilience4j_circuitbreaker_state{name="a"} 1.0 # 1 represents "closed"
x_y_z__resilience4j_circuitbreaker_state{name="b"} 2.0 # 2 represents "open"
x_y_z__resilience4j_circuitbreaker_state{name="c"} 3.0 # 3 represents "half_open"
下面的正则表达式终于对我有用了,
^(?!0(\.0)?$)
这是我的结果验证,