From 0d3d372ada89f95cd900b45f0d7fbd1aedac6251 Mon Sep 17 00:00:00 2001 From: Andrew Dryga Date: Fri, 19 Apr 2024 11:12:03 -0600 Subject: [PATCH] hotfix: trim metric labels to 1023 chars --- .../telemetry/google_cloud_metrics_reporter.ex | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/elixir/apps/domain/lib/domain/telemetry/google_cloud_metrics_reporter.ex b/elixir/apps/domain/lib/domain/telemetry/google_cloud_metrics_reporter.ex index e223e251f..dad8042a9 100644 --- a/elixir/apps/domain/lib/domain/telemetry/google_cloud_metrics_reporter.ex +++ b/elixir/apps/domain/lib/domain/telemetry/google_cloud_metrics_reporter.ex @@ -221,7 +221,7 @@ defmodule Domain.Telemetry.GoogleCloudMetricsReporter do defp flush(project_id, resource, labels, {buffer_size, buffer}) do buffer |> Enum.flat_map(fn {{schema, name, tags, unit}, measurements} -> - labels = Map.merge(labels, tags) + labels = Map.merge(labels, tags) |> truncate_labels() format_time_series(schema, name, labels, resource, measurements, unit) end) |> Enum.chunk_every(200) @@ -241,6 +241,18 @@ defmodule Domain.Telemetry.GoogleCloudMetricsReporter do {0, %{}} end + defp truncate_labels(labels) do + for {k, v} <- labels, into: %{} do + {k, v |> to_string() |> truncate_label()} + end + end + + defp truncate_label(value) when byte_size(value) > 1020, + do: String.slice(value, 0, 1020) <> "..." + + defp truncate_label(value), + do: value + defp format_time_series(Metrics.Counter, name, labels, resource, measurements, unit) do {started_at, ended_at, count} = measurements