All Projects → beam-telemetry → telemetry_registry

beam-telemetry / telemetry_registry

Licence: Apache-2.0 License
A library for declaration and discovery of telemetry events

Programming Languages

erlang
1774 projects
elixir
2628 projects

Labels

Projects that are alternatives of or similar to telemetry registry

PerfSpect
system performance characterization tool based on linux perf
Stars: ✭ 45 (+80%)
Mutual labels:  telemetry
WeConnect-cli
Commandline Interface to interact with the Volkswagen WeConnect Services
Stars: ✭ 27 (+8%)
Mutual labels:  telemetry
Windows.10.DNS.Block.List
Windows DNS Block List
Stars: ✭ 18 (-28%)
Mutual labels:  telemetry
QGISFMV
QGIS Full Motion Video (FMV)
Stars: ✭ 104 (+316%)
Mutual labels:  telemetry
newrelic-telemetry-sdk-java
Java library for sending telemetry data to New Relic
Stars: ✭ 34 (+36%)
Mutual labels:  telemetry
pihole-antitelemetry
A research-based starter pihole list to improve your privacy
Stars: ✭ 286 (+1044%)
Mutual labels:  telemetry
opentelemetry-ruby
OpenTelemetry Ruby API & SDK, and related gems
Stars: ✭ 332 (+1228%)
Mutual labels:  telemetry
tinypacks
A data serialization format for constrained environments like 8-bit and 16-bit microcontrollers.
Stars: ✭ 30 (+20%)
Mutual labels:  telemetry
pprzlink
Message and communication library for the Paparazzi UAV system
Stars: ✭ 17 (-32%)
Mutual labels:  telemetry
nostromo
BLDC ESC firmware (GPLv3.0)
Stars: ✭ 36 (+44%)
Mutual labels:  telemetry
telemetry collector
build telemetry software stack for Cisco nx-os, support both telemetry dial-out and gNMI dial-in
Stars: ✭ 39 (+56%)
Mutual labels:  telemetry
TraceEvent
Trace events in real time sessions
Stars: ✭ 26 (+4%)
Mutual labels:  telemetry
toptout
📡 Easily opt-out from telemetry collection
Stars: ✭ 89 (+256%)
Mutual labels:  telemetry
Post-Tweaks
A post-installation batch script for Windows
Stars: ✭ 136 (+444%)
Mutual labels:  telemetry
arcus.observability
Observability with Microsoft Azure in a breeze.
Stars: ✭ 24 (-4%)
Mutual labels:  telemetry
ets2-dashboard-skin
Packaged application in VueJs to run on a Windows computer It allows to deport some information of the video games Eurotruck simulator and Americantruck simulator on another device (via the web browser). And thus have an increased immersion in these games.
Stars: ✭ 37 (+48%)
Mutual labels:  telemetry
WeConnect-python
Python API for the Volkswagen WeConnect Services
Stars: ✭ 27 (+8%)
Mutual labels:  telemetry
Orchard-Azure-Application-Insights
This Orchard CMS module enables easy integration of Azure Application Insights telemetry into Orchard. Useful for Azure-based cloud hsoting.
Stars: ✭ 17 (-32%)
Mutual labels:  telemetry
BulletGCSS
A High Caliber Ground Control Station System designed for the 21st century lifestyle
Stars: ✭ 29 (+16%)
Mutual labels:  telemetry
tdm
Telemetry Data Mapper to ease data discovery, correlation, and usage with YANG, MIBs, etc.
Stars: ✭ 33 (+32%)
Mutual labels:  telemetry

EEF Observability WG project Hex.pm

Telemetry Registry

TelemetryRegistry is a library for Telemetry event declaration, discovery, and registration. Events are declared using the module attribute telemetry_event and include a description of the event, measurements, and metadata.

How It Works

The Registry works by walking an application tree and examining every module for Telemetry Event definitions when invoking the discovery feature.

-telemetry_event #{
                   event => [test_app, handler, start],
                   description => <<"Emitted at the start of the handler">>,
                   measurements => <<"#{system_time => non_neg_integer()}">>,
                   metadata => <<"#{}">>
                  }.
-telemetry_event #{
                   event => [test_app, handler, stop],
                   description => <<"Emitted at the end of the handler">>,
                   measurements => <<"#{duration => non_neg_integer()}">>,
                   metadata => <<"#{}">>
                  }.
-telemetry_event #{
                   event => [test_app, handler, exception],
                   description => <<"The handler raised an exception">>,
                   measurements => <<"#{duration => non_neg_integer()}">>,
                   metadata => <<"#{kind => atom(), reason => atom(), stacktrace => term()}">>
                  }.

Add the Registry to Your Application

After the applications are loaded, simply run

telemetry_registry:discover_all(my_app).

Or if you want to load all applications loaded in current VM then you can use:

telemetry_registry:discover_all().

Viewing Events

The defined events can be accessed using list_events/0. Events are returned as a list of three element tuples of {Event, Module, Meta} where Event is the event name, Module is the module it was discovered in, and Meta is the event definition metadata.

telemetry_registry:list_events().

Spannable Events

Tracing spans need at least a matching start and stop event to create a child span. Optionally, a exception event can be emitted in the case of an exception being raised. spannable_events/0 returns a proplist of all matching (spannable) events that have been discovered. These are returned as a proplist with keys being the event prefix and the value being a list of the available events, e.g. [{[test_app,handler], [start,stop,exception]}].

telemetry_registry:spannable_events().
%% [{[test_app,handler], [start,stop,exception]}]

Elixir Users

A variety of macros to assist with event declaration and generating telemetry event documentation are available. Please refer to the HexDocs for more information.

Dependency in Elixir

def deps do
  [
    {:telemetry_registry, "~> 0.3"}
  ]
end

Copyright 2020 Bryan Naegele

TelemetryRegistry source code is released under Apache License, Version 2.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].