Push Metrics

How to push metrics into Gradient Metrics system

In order to push metrics from your Experiment or Deployment code, you must import gradient-utils from gradient package:

Installing Gradient Utils

pip install gradient-utils

Instrumenting

Four types of metrics are offered: Counter, Gauge, Summary, and Histogram.

Counter

Counters go up, and reset when the process restarts.

from gradient_utils.metrics import Counter
c = Counter('my_failures', 'Description of counter')
c.inc()     # Increment by 1
c.inc(1.6)  # Increment by given value

If there is a suffix of _total on the metric name, it will be removed. When exposing the time series for counter, a _total suffix will be added. This is for compatibility between OpenMetrics and the Prometheus text format, as OpenMetrics requires the _total suffix.

There are utilities to count exceptions raised:

@c.count_exceptions()
def f():
  pass

with c.count_exceptions():
  pass

# Count only one type of exception
with c.count_exceptions(ValueError):
  pass

Gauge

Gauges can go up and down.

There are utilities for common use cases:

A Gauge can also take its value from a callback:

Summary

Summaries track the size and number of events.

There are utilities for timing code:

The Python client doesn't store or expose quantile information at this time.

Histogram

Histograms track the size and number of events in buckets. This allows for aggregatable calculation of quantiles.

The default buckets are intended to cover a typical web/rpc request from milliseconds to seconds. They can be overridden by passing buckets keyword argument to Histogram.

There are utilities for timing code:

Labels

All metrics can have labels, allowing grouping of related time series.

Taking a counter as an example:

Labels can also be passed as keyword-arguments:

Example Code

You have to remember to import MetricsLogger:

Notes:

Gradient uses Prometheus behind the scenes. See the Prometheus documentation on metric types and instrumentation best practices the best practices on naming and labels on how to use them.

Last updated