From 98efa9691e95083cd84bc5229b9c4c70713df45f Mon Sep 17 00:00:00 2001 From: Josh Kalderimis Date: Fri, 25 Oct 2024 07:32:08 +1300 Subject: [PATCH] Phoenix Plugin: Correctly support multiple endpoints (#254) * Phoenix Plugin: Correctly support multiple endpoints * Normalize the endpoint module tag value * Phoenix plugin: Normalize the handler module tag --- lib/prom_ex/plugins/phoenix.ex | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/prom_ex/plugins/phoenix.ex b/lib/prom_ex/plugins/phoenix.ex index 4016a27..a9a21a7 100644 --- a/lib/prom_ex/plugins/phoenix.ex +++ b/lib/prom_ex/plugins/phoenix.ex @@ -189,9 +189,9 @@ if Code.ensure_loaded?(Phoenix) do end defp endpoint_info(metric_prefix, opts) do - # Fetch user options - phoenix_endpoint = Keyword.get(opts, :endpoint) || Keyword.get(opts, :endpoints) - keep_function_filter = keep_endpoint_metrics(phoenix_endpoint) + phoenix_endpoints = normalize_endpoint(opts) + + keep_function_filter = keep_endpoint_metrics(phoenix_endpoints) Event.build( :phoenix_endpoint_metrics, @@ -218,8 +218,17 @@ if Code.ensure_loaded?(Phoenix) do ) end - defp keep_endpoint_metrics(phoenix_endpoint) when is_atom(phoenix_endpoint) do - keep_endpoint_metrics([phoenix_endpoint]) + defp normalize_endpoint(opts) do + cond do + endpoint = Keyword.get(opts, :endpoint) -> + [endpoint] + + endpoints = Keyword.get(opts, :endpoints) -> + Enum.map(endpoints, fn e -> elem(e, 0) end) + + true -> + [] + end end defp keep_endpoint_metrics(phoenix_endpoints) do @@ -242,7 +251,7 @@ if Code.ensure_loaded?(Phoenix) do end %{ - endpoint: module, + endpoint: normalize_module_name(module), url: module.url(), port: port } @@ -337,7 +346,7 @@ if Code.ensure_loaded?(Phoenix) do %{ endpoint: normalize_module_name(endpoint), event: normalize_event_name.(event), - handler: handler + handler: normalize_module_name(handler) } end, tags: [:endpoint, :handler, :event],