Source code for twindb_backup.exporter.datadog_exporter
# -*- coding: utf-8 -*-
"""
Module defines DataDog exporter class.
"""
from datadog import initialize, statsd
from twindb_backup.exporter.base_exporter import BaseExporter, ExportCategory, ExportMeasureType
from twindb_backup.exporter.exceptions import DataDogExporterError
[docs]class DataDogExporter(BaseExporter): # pylint: disable=too-few-public-methods
"""
DataDog exporter class
"""
def __init__(self, app_key, api_key):
super(DataDogExporter, self).__init__()
options = {"api_key": api_key, "app_key": app_key}
initialize(**options)
self._suffix = "twindb."
[docs] def export(self, category, measure_type, data):
"""
Export data to DataDog
:param category: Data meant
:param measure_type: Type of measure
:param data: Data to posting
:raise: DataDogExporterError if data is invalid
"""
if isinstance(data, (int, float)):
metric_name = self._suffix
if category == ExportCategory.files:
metric_name += "files."
else:
metric_name += "mysql."
if measure_type == ExportMeasureType.backup:
metric_name += "backup_time"
else:
metric_name += "restore_time"
statsd.gauge(metric_name, data)
else:
raise DataDogExporterError("Invalid input data")