{"id":15056445,"url":"https://github.com/beam-telemetry/telemetry_registry","last_synced_at":"2025-04-03T03:10:16.464Z","repository":{"id":46788767,"uuid":"246637198","full_name":"beam-telemetry/telemetry_registry","owner":"beam-telemetry","description":"A library for declaration and discovery of telemetry events","archived":false,"fork":false,"pushed_at":"2024-07-10T15:05:04.000Z","size":59,"stargazers_count":34,"open_issues_count":4,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-24T07:57:39.244Z","etag":null,"topics":["elixir","erlang","telemetry"],"latest_commit_sha":null,"homepage":"","language":"Erlang","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beam-telemetry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"BRYANNAEGELE"}},"created_at":"2020-03-11T17:30:35.000Z","updated_at":"2024-07-10T15:05:04.000Z","dependencies_parsed_at":"2024-02-25T16:32:22.411Z","dependency_job_id":"a29a2130-9d17-44fc-9b80-d8e45e468e01","html_url":"https://github.com/beam-telemetry/telemetry_registry","commit_stats":{"total_commits":21,"total_committers":5,"mean_commits":4.2,"dds":0.5714285714285714,"last_synced_commit":"00ff8b7e42be304fdd003c734403531b8ed7536b"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beam-telemetry%2Ftelemetry_registry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beam-telemetry%2Ftelemetry_registry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beam-telemetry%2Ftelemetry_registry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beam-telemetry%2Ftelemetry_registry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beam-telemetry","download_url":"https://codeload.github.com/beam-telemetry/telemetry_registry/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246927835,"owners_count":20856198,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","erlang","telemetry"],"created_at":"2024-09-24T21:51:31.285Z","updated_at":"2025-04-03T03:10:16.441Z","avatar_url":"https://github.com/beam-telemetry.png","language":"Erlang","funding_links":["https://github.com/sponsors/BRYANNAEGELE"],"categories":[],"sub_categories":[],"readme":"[![EEF Observability WG project](https://img.shields.io/badge/EEF-Observability-black)](https://github.com/erlef/eef-observability-wg)\n[![Hex.pm](https://img.shields.io/hexpm/v/telemetry_registry)](https://hex.pm/packages/telemetry_registry)\n\n# Telemetry Registry\n\nTelemetryRegistry is a library for Telemetry event declaration, discovery, and registration. Events\nare declared using the module attribute `telemetry_event` and include a description of the event,\nmeasurements, and metadata.\n\n## How It Works\n\nThe Registry works by walking an application tree and examining every module for Telemetry Event definitions\nwhen invoking the discovery feature.\n\n```erlang\n-telemetry_event #{\n                   event =\u003e [test_app, handler, start],\n                   description =\u003e \u003c\u003c\"Emitted at the start of the handler\"\u003e\u003e,\n                   measurements =\u003e \u003c\u003c\"#{system_time =\u003e non_neg_integer()}\"\u003e\u003e,\n                   metadata =\u003e \u003c\u003c\"#{}\"\u003e\u003e\n                  }.\n-telemetry_event #{\n                   event =\u003e [test_app, handler, stop],\n                   description =\u003e \u003c\u003c\"Emitted at the end of the handler\"\u003e\u003e,\n                   measurements =\u003e \u003c\u003c\"#{duration =\u003e non_neg_integer()}\"\u003e\u003e,\n                   metadata =\u003e \u003c\u003c\"#{}\"\u003e\u003e\n                  }.\n-telemetry_event #{\n                   event =\u003e [test_app, handler, exception],\n                   description =\u003e \u003c\u003c\"The handler raised an exception\"\u003e\u003e,\n                   measurements =\u003e \u003c\u003c\"#{duration =\u003e non_neg_integer()}\"\u003e\u003e,\n                   metadata =\u003e \u003c\u003c\"#{kind =\u003e atom(), reason =\u003e atom(), stacktrace =\u003e term()}\"\u003e\u003e\n                  }.\n```\n\n### Add the Registry to Your Application\n\nAfter the applications are loaded, simply run\n\n```erlang\ntelemetry_registry:discover_all(my_app).\n```\n\nOr if you want to load all applications loaded in current VM then you can use:\n\n```erlang\ntelemetry_registry:discover_all().\n```\n\n### Viewing Events\n\nThe defined events can be accessed using `list_events/0`. Events are returned as a list of\nthree element tuples of `{Event, Module, Meta}` where `Event` is the event name, `Module` is the\nmodule it was discovered in, and Meta is the event definition metadata.\n\n```erlang\ntelemetry_registry:list_events().\n```\n\n### Spannable Events\n\nTracing spans need at least a matching `start` and `stop` event to create a child span.\nOptionally, a `exception` event can be emitted in the case of an exception being raised.\n`spannable_events/0` returns a proplist of all matching (spannable) events that have been\ndiscovered. These are returned as a proplist with keys being the event prefix and the value\nbeing a list of the available events, e.g. `[{[test_app,handler], [start,stop,exception]}]`.\n\n```erlang\ntelemetry_registry:spannable_events().\n%% [{[test_app,handler], [start,stop,exception]}]\n```\n\n## Elixir Users\n\nA variety of macros to assist with event declaration and generating telemetry event documentation\nare available. Please refer to the [HexDocs](https://hex.pm/packages/telemetry_registry) for more\ninformation.\n\n### Dependency in Elixir\n\n``` elixir\ndef deps do\n  [\n    {:telemetry_registry, \"~\u003e 0.3\"}\n  ]\nend\n```\n\nCopyright 2020 Bryan Naegele\n\nTelemetryRegistry source code is released under Apache License, Version 2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeam-telemetry%2Ftelemetry_registry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeam-telemetry%2Ftelemetry_registry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeam-telemetry%2Ftelemetry_registry/lists"}