summaryrefslogtreecommitdiffstats
path: root/src/go/collectors/go.d.plugin/modules/pulsar/metrics.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/go/collectors/go.d.plugin/modules/pulsar/metrics.go116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/go/collectors/go.d.plugin/modules/pulsar/metrics.go b/src/go/collectors/go.d.plugin/modules/pulsar/metrics.go
new file mode 100644
index 000000000..9e38e5b9a
--- /dev/null
+++ b/src/go/collectors/go.d.plugin/modules/pulsar/metrics.go
@@ -0,0 +1,116 @@
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+package pulsar
+
+/*
+Architecture:
+ - https://pulsar.apache.org/docs/en/concepts-overview/
+
+Terminology:
+ - https://pulsar.apache.org/docs/en/reference-terminology/
+
+Deploy Monitoring:
+ - http://pulsar.apache.org/docs/en/deploy-monitoring/
+
+Metrics Reference:
+ - https://github.com/apache/pulsar/blob/master/site2/docs/reference-metrics.md
+
+REST API
+ - http://pulsar.apache.org/admin-rest-api/?version=master
+
+Grafana Dashboards:
+ - https://github.com/apache/pulsar/tree/master/docker/grafana/dashboards
+
+Stats in the source code:
+ - https://github.com/apache/pulsar/blob/master/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/
+ - https://github.com/apache/pulsar/tree/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus
+
+If !'exposeTopicLevelMetricsInPrometheus:
+ - https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/NamespaceStatsAggregator.java
+else:
+ - https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/TopicStats.java
+
+Metrics updates parameters:
+ - statsUpdateFrequencyInSecs=60
+ - statsUpdateInitialDelayInSecs=60
+
+Metrics Exposing:
+ - Namespace : 'exposeTopicLevelMetricsInPrometheus' is set to false.
+ - Replication : 'replicationMetricsEnabled' is enabled.
+ - Topic : 'exposeTopicLevelMetricsInPrometheus' is set to true.
+ - Subscription: 'exposeTopicLevelMetricsInPrometheus' is set to true
+ - Consumer : 'exposeTopicLevelMetricsInPrometheus' and 'exposeConsumerLevelMetricsInPrometheus' are set to true.
+ - Publisher : 'exposePublisherStats' is set to true. RESP API option. (/admin/v2/broker-stats/topics)
+*/
+
+/*
+TODO:
+Unused broker metrics:
+ - "pulsar_storage_backlog_size" : ?? is estimated total unconsumed or backlog size in bytes for the managed ledger, without accounting for replicas.
+ - "pulsar_storage_offloaded_size" : ?? is the size of all ledgers offloaded to 2nd tier storage.
+ - "pulsar_storage_backlog_quota_limit" : ?? is the total amount of the data in this topic that limit the backlog quota.
+ - "pulsar_in_bytes_total" : use "pulsar_throughput_in" for the same data.
+ - "pulsar_in_messages_total" : use "pulsar_rate_in" for the same data.
+ - "pulsar_subscription_unacked_messages" : negative values (https://github.com/apache/pulsar/issues/6510)
+ - "pulsar_subscription_back_log" : to detailed, we have summary per topic. Part of "pulsar_msg_backlog" (msgBacklog).
+ - "pulsar_subscription_msg_rate_out" : to detailed, we have summary per topic. Part of "pulsar_rate_out".
+ - "pulsar_subscription_msg_throughput_out": to detailed, we have summary per topic. Part of "pulsar_throughput_out".
+
+ + All Consumer metrics (for each namespace, topic, subscription).
+ + JVM metrics.
+ + Zookeeper metrics.
+ + Bookkeeper metrics.
+
+Hardcoded update interval? (60)
+ - pulsar_storage_write_latency_le_*
+ - pulsar_entry_size_le_*
+*/
+
+/*
+https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/prometheus/NamespaceStatsAggregator.java
+Zero metrics which always present (labels: cluster):
+ - "pulsar_topics_count"
+ - "pulsar_subscriptions_count"
+ - "pulsar_producers_count"
+ - "pulsar_consumers_count"
+ - "pulsar_rate_in"
+ - "pulsar_rate_out"
+ - "pulsar_throughput_in"
+ - "pulsar_throughput_out"
+ - "pulsar_storage_size"
+ - "pulsar_storage_write_rate"
+ - "pulsar_storage_read_rate"
+ - "pulsar_msg_backlog"
+*/
+
+const (
+ // Namespace metrics (labels: namespace)
+ metricPulsarTopicsCount = "pulsar_topics_count"
+ // Namespace, Topic metrics (labels: namespace || namespace, topic)
+ metricPulsarSubscriptionsCount = "pulsar_subscriptions_count"
+ metricPulsarProducersCount = "pulsar_producers_count"
+ metricPulsarConsumersCount = "pulsar_consumers_count"
+ metricPulsarRateIn = "pulsar_rate_in"
+ metricPulsarRateOut = "pulsar_rate_out"
+ metricPulsarThroughputIn = "pulsar_throughput_in"
+ metricPulsarThroughputOut = "pulsar_throughput_out"
+ metricPulsarStorageSize = "pulsar_storage_size"
+ metricPulsarStorageWriteRate = "pulsar_storage_write_rate" // exposed with labels only if there is Bookie
+ metricPulsarStorageReadRate = "pulsar_storage_read_rate" // exposed with labels only if there is Bookie
+ metricPulsarMsgBacklog = "pulsar_msg_backlog" // has 'remote_cluster' label if no topic stats
+ // pulsar_storage_write_latency_le_*
+ // pulsar_entry_size_le_*
+
+ // Subscriptions metrics (labels: namespace, topic, subscription)
+ metricPulsarSubscriptionDelayed = "pulsar_subscription_delayed" // Number of delayed messages currently being tracked
+ metricPulsarSubscriptionMsgRateRedeliver = "pulsar_subscription_msg_rate_redeliver"
+ metricPulsarSubscriptionBlockedOnUnackedMessages = "pulsar_subscription_blocked_on_unacked_messages"
+
+ // Replication metrics (labels: namespace, remote_cluster || namespace, topic, remote_cluster)
+ // Exposed only when replication is enabled.
+ metricPulsarReplicationRateIn = "pulsar_replication_rate_in"
+ metricPulsarReplicationRateOut = "pulsar_replication_rate_out"
+ metricPulsarReplicationThroughputIn = "pulsar_replication_throughput_in"
+ metricPulsarReplicationThroughputOut = "pulsar_replication_throughput_out"
+ metricPulsarReplicationBacklog = "pulsar_replication_backlog"
+)