| defmodule Plausible.OpenTelemetry do |
| @moduledoc false |
|
|
| alias OpenTelemetry.Tracer |
|
|
| def current_trace_id do |
| case Tracer.current_span_ctx() do |
| :undefined -> |
| nil |
|
|
| span_ctx -> |
| span_ctx |
| |> OpenTelemetry.Span.trace_id() |
| |> Integer.to_string(16) |
| |> String.downcase() |
| end |
| end |
|
|
| def add_site_attributes(site) do |
| case site do |
| %Plausible.Site{} = site -> |
| Tracer.set_attributes([ |
| {"plausible.site.id", site.id}, |
| {"plausible.site.domain", site.domain}, |
| {"plausible.site.team_id", site.team_id} |
| ]) |
|
|
| id when is_integer(id) -> |
| Tracer.set_attributes([{"plausible.site.id", id}]) |
|
|
| _any -> |
| :ignore |
| end |
| end |
|
|
| def add_user_attributes(user) do |
| case user do |
| %Plausible.Auth.User{} = user -> |
| Tracer.set_attributes([ |
| {"plausible.user.id", user.id}, |
| {"plausible.user.name", user.name}, |
| {"plausible.user.email", user.email} |
| ]) |
|
|
| id when is_integer(id) -> |
| Tracer.set_attributes([{"plausible.user.id", id}]) |
|
|
| _any -> |
| :ignore |
| end |
| end |
|
|
| |
| def resource_attributes(runtime_metadata) do |
| [ |
| {"service.name", "analytics"}, |
| {"service.namespace", "plausible"}, |
| {"service.instance.app_host", runtime_metadata[:app_host]}, |
| {"service.instance.id", runtime_metadata[:host]}, |
| {"service.version", runtime_metadata[:version]} |
| ] |
| end |
| end |
|
|