Skip to content

Provides a Zabbix format reporter and server for Telemetry.Metrics definitions.

License

Notifications You must be signed in to change notification settings

lukaszsamson/telemetry_metrics_zabbix

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TelemetryMetricsZabbix

Provides a Zabbix format reporter and server for Telemetry.Metrics definitions. Submits data to Zabbix Trapper Items using Zabbix Sender Protocol. Powered by zabbix_sender.

Installation

The package can be installed by adding telemetry_metrics_zabbix to your list of dependencies in mix.exs:

def deps do
  [
    {:telemetry_metrics_zabbix, "~> 0.1"}
  ]
end

Configuration

Add approperiate config section to your config.exs

config :telemetry_metrics_zabbix, :config,
  host: "zabbix.trapper.host",
  port: 10051,
  hostname: "monitored.host",
  batch_window_size: 1000,
  timestamping: true

Usage

Add TelemetryMetricsZabbix to your application supervision tree and pass metrics as a param. Create a Zabbix Trapper Item on monitored.host for every measurement key you want to collect. Set data type on the Trapper Item to Numeric.

Example

metrics = [
  Telemetry.Metrics.sum("http.request.latency", tags: [:host])
]

children = [
  {TelemetryMetricsZabbix, metrics: metrics}
]
opts = [strategy: :one_for_one, name: MyApp]
Supervisor.start_link(children, opts)

Currently supported metrics

  • Telemetry.Metrics.Counter: counts events
  • Telemetry.Metrics.Sum: sums events' values
  • Telemetry.Metrics.Summary: calculates events' values average
  • Telemetry.Metrics.LastValue: returns all events' values with timestamps

Measuremet to zabbix value conversion

Measurements are aggregated by event name, measurement and tag values. All those parts are included as Zabbix Sender Protocol key. Tag values are treated as Zabbix key parameters sorted by tag key.

Example

with metric

Telemetry.Metrics.sum("http.request.latency", tags: [:host, :method])

and event

:telemetry.execute([:http, :request], %{latency: 200}, %{host: "localhost", method: "GET"})

Zabbix Trapper key will be http.request.latency["localhost","GET"]

Known isuues

Currently TLS encryption (both PSK and RSA) is not supported by zabbix_sender and there are no plans for it. A PR would be welcome though.

Documentation

Docs can be found at https://hexdocs.pm/telemetry_metrics_zabbix.

License

TelemetryMetricsZabbix source code is released under MIT License. Check LICENSE file for more information.

About

Provides a Zabbix format reporter and server for Telemetry.Metrics definitions.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages