Skip to content

Commit 5d2a8f5

Browse files
authored
feat: allow to configure the prefix for the telemtry events (#622)
1 parent aa71344 commit 5d2a8f5

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

lib/tesla/middleware/telemetry.ex

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ if Code.ensure_loaded?(:telemetry) do
2525
## Options
2626
2727
- `:metadata` - additional metadata passed to telemetry events
28+
- `:prefix` - prefix for telemetry events. Defaults to `:tesla`
2829
2930
## Telemetry Events
3031
@@ -91,9 +92,10 @@ if Code.ensure_loaded?(:telemetry) do
9192
@impl Tesla.Middleware
9293
def call(env, next, opts) do
9394
metadata = opts[:metadata] || %{}
95+
prefix = opts[:prefix] || :tesla
9496
start_time = System.monotonic_time()
9597

96-
emit_start(Map.merge(metadata, %{env: env}))
98+
emit_start(prefix, Map.merge(metadata, %{env: env}))
9799

98100
try do
99101
Tesla.run(env, next)
@@ -103,6 +105,7 @@ if Code.ensure_loaded?(:telemetry) do
103105
duration = System.monotonic_time() - start_time
104106

105107
emit_exception(
108+
prefix,
106109
duration,
107110
Map.merge(metadata, %{env: env, kind: kind, reason: reason, stacktrace: stacktrace})
108111
)
@@ -112,56 +115,56 @@ if Code.ensure_loaded?(:telemetry) do
112115
{:ok, env} = result ->
113116
duration = System.monotonic_time() - start_time
114117

115-
emit_stop(duration, Map.merge(metadata, %{env: env}))
116-
emit_legacy_event(duration, result)
118+
emit_stop(prefix, duration, Map.merge(metadata, %{env: env}))
119+
emit_legacy_event(prefix, duration, result)
117120

118121
result
119122

120123
{:error, reason} = result ->
121124
duration = System.monotonic_time() - start_time
122125

123-
emit_stop(duration, Map.merge(metadata, %{env: env, error: reason}))
124-
emit_legacy_event(duration, result)
126+
emit_stop(prefix, duration, Map.merge(metadata, %{env: env, error: reason}))
127+
emit_legacy_event(prefix, duration, result)
125128

126129
result
127130
end
128131
end
129132

130-
defp emit_start(metadata) do
133+
defp emit_start(prefix, metadata) do
131134
:telemetry.execute(
132-
[:tesla, :request, :start],
135+
[prefix, :request, :start],
133136
%{system_time: System.system_time()},
134137
metadata
135138
)
136139
end
137140

138-
defp emit_stop(duration, metadata) do
141+
defp emit_stop(prefix, duration, metadata) do
139142
:telemetry.execute(
140-
[:tesla, :request, :stop],
143+
[prefix, :request, :stop],
141144
%{duration: duration},
142145
metadata
143146
)
144147
end
145148

146149
if @disable_legacy_event do
147-
defp emit_legacy_event(_duration, _result) do
150+
defp emit_legacy_event(_prefix, _duration, _result) do
148151
:ok
149152
end
150153
else
151-
defp emit_legacy_event(duration, result) do
154+
defp emit_legacy_event(prefix, duration, result) do
152155
duration = System.convert_time_unit(duration, :native, :microsecond)
153156

154157
:telemetry.execute(
155-
[:tesla, :request],
158+
[prefix, :request],
156159
%{request_time: duration},
157160
%{result: result}
158161
)
159162
end
160163
end
161164

162-
defp emit_exception(duration, metadata) do
165+
defp emit_exception(prefix, duration, metadata) do
163166
:telemetry.execute(
164-
[:tesla, :request, :exception],
167+
[prefix, :request, :exception],
165168
%{duration: duration},
166169
metadata
167170
)

0 commit comments

Comments
 (0)