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")