Kafka Producer Metrics 定期使用 Java API
Kafka Producer Metrics at regular intervals using Java API
我知道 Kafka API 中可用于生产者指标的 metric()
方法。实际上,我试图通过以下方式定期获取 10k 条记录、100k 条记录等的指标:
我是 运行 我来自 Intellij IDE 的制作人,它将制作大约一百万条记录。我尝试按以下方式打印指标:
for (Entry<MetricName, ? extends Metric> entry : producer.metrics().entrySet()) {
System.out.println(entry.getKey().name() + " : " + entry.getValue().metricValue());
}
但此方法返回的是生产者的总体指标。
如何使用 metrics()
获取特定于 request-rate
和 request-total
生产者指标的时间间隔?
您必须按所需的时间间隔明确检查这些指标的值。
类似于(简化逻辑):
Producer<String, String> producer = new KafkaProducer<>(configs);
// Find the metrics you are interested in
Metric requestTotalMetric = null;
for (Entry<MetricName, ? extends Metric> entry : producer.metrics().entrySet()) {
if ("request-total".equals(entry.getKey().name())) {
requestTotalMetric = entry.getValue();
}
}
for (int i = 0; i < 1000000000; i++) {
producer.send(new ProducerRecord<String, String>("topic", "record"));
// Get metric value at desired interval
if (i % 100000 == 0) {
System.out.println(i + " : " + requestTotalMetric.metricValue());
}
}
我知道 Kafka API 中可用于生产者指标的 metric()
方法。实际上,我试图通过以下方式定期获取 10k 条记录、100k 条记录等的指标:
我是 运行 我来自 Intellij IDE 的制作人,它将制作大约一百万条记录。我尝试按以下方式打印指标:
for (Entry<MetricName, ? extends Metric> entry : producer.metrics().entrySet()) {
System.out.println(entry.getKey().name() + " : " + entry.getValue().metricValue());
}
但此方法返回的是生产者的总体指标。
如何使用 metrics()
获取特定于 request-rate
和 request-total
生产者指标的时间间隔?
您必须按所需的时间间隔明确检查这些指标的值。
类似于(简化逻辑):
Producer<String, String> producer = new KafkaProducer<>(configs);
// Find the metrics you are interested in
Metric requestTotalMetric = null;
for (Entry<MetricName, ? extends Metric> entry : producer.metrics().entrySet()) {
if ("request-total".equals(entry.getKey().name())) {
requestTotalMetric = entry.getValue();
}
}
for (int i = 0; i < 1000000000; i++) {
producer.send(new ProducerRecord<String, String>("topic", "record"));
// Get metric value at desired interval
if (i % 100000 == 0) {
System.out.println(i + " : " + requestTotalMetric.metricValue());
}
}