Metrics

In order to use this feature, you must have DataDog integration set up.

Everytime you call POST, GET, PUT or DELETE methods, several metrics are sent. All metric names are composed from request_category parameter (either from object property or from argument passed to the method):

  • response time - booking.{request_category}.response_time:

    Response time metric is used to time how long it took for a client to receive response (if any).

  • request status - booking.{request_category}.request:

    Request status metric is used to track the success status of the request.

    Status is tracked with two tag groups:

    • status:

      status can have 2 values: success or error

    • error (optional):

      error tag is added to event only if request failed (status:error tag is present in the event) and it is used to describe error type in better detail.

      Possible values are:

      • timeout: request has timed out

      • http_error: server has responded http 4xx or 5xx

      • connection_error: connection to server failed

      • request_exception: other

    Bear in mind that statsd.namespace can be used in order to prepend desired prefix to the metric, e.g. setting statsd.namespace = "prefix" and calling metric_increment(metric="metric", request_category="category") will produce prefix.category.metric instead of category.metric.

    Additionally, you can include you own tags that will be appended to metric tags.

Example of Sending Metrics

To send metrics to DataDogHQ, just pass the statsd and dd-trace packages to the object RequestSession object:

import ddtrace
import statsd
from request_session import RequestSession

# ...some setting up of statsd and ddtrace...

client = RequestSession(
    host="https://google.com"
    request_category="google_search",
    max_retries=2,
    datadog_service_name="dd_service_name",
    ddtrace=ddtrace,
    statsd=statsd,
)

response = client.get(path="/some_path")