Source code for caspia.toolbox.monitor.stores.influxdb

import logging
import os
from time import time

from caspia.toolbox.influxdb import InfluxDBClient
from caspia.toolbox.monitor import MetricStore

logger = logging.getLogger(__name__)


[docs]class InfluxDBMetricStore(MetricStore): def __init__(self, url=None, database=None, interval=10.0, loop=None): super().__init__(loop=loop, interval=interval) url = url or os.environ.get('METRICS_INFLUXDB_URL') \ or os.environ.get('CSP_METRICS_INFLUXDB_URL') self._client = InfluxDBClient(url, 'metrics', logger=logger, precision='ms', loop=self._loop) def _record(self, metric, value, labels): if metric.collect: fields = dict(value=value, interval=float(self._interval)) else: fields = value if isinstance(value, dict) else dict(value=value) self._client.write(metric.name, int(time() * 1000), fields=fields, tags=labels)