JMXを使用してApache KafkaクラスターとcollectdのGenericJMXプラグインを監視しています。ただし、一部のMBeanパラメーターの意味がわかりません。
特に、kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
という1つのメトリックがあり、1台のマシンが受信した1秒あたりのメッセージ数を示しています。これは、このMBeanの構成ファイルです。
<MBean "kafka-all-messages">
ObjectName "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec"
InstancePrefix "all"
<Value>
InstancePrefix "kafka-messages-in"
Type "counter"
Table false
Attribute "MeanRate"
</Value>
</MBean>
Type
、gauge
など、この測定に適したcounter
がわかりません。私は読んでみました collectdに関するこのドキュメント によって、各測定タイプをどこに適用すべきかを本当に理解できませんでした。
誰かが私にそれを説明できますか?
私はついにそれを機能させることができました。ほとんどすべてのKafka JMXのメトリックには複数の属性があります。たとえば、このkafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
には次の属性が含まれています。
Count
EventType
FifteenMinuteRate
FiveMinuteRate
MeanRate
OneMinuteRate
RateUnit
Type
を選択するときは、値をそのまま取得するか、収集された間隔の差がメトリックをレポートするように構成されているかを選択する必要があります。したがって、gauge
は値であり、counter
は差です。
KafkaのJMXメトリックをレポートする最も柔軟な方法は、新しいメッセージが到着するたびにインクリメントされる単調に増加するカウンターであるCount
属性を使用し、それをcounter
としてレポートすることです。 collectdが60秒ごとにレポートするように構成されている場合、これは1分あたりに着信するメッセージの数になります。 10分ごとにレポートしている場合、値は10分あたりのメッセージ数になります。
<MBean "kafka-all-messages">
ObjectName "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec"
InstancePrefix "all"
<Value>
InstancePrefix "kafka-messages-in"
Type "counter"
Table false
Attribute "Count"
</Value>
</MBean>
これは、「Per」値であるため、ゲージのように見えます-Kafkaは、これを特定の時間枠にすでに正規化しています。名前が「MessagesIn」の場合は、それを期待します。カウンターになる-メッセージが届くにつれて継続的に増加する数。
言い換えれば、Beanが何かの「今」を返す場合、それはゲージです。何かの「これまでの合計」を返す場合、それはカウンターです。 MessagesInPerSecは「現在の状態」の値であるため、ゲージも同様です。