:mod:`airflow.contrib.hooks.datadog_hook`
=========================================

.. py:module:: airflow.contrib.hooks.datadog_hook


Module Contents
---------------

.. py:class:: DatadogHook(datadog_conn_id='datadog_default')

   Bases: :class:`airflow.hooks.base_hook.BaseHook`, :class:`airflow.utils.log.logging_mixin.LoggingMixin`

   Uses datadog API to send metrics of practically anything measurable,
   so it's possible to track # of db records inserted/deleted, records read
   from file and many other useful metrics.

   Depends on the datadog API, which has to be deployed on the same server where
   Airflow runs.

   :param datadog_conn_id: The connection to datadog, containing metadata for api keys.
   :param datadog_conn_id: str

   
   .. method:: validate_response(self, response)



   
   .. method:: send_metric(self, metric_name, datapoint, tags=None, type_=None, interval=None)

      Sends a single datapoint metric to DataDog

      :param metric_name: The name of the metric
      :type metric_name: str
      :param datapoint: A single integer or float related to the metric
      :type datapoint: int or float
      :param tags: A list of tags associated with the metric
      :type tags: list
      :param type_: Type of your metric: gauge, rate, or count
      :type type_: str
      :param interval: If the type of the metric is rate or count, define the corresponding interval
      :type interval: int



   
   .. method:: query_metric(self, query, from_seconds_ago, to_seconds_ago)

      Queries datadog for a specific metric, potentially with some
      function applied to it and returns the results.

      :param query: The datadog query to execute (see datadog docs)
      :type query: str
      :param from_seconds_ago: How many seconds ago to start querying for.
      :type from_seconds_ago: int
      :param to_seconds_ago: Up to how many seconds ago to query for.
      :type to_seconds_ago: int



   
   .. method:: post_event(self, title, text, aggregation_key=None, alert_type=None, date_happened=None, handle=None, priority=None, related_event_id=None, tags=None, device_name=None)

      Posts an event to datadog (processing finished, potentially alerts, other issues)
      Think about this as a means to maintain persistence of alerts, rather than
      alerting itself.

      :param title: The title of the event
      :type title: str
      :param text: The body of the event (more information)
      :type text: str
      :param aggregation_key: Key that can be used to aggregate this event in a stream
      :type aggregation_key: str
      :param alert_type: The alert type for the event, one of
          ["error", "warning", "info", "success"]
      :type alert_type: str
      :param date_happened: POSIX timestamp of the event; defaults to now
      :type date_happened: int
      :handle: User to post the event as; defaults to owner of the application key used
          to submit.
      :param handle: str
      :param priority: Priority to post the event as. ("normal" or "low", defaults to "normal")
      :type priority: str
      :param related_event_id: Post event as a child of the given event
      :type related_event_id: id
      :param tags: List of tags to apply to the event
      :type tags: list[str]
      :param device_name: device_name to post the event with
      :type device_name: list




