1.2.2 • Published 5 years ago

metrics-nodejs v1.2.2

Weekly downloads
12
License
ISC
Repository
github
Last release
5 years ago

metrics-python

Morgan & Morgan wrapper for application metrics instrumentation.

Installation

pip install mm-metrics

Core API

Increment

Increment a counter for a metric.

increment(metric)

Gauge

Set the magnitude of a metric to a value

gauge(metric, value)

Histogram

Set a frequency metric to a value

histogram(metric, value)

Timer

Time the execution of a task, via either decorator or context manager

# as decorator
@timer(metric)

# as contextmanager
with timer(metric):

Environment Variables

NameDefaultDescription
METRICS_DEFAULT_BACKEND'metrics.backends.DataDogMetricsBackend'The dot-notation path to a metrics backend to default to
DD_API_KEYNoneDataDog API Key
DD_APP_KEYNoneDataDog App Key
DD_SERVICE_NAMENoneThe name of the current service. If set, every metric will be tagged by this value like 'service:'
DD_SERVICE_PRIORITYNoneThe priority of the current service, on a scale of 1-3 with 1 being highest priority. If set, every metric will be tagged by this value like 'priority:'
DD_GLOBAL_TAGSNoneAny additional global tags to apply when metrics are sent. For instance, global tags like 'foobar:1,baz:2' would send tags ['foobar:1', 'baz:2'] with every metric

Examples

  1. Time the execution of a task
from metrics.decorators import timer
import requests

@timer(metric='mm.connections.sf.sync.timer')
def sync_to_sf(data):
  resp = requests.post('https://sf-url.com', data=data)
  return resp.ok
  1. Increment an error counter when a function hits an error, increment a count counter when a function completes successfully
from metrics.decorators import increment


@increment(on_complete_metric='mm.connections.aws.secrets.count', on_error_metric='mm.connections.aws.secrets.errors.count')
def secrets():
  # get AWS secrets handle
  return boto3.client('secrets')
  1. Send some extra tags to attach to a metric (note: some backends might not support tagging and will simply disregard the parameter)
from metrics.decorators import increment


@increment(on_complete_metric='mm.requests.get.count', on_error_metric='mm.connections.get.errors.count', tags=['path:/'])
def get(self):
  return HttpResponse(status=200)

Motivation

Given that most client's have similar (and straightforward) requirements for metric tracking, we wrap these common methods (as well as helper tooling) in this abstract Python API. This gives us the flexibility to:

  • Maintain metric tracking functionality in a central location
  • Decouple metric tracking from core application functionality
  • Swap statsD providers opaquely (e.g DogStatsD -> Vanilla StatsD)

Additional Reading

  • For more detail on metrics collection at MM and metric naming guidelines, see the wiki page here
1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.2

5 years ago