我如何使用 sarama 获取 kafka 生产者/消费者指标

问题描述

我正在尝试使用 Sarama 获取 kafka 生产者/消费者指标。但我找不到任何关于如何做同样的例子。有人可以提供示例实现示例吗?

我正在使用以下代码获取经纪人的指标。但是获取生产者/消费者指标的配置应该是什么。我假设它不会是一样的。如果我错了,请纠正我

    SaramaConfig := Sarama.NewConfig()
    SaramaConfig.Version = <brokerVersion>
    client,err := Sarama.NewClient(<brokerAddresses>,SaramaConfig)
    if err != nil {
        log.Println("Unable to create Sarama client")
        panic(err)
    }
    config := client.Config()

    MeanIncomingByterate := metrics.GetorRegisterMeter(getMetricNameForTopic("incoming-byte-rate",topic),config.MetricRegistry).RateMean(),

解决方法

我从未合作过。但我会尽力回答。

您应该将 go-metrics 注册表注册到配置中。

这是一个如何创建和使用注册表的示例 (https://pkg.go.dev/gopkg.in/Shopify/sarama.v2#example-Config-Metrics):

// Our application registry
appMetricRegistry := metrics.NewRegistry()
appGauge := metrics.GetOrRegisterGauge("m1",appMetricRegistry)
appGauge.Update(1)

config := NewConfig()
// Use a prefix registry instead of the default local one
config.MetricRegistry = metrics.NewPrefixedChildRegistry(appMetricRegistry,"sarama.")

// Simulate a metric created by sarama without starting a broker
saramaGauge := metrics.GetOrRegisterGauge("m2",config.MetricRegistry)
saramaGauge.Update(2)

metrics.WriteOnce(appMetricRegistry,os.Stdout)

因此您应该创建注册表并将其设置为配置

appMetricRegistry := metrics.NewRegistry()
appGauge := metrics.GetOrRegisterGauge("m1",appMetricRegistry)
appGauge.Update(1)

    saramaConfig := sarama.NewConfig()
    saramaConfig.Version = <BrokerVersion>

    // set it here
    saramaConfig.MetricRegistry = metrics.NewPrefixedChildRegistry(appMetricRegistry,"sarama.")


    client,err := sarama.NewClient(<brokerAddresses>,saramaConfig)
    if err != nil {
        log.Println("Unable to create sarama client")
        panic(err)
    }
    config := client.Config()

    MeanIncomingByteRate := metrics.GetOrRegisterMeter(getMetricNameForTopic("incoming-byte-rate",topic),config.MetricRegistry).RateMean(),