From 58ee443d3d3c72d4ef5c0dd26dfe12f26e96fdd9 Mon Sep 17 00:00:00 2001 From: jbeemster Date: Fri, 25 Aug 2023 18:24:18 +1000 Subject: [PATCH] Add ability to set custom tags for statsd metrics (close #340) --- .../Collector.scala | 5 ++++- .../model.scala | 5 +++-- examples/config.kafka.extended.hocon | 5 +++++ examples/config.kinesis.extended.hocon | 5 +++++ examples/config.nsq.extended.hocon | 5 +++++ examples/config.pubsub.extended.hocon | 5 +++++ examples/config.rabbitmq.extended.hocon | 5 +++++ examples/config.sqs.extended.hocon | 5 +++++ examples/config.stdout.extended.hocon | 5 +++++ 9 files changed, 42 insertions(+), 3 deletions(-) diff --git a/core/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/Collector.scala b/core/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/Collector.scala index eabbf5edd..e4f70405a 100644 --- a/core/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/Collector.scala +++ b/core/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/Collector.scala @@ -136,7 +136,9 @@ trait Collector { ) lazy val metricRegistry: Option[HttpMetricsRegistry] = collectorConf.monitoring.metrics.statsd match { - case StatsdConfig(true, hostname, port, period, prefix) => + case StatsdConfig(true, hostname, port, period, prefix, tags) => + val constantTags = tags.map { case (k: String, v: String) => s"${k}:${v}" } + Some( DatadogRegistry( client = new NonBlockingStatsDClientBuilder() @@ -145,6 +147,7 @@ trait Collector { .enableAggregation(true) .aggregationFlushInterval(period.toMillis.toInt) .enableTelemetry(false) + .constantTags(constantTags.toArray: _*) .build(), DatadogSettings .default diff --git a/core/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/model.scala b/core/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/model.scala index aa4052acd..747028e43 100644 --- a/core/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/model.scala +++ b/core/src/main/scala/com.snowplowanalytics.snowplow.collectors.scalastream/model.scala @@ -174,8 +174,9 @@ package model { enabled: Boolean, hostname: String, port: Int, - period: FiniteDuration = 1.minute, - prefix: String = "snowplow.collector" + period: FiniteDuration = 1.minute, + prefix: String = "snowplow.collector", + tags: Map[String, String] = Map("app" -> "collector") ) final case class MetricsConfig(statsd: StatsdConfig) final case class MonitoringConfig(metrics: MetricsConfig) diff --git a/examples/config.kafka.extended.hocon b/examples/config.kafka.extended.hocon index 9d4a6e50c..b5d0c26da 100644 --- a/examples/config.kafka.extended.hocon +++ b/examples/config.kafka.extended.hocon @@ -242,6 +242,11 @@ collector { period = "10 seconds" # Optional, override the default metric prefix # "prefix": "snowplow.collector" + + # Any key-value pairs to be tagged on every StatsD metric + "tags": { + "app": collector + } } # Configures how long the colletor should pause after receiving a sigterm before starting the graceful shutdown. diff --git a/examples/config.kinesis.extended.hocon b/examples/config.kinesis.extended.hocon index 83adee5ed..9a54621ee 100644 --- a/examples/config.kinesis.extended.hocon +++ b/examples/config.kinesis.extended.hocon @@ -281,6 +281,11 @@ collector { period = "10 seconds" # Optional, override the default metric prefix # "prefix": "snowplow.collector" + + # Any key-value pairs to be tagged on every StatsD metric + "tags": { + "app": collector + } } # Configures how long the colletor should pause after receiving a sigterm before starting the graceful shutdown. diff --git a/examples/config.nsq.extended.hocon b/examples/config.nsq.extended.hocon index 88f05f2fc..36b4c005c 100644 --- a/examples/config.nsq.extended.hocon +++ b/examples/config.nsq.extended.hocon @@ -220,6 +220,11 @@ collector { period = "10 seconds" # Optional, override the default metric prefix # "prefix": "snowplow.collector" + + # Any key-value pairs to be tagged on every StatsD metric + "tags": { + "app": collector + } } # Configures how long the colletor should pause after receiving a sigterm before starting the graceful shutdown. diff --git a/examples/config.pubsub.extended.hocon b/examples/config.pubsub.extended.hocon index 63c050abe..4dabb624f 100644 --- a/examples/config.pubsub.extended.hocon +++ b/examples/config.pubsub.extended.hocon @@ -251,6 +251,11 @@ collector { period = "10 seconds" # Optional, override the default metric prefix # "prefix": "snowplow.collector" + + # Any key-value pairs to be tagged on every StatsD metric + "tags": { + "app": collector + } } # Configures how long the colletor should pause after receiving a sigterm before starting the graceful shutdown. diff --git a/examples/config.rabbitmq.extended.hocon b/examples/config.rabbitmq.extended.hocon index 7d54622a6..04a8bbde1 100644 --- a/examples/config.rabbitmq.extended.hocon +++ b/examples/config.rabbitmq.extended.hocon @@ -238,6 +238,11 @@ collector { period = "10 seconds" # Optional, override the default metric prefix # "prefix": "snowplow.collector" + + # Any key-value pairs to be tagged on every StatsD metric + "tags": { + "app": collector + } } # Configures how long the colletor should pause after receiving a sigterm before starting the graceful shutdown. diff --git a/examples/config.sqs.extended.hocon b/examples/config.sqs.extended.hocon index 7a93f0841..6f127c6d2 100644 --- a/examples/config.sqs.extended.hocon +++ b/examples/config.sqs.extended.hocon @@ -263,6 +263,11 @@ collector { period = "10 seconds" # Optional, override the default metric prefix # "prefix": "snowplow.collector" + + # Any key-value pairs to be tagged on every StatsD metric + "tags": { + "app": collector + } } # Configures how long the colletor should pause after receiving a sigterm before starting the graceful shutdown. diff --git a/examples/config.stdout.extended.hocon b/examples/config.stdout.extended.hocon index 819cb764f..fe4d647af 100644 --- a/examples/config.stdout.extended.hocon +++ b/examples/config.stdout.extended.hocon @@ -227,6 +227,11 @@ collector { period = "10 seconds" # Optional, override the default metric prefix # "prefix": "snowplow.collector" + + # Any key-value pairs to be tagged on every StatsD metric + "tags": { + "app": collector + } } # Configures how long the colletor should pause after receiving a sigterm before starting the graceful shutdown.