def get_metrics(self, metrics_to_publish={}):
        metrics_to_publish = MetricsPublisher.get_metrics(self, metrics_to_publish)
        data_mount_count = 0
        log_mount_count = 0
        for disk in psutil.disk_partitions(all=True):
            debug("inodemetrics.disk = " + str(disk))
            if "data" in disk.mountpoint:
                data_mount_count += 1
                debug("Marking disk mount %s as data drive" % disk.mountpoint)
            if "logs" in disk.mountpoint:
                log_mount_count += 1
                debug("Marking disk mount %s as log drive" % disk.mountpoint)

        metrics_to_publish[MetricsPublisher.METRICS_INODE_DATA_MOUNTS_COUNT] = MetricsPublisher.wrap_value_type(self, data_mount_count, MetricsPublisher.GAUGE)
        metrics_to_publish[MetricsPublisher.METRICS_INODE_LOG_MOUNTS_COUNT] = MetricsPublisher.wrap_value_type(self, log_mount_count, MetricsPublisher.GAUGE)
        return metrics_to_publish
Example #2
0
    def get_metrics(self, metrics_to_publish={}):
        metrics_to_publish = MetricsPublisher.get_metrics(
            self, metrics_to_publish)
        data_mount_count = 0
        log_mount_count = 0
        for disk in psutil.disk_partitions(all=True):
            debug("inodemetrics.disk = " + str(disk))
            if "data" in disk.mountpoint:
                data_mount_count += 1
                debug("Marking disk mount %s as data drive" % disk.mountpoint)
            if "logs" in disk.mountpoint:
                log_mount_count += 1
                debug("Marking disk mount %s as log drive" % disk.mountpoint)

        metrics_to_publish[
            MetricsPublisher.
            METRICS_INODE_DATA_MOUNTS_COUNT] = MetricsPublisher.wrap_value_type(
                self, data_mount_count, MetricsPublisher.GAUGE)
        metrics_to_publish[
            MetricsPublisher.
            METRICS_INODE_LOG_MOUNTS_COUNT] = MetricsPublisher.wrap_value_type(
                self, log_mount_count, MetricsPublisher.GAUGE)
        return metrics_to_publish
    def publish_metrics(self, accessProperties=None, verifyonly=False):
        metrics = MetricsPublisher.get_metrics(self)
        source_name = self.instance_name
        self.post_metrics(source_name, metrics, accessProperties, verifyonly)

        localhostname = getLocalHostname(True)
        clusterstate = self.getClusterStateForHost(localhostname)
        debug(clusterstate)

        hosts = clusterstate["leaders"]
        for host in hosts:
            metrics_to_publish = self.populateMetrics(localhostname, host)
            self.post_metrics(self.instance_name + "." + host["core"], metrics_to_publish, accessProperties, verifyonly)
        hosts = clusterstate["replicas"]
        for host in hosts:
            metrics_to_publish = self.populateMetrics(localhostname, host, True)
            self.post_metrics(self.instance_name + "." + host["core"], metrics_to_publish, accessProperties, verifyonly)
 def populateMetrics(self, localhostname, host, replica=False):
     solr_stats_url = host["base_url"].replace(localhostname, "localhost") + "/" + host["core"] + "/admin/mbeans?cat=QUERYHANDLER&key=/select&stats=true&wt=json"
     debug(solr_stats_url)
     stats = requests.get(solr_stats_url).json()
     #requests_per_second = stats["solr-mbeans"][1]["/select"]["stats"]["avgRequestsPerSecond"]
     avg_time_per_request = stats["solr-mbeans"][1]["/select"]["stats"]["avgTimePerRequest"]
     median_time_per_request = stats["solr-mbeans"][1]["/select"]["stats"]["medianRequestTime"]
     pct95_time_per_request = stats["solr-mbeans"][1]["/select"]["stats"]["95thPcRequestTime"]
     pct75_time_per_request = stats["solr-mbeans"][1]["/select"]["stats"]["75thPcRequestTime"]
     min5_req_rate_per_second = stats["solr-mbeans"][1]["/select"]["stats"]["5minRateReqsPerSecond"]
     metrics = {}
     if not replica:
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_LEADER_AVG_REQUEST_TIME] = MetricsPublisher.wrap_value_type(self, avg_time_per_request, MetricsPublisher.GAUGE)
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_LEADER_MEDIAN_REQUEST_TIME] = MetricsPublisher.wrap_value_type(self, median_time_per_request, MetricsPublisher.GAUGE)
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_LEADER_95PCT_REQUEST_TIME] = MetricsPublisher.wrap_value_type(self, pct95_time_per_request, MetricsPublisher.GAUGE)
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_LEADER_75PCT_REQUEST_TIME] = MetricsPublisher.wrap_value_type(self, pct75_time_per_request, MetricsPublisher.GAUGE)
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_LEADER_5MIN_REQ_RATE] = MetricsPublisher.wrap_value_type(self, min5_req_rate_per_second, MetricsPublisher.GAUGE)
     else:
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_REPLICA_AVG_REQUEST_TIME] = MetricsPublisher.wrap_value_type(self, avg_time_per_request, MetricsPublisher.GAUGE)
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_REPLICA_MEDIAN_REQUEST_TIME] = MetricsPublisher.wrap_value_type(self, median_time_per_request, MetricsPublisher.GAUGE)
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_REPLICA_95PCT_REQUEST_TIME] = MetricsPublisher.wrap_value_type(self, pct95_time_per_request, MetricsPublisher.GAUGE)
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_REPLICA_75PCT_REQUEST_TIME] = MetricsPublisher.wrap_value_type(self, pct75_time_per_request, MetricsPublisher.GAUGE)
         metrics[MetricsPublisher.METRICS_SOLRCLOUD_REPLICA_5MIN_REQ_RATE] = MetricsPublisher.wrap_value_type(self, min5_req_rate_per_second, MetricsPublisher.GAUGE)
     return metrics