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 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