如何使用Dropwizard库访问Kafka指标?求等价示例代码
使用Dropwizard访问Kafka指标的等价实现
1. 获取指定Kafka指标(对应Yammer示例)
在Dropwizard Metrics中,可通过MetricName匹配Kafka暴露的指标名称,从注册表中直接获取目标指标:
// 构造匹配Kafka ZooKeeper请求延迟的MetricName MetricName metricName = new MetricName( "", "", "", "", "kafka.server:type=ZooKeeperClientMetrics,name=ZooKeeperRequestLatencyMs" ); // 从Dropwizard的MetricRegistry中获取指标 MetricRegistry registry = SharedMetricRegistries.getDefault(); Metric metric = registry.getMetrics().get(metricName);
2. 遍历并处理所有Kafka指标(对应Yammer遍历示例)
Dropwizard提供简洁的方式遍历注册表中所有指标,等价于Yammer的分组遍历逻辑:
MetricRegistry registry = SharedMetricRegistries.getDefault(); long epoch = System.currentTimeMillis() / 1000; // 遍历所有指标并执行处理逻辑 for (Map.Entry<MetricName, Metric> entry : registry.getMetrics().entrySet()) { Metric metric = entry.getValue(); MetricName metricName = entry.getKey(); // 替换为你的自定义处理逻辑,对应原代码的processWith方法 metric.processWith(this, metricName, epoch); }
补充说明
- Dropwizard Metrics默认可通过
SharedMetricRegistries.getDefault()获取全局注册表,若使用自定义注册表,直接传入对应实例即可。 - Kafka暴露的指标名称格式与Yammer兼容,因此
MetricName的构造参数可直接复用原逻辑。
内容的提问来源于stack exchange,提问作者Priyanka
相关产品推荐
相关产品推荐

