Exemplo n.º 1
0
    def run(self):
        """The default run function that is responsible for:

        1. Get stats from get_metrics of the plugin and push to time-series

           db after value validations(only non nul validation

           for now).

        2. Add latency to provisioner_only_plugin(heavy_weight plugins)
        """
        # If provisioner_only_plugin(plugins that can cause costly sds
        # locking issues) add additional latency of 37 s to execution of
        # such plugins
        if self.provisioner_only_plugin:
            time.sleep(13)
        # Get stats from current plugin's get_metrics function
        metrics = self.get_metrics()
        metric_list = []
        for metric_name, value in metrics.iteritems():
            # Don't push null values to graphite
            if value is not None:
                if (isinstance(value, str) and value.isdigit()):
                    value = int(value)
                metric_list.append("tendrl.%s %s %d" %
                                   (metric_name, value, int(time.time())))
        # Push value to graphite
        tendrl_glusterfs_utils.write_graphite(metric_list,
                                              self.CONFIG['graphite_host'],
                                              self.CONFIG['graphite_port'])
def r_callback():
    TendrlBrickDeviceStatsPlugin.CLUSTER_TOPOLOGY = \
        gluster_utils.get_gluster_cluster_topology()
    metrics = TendrlBrickDeviceStatsPlugin().get_metrics()
    for metric_name, value in metrics.iteritems():
        if value is not None:
            if (isinstance(value, str) and value.isdigit()):
                value = int(value)
            gluster_utils.write_graphite(
                metric_name, value,
                TendrlBrickDeviceStatsPlugin.CONFIG['graphite_host'],
                TendrlBrickDeviceStatsPlugin.CONFIG['graphite_port'])