Current section
Files
Jump to
Current section
Files
lib/spider_man/telemetry.ex
if Code.ensure_loaded?(Telemetry.Metrics) do
defmodule SpiderMan.Telemetry do
@moduledoc false
import Telemetry.Metrics
def tag_values_fun(count) do
&Map.update!(&1, :name, fn {:via, _, {_, tuple}} ->
tuple |> Tuple.to_list() |> Enum.slice(0..count) |> Enum.join("-")
end)
end
def metrics(tag_values \\ tag_values_fun(1)) do
reporter_options = [nav: "spider_man"]
metric_options = [tags: [:name], tag_values: tag_values, reporter_options: reporter_options]
[
# spider_man
summary("spider_man.ets.memory", unit: {:byte, :kilobyte}, tags: [:name, :tid]),
summary("spider_man.ets.size", tags: [:name, :tid]),
# broadway
counter("broadway.processor.message.start.time", metric_options),
counter("broadway.processor.message.stop.time", metric_options),
summary("broadway.processor.message.stop.duration", [
{:unit, {:native, :millisecond}} | metric_options
]),
counter("broadway.batch_processor.start.time", metric_options),
counter("broadway.batch_processor.stop.time", metric_options),
summary("broadway.batch_processor.stop.duration", [
{:unit, {:native, :millisecond}} | metric_options
])
]
end
end
end