def _send_stats(self, plugin): """ :param plugin: plugin file """ points = [] try: stats_file = "/tmp/{}.stats".format(basename(plugin)) with open(stats_file, "w+") as output: subprocess.call(plugin, stdout=output) with open(stats_file, "r") as output: points = json.loads(output.read()) except ValueError as ex: self._print_message("{0} error: {1}".format(basename(plugin), ex.message)) except Exception as ex: self._print_message(ex.message) new_points = [] for point in points: if point is not None: point['tags']['group'] = self.config['group'] new_points.append(point) if len(new_points) == 0: self._print_message("No statistics found.") return transport = self.config['transport'] host = self.config['host'] port = self.config['port'] password = self.config['password'] database = self.config['database'] if transport == 'influxdb': try: user = self.config['user'] client = InfluxDBClient(host, port, user, password, database) client.write_points(new_points) except InfluxDBClientError as ex: self._print_message(ex.message) except InfluxDBServerError as ex: self._print_message(ex.message) except Exception as ex: self._print_message(ex.message) elif transport == 'redis': try: client = redis.Redis(host=host, port=port, password=password) client.lpush(database, points) except RedisError as ex: self._print_message(ex.message) except Exception as ex: self._print_message(ex.message) else: self._print_message("transport {0} not supported.".format(transport))
def _send_stats(points): db_key = '/ops/db' if not EtcdConfiguration.exists(db_key): StatsmonkeyScheduledTaskController._logger.error('{} config not found'.format(db_key)) return db_config = EtcdConfiguration.get(db_key) transport = db_config.get('transport') host = db_config.get('host') port = db_config.get('port') password = db_config.get('password') database = db_config.get('database') if transport == 'influxdb': try: user = db_config.get('username') client = InfluxDBClient(host=host, port=port, username=user, password=password, database=database) StatsmonkeyScheduledTaskController._logger.info(points) client.write_points(points) except InfluxDBClientError as c: StatsmonkeyScheduledTaskController._logger.error(c.message) except InfluxDBServerError as s: StatsmonkeyScheduledTaskController._logger.error(s.message) except Exception as ex: StatsmonkeyScheduledTaskController._logger.error(ex.message) elif transport == 'redis': try: client = redis.Redis(host=host, port=port, password=password) StatsmonkeyScheduledTaskController._logger.info(points) client.lpush(database, points) except RedisError as ex: StatsmonkeyScheduledTaskController._logger.error(ex.message) except Exception as ex: StatsmonkeyScheduledTaskController._logger.error(ex.message) else: StatsmonkeyScheduledTaskController._logger.error("transport {0} not supported.".format(transport))