如何按源表拆分Debezium Postgres Connector的监控指标?
解决Debezium Postgres Connector JMX监控添加Table标签的问题
你的问题核心是Debezium针对不同类型指标的MBean属性结构不一致:扫描类指标(如RowsScanned)用key字段存储表名,而事件计数类指标(如TotalNumberOfCreateEventsSeen)直接将表名放在table属性中,现有JMX Exporter规则没有覆盖后者的匹配逻辑。
只需调整config.yml的规则顺序和匹配模式,就能为这类事件指标添加table标签,修改后的配置如下:
startDelaySeconds: 0 ssl: false lowercaseOutputName: false lowercaseOutputLabelNames: false rules: - pattern : "kafka.connect<type=connect-worker-metrics>([^:]+):" name: "kafka_connect_worker_metrics_$1" - pattern : "kafka.connect<type=connect-metrics, client-id=([^:]+)><>([^:]+)" name: "kafka_connect_metrics_$2" labels: client: "$1" # 新增规则:匹配带有table属性的事件类指标 - pattern: "debezium.([^:]+)<type=connector-metrics, context=([^,]+), server=([^,]+), table=([^>]+)><>([^:]+)" name: "debezium_metrics_$5" labels: plugin: "$1" name: "$3" context: "$2" table: "$4" # 原有RowsScanned指标规则 - pattern: "debezium.([^:]+)<type=connector-metrics, context=([^,]+), server=([^,]+), key=([^>]+)><>RowsScanned" name: "debezium_metrics_RowsScanned" labels: plugin: "$1" name: "$3" context: "$2" table: "$4" # 通用规则:匹配不带table/key属性的全局指标 - pattern: "debezium.([^:]+)<type=connector-metrics, context=([^,]+), server=([^>]+)>([^:]+)" name: "debezium_metrics_$4" labels: plugin: "$1" name: "$3" context: "$2"
配置说明:
- 新增规则优先级最高:先匹配带有
table属性的MBean,确保TotalNumberOfCreateEventsSeen这类事件指标能提取到表名标签。 - 保留原有RowsScanned规则:针对扫描类指标的
key字段做专门匹配,保证兼容性。 - 通用规则放在最后:处理那些不关联具体表的全局指标(如连接器整体的吞吐量、延迟等)。
修改后重启Debezium Connect容器,就能看到事件类指标带上对应的table标签了。
内容的提问来源于stack exchange,提问作者Sergey Che
相关产品推荐
相关产品推荐

