All Projects → beam-telemetry → Telemetry_poller

beam-telemetry / Telemetry_poller

Licence: apache-2.0
Periodically gather measurements and publish them as Telemetry events

Programming Languages

elixir
2628 projects
erlang
1774 projects

Projects that are alternatives of or similar to Telemetry poller

Telemetry
Dynamic dispatching library for metrics and instrumentations.
Stars: ✭ 647 (+540.59%)
Mutual labels:  events, metrics, instrumentation
Telemetry metrics
Collect and aggregate Telemetry events over time
Stars: ✭ 144 (+42.57%)
Mutual labels:  events, metrics, instrumentation
prometheus-httpd
Expose Prometheus metrics using inets httpd.
Stars: ✭ 21 (-79.21%)
Mutual labels:  metrics, instrumentation
splunk-otel-java
Splunk Distribution of OpenTelemetry Java
Stars: ✭ 39 (-61.39%)
Mutual labels:  metrics, instrumentation
Fluxter
Fast and reliable InfluxDB writer for Elixir
Stars: ✭ 96 (-4.95%)
Mutual labels:  metrics, instrumentation
Opencensus Node
A stats collection and distributed tracing framework
Stars: ✭ 249 (+146.53%)
Mutual labels:  metrics, instrumentation
Mtail
extract internal monitoring data from application logs for collection in a timeseries database
Stars: ✭ 3,028 (+2898.02%)
Mutual labels:  metrics, instrumentation
auth0-instrumentation
The goal of this package is to make it easier to collect information about our services through logs, metrics and error catching.
Stars: ✭ 18 (-82.18%)
Mutual labels:  metrics, instrumentation
Opencensus Web
A stats collection and distributed tracing framework
Stars: ✭ 168 (+66.34%)
Mutual labels:  metrics, instrumentation
Riemann
A network event stream processing system, in Clojure.
Stars: ✭ 4,099 (+3958.42%)
Mutual labels:  events, metrics
Prometheus.ex
Prometheus.io Elixir client
Stars: ✭ 343 (+239.6%)
Mutual labels:  metrics, instrumentation
Inspectit
inspectIT is the leading Open Source APM (Application Performance Management) tool for analyzing your Java (EE) applications.
Stars: ✭ 513 (+407.92%)
Mutual labels:  metrics, instrumentation
Prometheus rabbitmq exporter
Prometheus.io exporter as a RabbitMQ Managment Plugin plugin
Stars: ✭ 248 (+145.54%)
Mutual labels:  metrics, instrumentation
Statix
Fast and reliable Elixir client for StatsD-compatible servers
Stars: ✭ 228 (+125.74%)
Mutual labels:  metrics, instrumentation
Client python
Prometheus instrumentation library for Python applications
Stars: ✭ 2,500 (+2375.25%)
Mutual labels:  metrics, instrumentation
Okanshi
mvno.github.io/okanshi
Stars: ✭ 14 (-86.14%)
Mutual labels:  metrics, instrumentation
Go Http Metrics
Go modular http middleware to measure HTTP requests independent of metrics backend (with Prometheus and OpenCensus as backend implementations) and http framework/library
Stars: ✭ 128 (+26.73%)
Mutual labels:  metrics, instrumentation
Appmetrics
App Metrics is an open-source and cross-platform .NET library used to record and report metrics within an application.
Stars: ✭ 1,986 (+1866.34%)
Mutual labels:  metrics, instrumentation
Prometheus.erl
Prometheus.io client in Erlang
Stars: ✭ 276 (+173.27%)
Mutual labels:  metrics, instrumentation
Vector
A reliable, high-performance tool for building observability data pipelines.
Stars: ✭ 8,736 (+8549.5%)
Mutual labels:  events, metrics

telemetry_poller

Codecov

Allows to periodically collect measurements and dispatch them as Telemetry events.

telemetry_poller by default runs a poller to perform VM measurements:

  • [vm, memory] - contains the total memory, process memory, and all other keys in erlang:memory/0
  • [vm, total_run_queue_lengths] - returns the run queue lengths for CPU and IO schedulers. It contains the total, cpu and io measurements
  • [vm, system_counts] - returns the current process, atom and port count as per erlang:system_info/1

You can directly consume those events after adding telemetry_poller as a dependency.

Poller also provides a convenient API for running custom pollers.

Defining custom measurements

Poller also includes conveniences for performing process-based measurements as well as custom ones.

Erlang

First define the poller with the custom measurements. The first measurement is the built-in process_info measurement and the second one is given by a custom module-function-args defined by you:

telemetry_poller:start_link(
  [{measurements, [
    {process_info, [{name, my_app_worker}, {event, [my_app, worker]}, {keys, [memory, message_queue_len]}]},
    {example_app_measurements, dispatch_session_count, []}
  ]},
  {period, timer:seconds(10)}, % configure sampling period - default is timer:seconds(5)
  {name, my_app_poller}
]).

Now define the custom measurement and you are good to go:

-module(example_app_measurements).

dispatch_session_count() ->
    % emit a telemetry event when called
    telemetry:execute([example_app, session_count], #{count => example_app:session_count()}, #{}).

Elixir

First define the poller with the custom measurements. The first measurement is the built-in process_info measurement and the second one is given by a custom module-function-args defined by you:

defmodule ExampleApp.Measurements do
  def dispatch_session_count() do
    # emit a telemetry event when called
    :telemetry.execute([:example_app, :session_count], %{count: ExampleApp.session_count()}, %{})
  end
end
:telemetry_poller.start_link(
  # include custom measurement as an MFA tuple
  measurements: [
    {:process_info, name: :my_app_worker, event: [:my_app, :worker], keys: [:message, :message_queue_len]},
    {ExampleApp.Measurements, :dispatch_session_count, []},
  ],
  period: :timer.seconds(10), # configure sampling period - default is :timer.seconds(5)
  name: :my_app_poller
)

Documentation

See documentation for more concrete examples and usage instructions.

Copyright and License

telemetry_poller is copyright (c) 2018 Chris McCord and Erlang Solutions.

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

See LICENSE and NOTICE files for more information.

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].