Source code for twindb_backup.exporter.statsd_exporter
# -*- coding: utf-8 -*-
"""
Module defines Statsd exporter class.
"""
import statsd
from twindb_backup.exporter.base_exporter import BaseExporter, ExportCategory, ExportMeasureType
from twindb_backup.exporter.exceptions import StatsdExporterError
[docs]class StatsdExporter(BaseExporter): # pylint: disable=too-few-public-methods
"""
Statsd exporter class
"""
def __init__(self, statsd_host, statsd_port):
super(StatsdExporter, self).__init__()
self._client = statsd.StatsClient(statsd_host, statsd_port)
self._suffix = "twindb."
[docs] def export(self, category, measure_type, data):
"""
Export data to StatsD server
:param category: Data meant
:param measure_type: Type of measure
:param data: Data to posting
:raise: StatsdExporterError 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"
self._client.timing(metric_name, data)
else:
raise StatsdExporterError("Invalid input data")