Skip to content

Commit e57a8e4

Browse files
RoadRunnralbertored
authored andcommitted
optimize prometheus exported a bit
1 parent 366871e commit e57a8e4

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

apps/opentelemetry_experimental/src/otel_metric_exporter_prometheus.erl

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,19 @@ parse_metrics(Metrics, Resource, #opts{order=Order} = Opts) ->
7979
ParsedMetricsIter = maps:iterator(ParsedMetrics1, Order),
8080
maps:fold(fun(_Name, #{preamble := Preamble, data := Data}, Acc) -> [[Preamble | Data] | Acc] end, [], ParsedMetricsIter).
8181

82+
parse_and_accumulate_metric(#metric{name=Name}, Acc, _Opts)
83+
when is_map_key(Name, Acc) ->
84+
%% skip duplicate metric, can this even happen?
85+
Acc;
8286
parse_and_accumulate_metric(#metric{name=Name, description=Description, data=Data, unit=Unit, scope=Scope}, Acc, Opts) ->
8387
FixedUnit = fix_unit(Unit),
8488
{MetricNameUnit, FullName} = fix_metric_name(atom_to_list(Name), FixedUnit, Data, Opts),
85-
case {maps:get(Name, Acc, undefined), data(FullName, Data, Scope, Opts)} of
86-
{_, invalid_temporality} ->
89+
case data(FullName, Data, Scope, Opts) of
90+
invalid_temporality ->
8791
Acc;
88-
{undefined, TextData} ->
92+
TextData ->
8993
Preamble = preamble(MetricNameUnit, Description, FixedUnit, Data),
90-
maps:put(Name, #{preamble => Preamble, data => TextData}, Acc);
91-
_ ->
92-
Acc
94+
Acc#{Name => #{preamble => Preamble, data => TextData}}
9395
end.
9496

9597
fix_metric_name(Name, Unit, Data, #opts{add_total_suffix=AddTotalSuffix}) ->
@@ -100,10 +102,14 @@ fix_metric_name(Name, Unit, Data, #opts{add_total_suffix=AddTotalSuffix}) ->
100102
_ -> reverse_append(MetricName, string:reverse([$_ | Unit]))
101103
end,
102104

103-
FullName = case {Name, AddTotalSuffix, Data} of
104-
{Name1, _, _} when is_map_key(Name1, ?INFO_METRICS) -> string:reverse("_info") ++ MetricNameUnit;
105-
{_, true, #sum{is_monotonic=true}} -> reverse_append(MetricNameUnit, string:reverse("_total"));
106-
_ -> MetricNameUnit
105+
FullName =
106+
case Data of
107+
_ when is_map_key(Name, ?INFO_METRICS) ->
108+
string:reverse("_info") ++ MetricNameUnit;
109+
#sum{is_monotonic=true} when AddTotalSuffix =:= true ->
110+
reverse_append(MetricNameUnit, string:reverse("_total"));
111+
_ ->
112+
MetricNameUnit
107113
end,
108114

109115
{string:reverse(MetricNameUnit), string:reverse(FullName)}.
@@ -638,4 +644,4 @@ no_otel_scope_test() ->
638644
metrics_to_string(Metrics, #{add_scope_info => false})
639645
).
640646

641-
-endif.
647+
-endif.

0 commit comments

Comments
 (0)