Skip to content

Commit

Permalink
Add bitnami signals source to kafka (#1315)
Browse files Browse the repository at this point in the history
* Add bitnami signals source to kafka

* Revert groupLabels

* fmt

* fmt
  • Loading branch information
v-zhuravlev authored Aug 22, 2024
1 parent 740488f commit d2347d0
Show file tree
Hide file tree
Showing 12 changed files with 176 additions and 3 deletions.
1 change: 1 addition & 0 deletions kafka-observ-lib/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ The library supports two metrics sources (`metricsSource`):

- `prometheus`: JMX configs from [prometheus/jmx_exporter](https://github.com/prometheus/jmx_exporter/blob/main/example_configs/kafka-2_0_0.yml) and [kafka_exporter](https://github.com/danielqsj/kafka_exporter)
- `grafanacloud`: JMX configs from [kafka-mixin](../kafka-mixin/jmx) and [kafka_exporter fork](https://github.com/grafana/kafka_exporter) (used in grafana-agent/alloy).
- `bitnami`: JMX configs from [bitnami](https://github.com/bitnami/charts/blob/main/bitnami/kafka/templates/metrics/jmx-configmap.yaml) helm chart

You can also pick on the three JVM metrics sources (`jvmMetricsSource`):
- `jmx_exporter` if you use jmx_exporter in http mode or javaagent mode with the additional config snippet (see README)
Expand Down
2 changes: 1 addition & 1 deletion kafka-observ-lib/config.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
dashboardTags: ['kafka'],
alertKafkaLagTooHighThreshold: '100',
alertKafkaLagTooHighSeverity: 'critical',
metricsSource: 'prometheus', //or grafanacloud. See README
metricsSource: 'prometheus', //or grafanacloud, bitnami. See README

// 'jmx_exporter' if you use jmx_exporter in http mode or javaagent mode with the additional config snippet (see README)
// 'prometheus_old' if you use jmx_exporter in javaagent mode and version prior to 1.0.1
Expand Down
5 changes: 4 additions & 1 deletion kafka-observ-lib/main.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ local zookeeperlib = import 'zookeeper-observ-lib/main.libsonnet';
uid: this.config.uid,
dashboardNamePrefix: this.config.dashboardNamePrefix,
dashboardTags: this.config.dashboardTags,
metricsSource: this.config.metricsSource,
metricsSource:
if this.config.metricsSource == 'prometheus' then 'prometheus'
else if this.config.metricsSource == 'grafanacloud' then 'grafanacloud'
else if this.config.metricsSource == 'bitnami' then 'prometheus',
}
),

Expand Down
2 changes: 1 addition & 1 deletion kafka-observ-lib/rows.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ local commonlib = import 'common-lib/common/main.libsonnet';


+
if type == 'prometheus' then
if type == 'prometheus' || type == 'bitnami' then
[
panels.consumerGroup.consumerGroupConsumeRate { gridPos+: { w: 12, h: 8 } },
panels.consumerGroup.consumerGroupLag { gridPos+: { w: 12, h: 8 } },
Expand Down
10 changes: 10 additions & 0 deletions kafka-observ-lib/signals/broker.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ function(this)
discoveryMetric: {
prometheus: 'kafka_controller_kafkacontroller_activecontrollercount',
grafanacloud: 'kafka_controller_kafkacontroller_activecontrollercount',
bitnami: 'kafka_controller_kafkacontroller_activecontrollercount_value',
},
signals: {
brokerMessagesInPerSec: {
Expand All @@ -24,6 +25,9 @@ function(this)
grafanacloud: {
expr: 'kafka_server_brokertopicmetrics_messagesinpersec{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_server_brokertopicmetrics_messagesinpersec_count{%(queriesSelector)s}',
},
},
},
brokerBytesInPerSec: {
Expand All @@ -38,6 +42,9 @@ function(this)
grafanacloud: {
expr: 'kafka_server_brokertopicmetrics_bytesinpersec{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_server_brokertopicmetrics_bytesinpersec_count{%(queriesSelector)s}',
},
},
},
brokerBytesOutPerSec: {
Expand All @@ -52,6 +59,9 @@ function(this)
grafanacloud: {
expr: 'kafka_server_brokertopicmetrics_bytesoutpersec{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_server_brokertopicmetrics_bytesoutpersec_count{%(queriesSelector)s}',
},
},
},

Expand Down
41 changes: 41 additions & 0 deletions kafka-observ-lib/signals/cluster.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ function(this)
discoveryMetric: {
prometheus: 'kafka_controller_kafkacontroller_activecontrollercount',
grafanacloud: 'kafka_controller_kafkacontroller_activecontrollercount',
bitnami: 'kafka_controller_kafkacontroller_activecontrollercount_value',
},
signals: {
activeControllers: {
Expand All @@ -30,6 +31,10 @@ function(this)
{
expr: 'kafka_controller_kafkacontroller_activecontrollercount{%(queriesSelector)s}',
},
bitnami:
{
expr: 'kafka_controller_kafkacontroller_activecontrollercount_value{%(queriesSelector)s}',
},
},
},
// used in status map
Expand Down Expand Up @@ -86,6 +91,29 @@ function(this)
},
],
},
bitnami:
{
expr: 'kafka_controller_kafkacontroller_activecontrollercount_value{%(queriesSelector)s}',
aggKeepLabels: this.instanceLabels,
legendCustomTemplate: '{{ %s }}' % xtd.array.slice(this.instanceLabels, -1),
valueMappings: [
{
type: 'value',
options: {
'0': {
text: 'follower',
color: 'light-purple',
index: 0,
},
'1': {
text: 'controller',
color: 'light-blue',
index: 1,
},
},
},
],
},
},
},
brokersCount: {
Expand All @@ -105,6 +133,10 @@ function(this)
{
expr: 'kafka_server_kafkaserver_brokerstate{%(queriesSelector)s}',
},
bitnami:
{
expr: 'kafka_server_kafkaserver_total_brokerstate_value{%(queriesSelector)s}',
},
},
},

Expand All @@ -120,6 +152,9 @@ function(this)
grafanacloud: {
expr: 'kafka_server_brokertopicmetrics_messagesinpersec{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_server_brokertopicmetrics_messagesinpersec_count{%(queriesSelector)s}',
},
},
},
clusterBytesInPerSec: {
Expand All @@ -134,6 +169,9 @@ function(this)
grafanacloud: {
expr: 'kafka_server_brokertopicmetrics_bytesinpersec{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_server_brokertopicmetrics_bytesinpersec_count{%(queriesSelector)s}',
},
},
},
clusterBytesOutPerSec: {
Expand All @@ -148,6 +186,9 @@ function(this)
grafanacloud: {
expr: 'kafka_server_brokertopicmetrics_bytesoutpersec{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_server_brokertopicmetrics_bytesoutpersec_count{%(queriesSelector)s}',
},
},
},
},
Expand Down
4 changes: 4 additions & 0 deletions kafka-observ-lib/signals/consumerGroup.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ function(this)
discoveryMetric: {
prometheus: 'kafka_consumergroup_lag', // https://github.com/danielqsj/kafka_exporter?tab=readme-ov-file#metrics
grafanacloud: 'kafka_consumergroup_uncomitted_offsets', // https://github.com/grafana/kafka_exporter/blob/master/exporter/exporter.go#L887
bitnami: self.prometheus,
},
signals: {
consumerGroupLag: {
Expand All @@ -28,6 +29,7 @@ function(this)
aggKeepLabels: ['consumergroup', 'topic'],
expr: 'kafka_consumergroup_uncomitted_offsets{%(queriesSelector)s}',
},
bitnami: self.prometheus,
},
},

Expand Down Expand Up @@ -57,7 +59,9 @@ function(this)
expr: 'kafka_consumergroup_current_offset{%(queriesSelector)s}',
},
grafanacloud: self.prometheus,
bitnami: self.prometheus,
},

},
},
}
7 changes: 7 additions & 0 deletions kafka-observ-lib/signals/conversion.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ function(this)
discoveryMetric: {
prometheus: 'kafka_server_brokertopicmetrics_producemessageconversions_total',
grafanacloud: 'kafka_server_brokertopicmetrics_producemessageconversionspersec',
bitnami: 'kafka_server_brokertopicmetrics_total_producemessageconversionspersec_count',
},
signals: {
producerConversion: {
Expand All @@ -24,6 +25,9 @@ function(this)
grafanacloud: {
expr: 'kafka_server_brokertopicmetrics_producemessageconversionspersec{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_server_brokertopicmetrics_producemessageconversionspersec_count{%(queriesSelector)s}',
},
},
},
consumerConversion: {
Expand All @@ -38,6 +42,9 @@ function(this)
grafanacloud: {
expr: 'kafka_server_brokertopicmetrics_fetchmessageconversionspersec{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_server_brokertopicmetrics_fetchmessageconversionspersec_count{%(queriesSelector)s}',
},
},
},
},
Expand Down
21 changes: 21 additions & 0 deletions kafka-observ-lib/signals/replicaManager.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ function(this)
discoveryMetric: {
prometheus: 'kafka_server_replicamanager_isrshrinks_total',
grafanacloud: 'kafka_server_replicamanager_isrshrinkspersec',
bitnami: 'kafka_server_replicamanager_total_isrshrinkspersec_count',
},
signals: {
local s = this,
Expand Down Expand Up @@ -39,6 +40,10 @@ function(this)
{
expr: '%(aggFunction)s by (%(agg)s) (rate(kafka_server_replicamanager_isrshrinks_total{%(queriesSelector)s}[%(interval)s]))',
},
bitnami:
{
expr: '%(aggFunction)s by (%(agg)s) (rate(kafka_server_replicamanager_total_isrshrinkspersec_count{%(queriesSelector)s}[%(interval)s]))',
},
},
},
isrExpands: {
Expand Down Expand Up @@ -67,6 +72,9 @@ function(this)
{
expr: '%(aggFunction)s by (%(agg)s) (rate(kafka_server_replicamanager_isrexpands_total{%(queriesSelector)s}[%(interval)s]))',
},
bitnami: {
expr: '%(aggFunction)s by (%(agg)s) (rate(kafka_server_replicamanager_total_isrexpandspersec_count{%(queriesSelector)s}[%(interval)s]))',
},
},
},
onlinePartitions: {
Expand All @@ -86,6 +94,10 @@ function(this)
{
expr: 'kafka_server_replicamanager_partitioncount{%(queriesSelector)s}',
},
bitnami:
{
expr: 'kafka_server_replicamanager_total_partitioncount_value{%(queriesSelector)s}',
},
},
},
offlinePartitions: {
Expand All @@ -105,6 +117,9 @@ function(this)
{
expr: 'kafka_controller_kafkacontroller_offlinepartitionscount{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_controller_kafkacontroller_offlinepartitionscount_value{%(queriesSelector)s}',
},
},
},
underReplicatedPartitions: {
Expand All @@ -115,6 +130,7 @@ function(this)
type: 'gauge',
unit: 'short',
aggFunction: 'sum',
optional: true,
sources: {
grafanacloud:
{
Expand All @@ -134,6 +150,7 @@ function(this)
type: 'gauge',
unit: 'short',
aggFunction: 'sum',
optional: true,
sources: {
grafanacloud:
{
Expand All @@ -153,6 +170,7 @@ function(this)
type: 'raw',
unit: 'short',
aggFunction: 'sum',
optional: true,
sources: {
grafanacloud:
{
Expand Down Expand Up @@ -181,6 +199,9 @@ function(this)
{
expr: 'kafka_controller_kafkacontroller_preferredreplicaimbalancecount{%(queriesSelector)s}',
},
bitnami: {
expr: 'kafka_controller_kafkacontroller_preferredreplicaimbalancecount_value{%(queriesSelector)s}',
},
},
},

Expand Down
17 changes: 17 additions & 0 deletions kafka-observ-lib/signals/topic.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ function(this)
discoveryMetric: {
prometheus: 'kafka_log_log_logstartoffset', //https://github.com/danielqsj/kafka_exporter?tab=readme-ov-file#metrics
grafanacloud: self.prometheus,
bitnami: 'kafka_log_log_logstartoffset',
},
signals: {
topicMessagesPerSec: {
Expand All @@ -24,6 +25,7 @@ function(this)
expr: 'kafka_topic_partition_current_offset{%(queriesSelector)s}',
},
grafanacloud: self.prometheus,
bitnami: self.prometheus,
},
},
// used in table:
Expand All @@ -39,6 +41,7 @@ function(this)
expr: 'kafka_topic_partition_current_offset{%(queriesSelector)s}',
},
grafanacloud: self.prometheus,
bitnami: self.prometheus,
},
},
// JMX exporter extras
Expand All @@ -56,6 +59,10 @@ function(this)
aggKeepLabels: ['topic'],
expr: 'kafka_server_brokertopicmetrics_bytesinpersec{%(queriesSelector)s}',
},
bitnami: {
aggKeepLabels: ['topic'],
expr: 'kafka_server_brokertopicmetrics_bytesinpersec_count{%(queriesSelector)s}',
},
},
},
topicBytesOutPerSec: {
Expand All @@ -72,6 +79,10 @@ function(this)
aggKeepLabels: ['topic'],
expr: 'kafka_server_brokertopicmetrics_bytesoutpersec{%(queriesSelector)s}',
},
bitnami: {
aggKeepLabels: ['topic'],
expr: 'kafka_server_brokertopicmetrics_bytesoutpersec_count{%(queriesSelector)s}',
},
},
},
topicLogStartOffset: {
Expand All @@ -90,6 +101,10 @@ function(this)
aggKeepLabels: ['topic', 'partition'],
expr: 'kafka_log_log_logstartoffset{%(queriesSelector)s}',
},
bitnami: {
aggKeepLabels: ['topic', 'partition'],
expr: 'kafka_log_log_logstartoffset{%(queriesSelector)s}',
},
},
},
topicLogEndOffset: {
Expand All @@ -106,6 +121,7 @@ function(this)
expr: 'kafka_log_log_logendoffset{%(queriesSelector)s}',
},
grafanacloud: self.prometheus,
bitnami: self.prometheus,
},
},
topicLogSize: {
Expand All @@ -121,6 +137,7 @@ function(this)
expr: 'kafka_log_log_size{%(queriesSelector)s}',
},
grafanacloud: self.prometheus,
bitnami: self.prometheus,
},
},

Expand Down
Loading

0 comments on commit d2347d0

Please sign in to comment.