Add metrics stub
This commit is contained in:
46
lib/kafkaex_lag_exporter/metrics.ex
Normal file
46
lib/kafkaex_lag_exporter/metrics.ex
Normal file
@@ -0,0 +1,46 @@
|
||||
defmodule KafkaexLagExporter.Metrics do
|
||||
@moduledoc "Metrics module is responsible for building and collecting kafka metrics"
|
||||
|
||||
use PromEx.Plugin
|
||||
|
||||
require Logger
|
||||
|
||||
@kafka_event :kafka
|
||||
|
||||
@impl true
|
||||
def manual_metrics(_opts) do
|
||||
clients = Application.get_env(:brod, :clients)
|
||||
[endpoint | _] = clients[:kafka_client][:endpoints] || [{"redpanda", 29_092}]
|
||||
|
||||
Manual.build(
|
||||
:application_versions_manual_metrics,
|
||||
{__MODULE__, :kafka_metrics, [endpoint, []]},
|
||||
[
|
||||
last_value(
|
||||
[@kafka_event, :consumergroup, :group, :topic, :sum, :lag],
|
||||
event_name: [@kafka_event, :consumergroup, :group, :topic, :sum, :lag],
|
||||
description: "Sum of group offset lag across topic partitions",
|
||||
measurement: :lag,
|
||||
tags: [:cluster_name, :group, :topic]
|
||||
)
|
||||
]
|
||||
)
|
||||
end
|
||||
|
||||
@doc false
|
||||
def kafka_metrics({host, _port}, consumer_lags) do
|
||||
Enum.each(consumer_lags, fn [group_name, lag] ->
|
||||
:telemetry.execute(
|
||||
[@kafka_event, :consumergroup, :group, :topic, :sum, :lag],
|
||||
%{
|
||||
lag: lag
|
||||
},
|
||||
%{
|
||||
cluster_name: host,
|
||||
group: group_name,
|
||||
topic: []
|
||||
}
|
||||
)
|
||||
end)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user