TelemetryMetricsCloudwatch

Build StatusHex pmAPI Docs

This is a Amazon CloudWatch Reporter for Telemetry.Metrics definitions.

Installation

To install telemetry_metrics_cloudwatch, just add an entry to your mix.exs:

def deps do
  [
    {:telemetry_metrics_cloudwatch, "~> 0.2"}
  ]
end

(Check Hex to make sure you’re using an up-to-date version number.)

Usage

Provide a list of metric definitions to the init/2 function. It’s recommended to run TelemetryMetricsCloudwatch under a supervision tree, usually under Application.

  def start(_type, _args) do
    # List all child processes to be supervised
    children = [
      {TelemetryMetricsCloudwatch, [metrics: metrics()]}
      ...
    ]

    opts = [strategy: :one_for_one, name: ExampleApp.Supervisor]
    Supervisor.start_link(children, opts)
  end

  defp metrics do
    [
      counter("http.request.count"),
      last_value("vm.memory.total", unit: :byte),
      last_value("vm.total_run_queue_lengths.total")
    ]
  end

You can also provide options for the namespace used in CloudWatch (by default, “Telemetry”) and the minimum frequency (in milliseconds) with which data will be posted (see section below for posting rules). For instance:

  ...
  children = [
    {TelemetryMetricsCloudwatch, metrics: metrics(), namespace: "Backend", push_interval: 30_000}
  ]
  ...

Telemetry.Metrics Types Supported

TelemetryMetricsCloudwatch supports 4 of the Metrics:

These metrics are sent to CloudWatch based on the rules described below.

When Data is Sent

Cloudwatch has certain constraints on the number of metrics that can be sent up at any given time. TelemetryMetricsCloudwatch will send accumulated metric data at least every minute (configurable by the :push_interval option) or when the data cache has reached the maximum size that CloudWatch will accept.

Units

In order to report metrics in the CloudWatch UI, they must be one of the following values:

For Telementry.Metrics.Counters, the unit will always be :count. Otherwise, the unit will be treated as nil.

ExAws Setup

ExAws is the library used to send metrics to CloudWatch. Make sure your keys are configured and that they have the correct permissions of cloudwatch:PutMetricData.

Up to 10 tags are sent up to AWS as dimensions for a given metric.

Running Tests

To run tests:

$ mix test

Reporting Issues

Please report all issues on github.