Files
edx-platform/common/djangoapps/newrelic_custom_metrics/__init__.py
Troy Sankey cb122fc027 improve docstrings for newrelic_custom_metrics middleware
Additional comments in this commit clarifies an additional use-case for
the newrelic_custom_metrics.accumulate function: reporting a metric
without accumulation.  Also:

* Fixes docstring style to use the "google" style.
* Adds link to custom metrics table in the wiki in an attempt to help
  keep the tables in sync with the code.
* Inserts a TODO.
* other typos.
2017-02-06 17:17:51 -05:00

53 lines
1.9 KiB
Python

"""
This is an interface to the newrelic_custom_metrics middleware. Functions
defined in this module can be used to report custom metrics to New Relic. For
example:
import newrelic_custom_metrics
...
newrelic_custom_metrics.accumulate('xb_user_state.get_many.num_items', 4)
There is no need to do anything else. The metrics are automatically cleared
before the next request.
We try to keep track of our custom metrics at:
https://openedx.atlassian.net/wiki/display/PERF/Custom+Metrics+in+New+Relic
TODO: supply additional public functions for storing strings and booleans.
"""
from newrelic_custom_metrics import middleware
def accumulate(name, value):
"""
Accumulate custom New Relic metric for the current request.
The named metric is accumulated by a numerical amount using the sum. All
metrics are queued up in the request_cache for this request. At the end of
the request, the newrelic_custom_metrics middleware will batch report all
queued accumulated metrics to NR.
Arguments:
name (str): The metric name. It should be period-delimited, and
increase in specificty from left to right. For example:
'xb_user_state.get_many.num_items'.
value (number): The amount to accumulate into the named metric. When
accumulate() is called multiple times for a given metric name
during a request, the sum of the values for each call is reported
for that metric. For metrics which don't make sense to accumulate,
make sure to only call this function once during a request.
"""
middleware.NewRelicCustomMetrics.accumulate_metric(name, value)
def increment(name):
"""
Increment a custom New Relic metric representing a counter.
Here we simply accumulate a new custom metric with a value of 1, and the
middleware should automatically aggregate this metric.
"""
accumulate(name, 1)