def main(): """ Main function to run the check """ args = parse_args() zagg_sender = ZaggSender(verbose=args.verbose, debug=args.debug) discovery_key_disk = 'disc.disk' interval = 3 pcp_disk_dev_metrics = ['disk.dev.total', 'disk.dev.avactive'] item_prototype_macro_disk = '#OSO_DISK' item_prototype_key_tps = 'disc.disk.tps' item_prototype_key_putil = 'disc.disk.putil' disk_metrics = pminfo.get_sampled_data(pcp_disk_dev_metrics, interval, 2) pcp_metrics_divided = {} for metric in pcp_disk_dev_metrics: pcp_metrics_divided[metric] = { k: v for k, v in disk_metrics.items() if metric in k } # do TPS checks; use disk.dev.total filtered_disk_totals = clean_up_metric_dict( pcp_metrics_divided[pcp_disk_dev_metrics[0]], pcp_disk_dev_metrics[0] + '.') # Add dynamic items zagg_sender.add_zabbix_dynamic_item(discovery_key_disk, item_prototype_macro_disk, filtered_disk_totals.keys()) # calculate the TPS and add them to the ZaggSender for disk, totals in filtered_disk_totals.iteritems(): disk_tps = (totals[1] - totals[0]) / interval zagg_sender.add_zabbix_keys( {'%s[%s]' % (item_prototype_key_tps, disk): disk_tps}) # do % Util checks; use disk.dev.avactive filtered_disk_totals = clean_up_metric_dict( pcp_metrics_divided[pcp_disk_dev_metrics[1]], pcp_disk_dev_metrics[1] + '.') # calculate the % Util and add them to the ZaggSender for disk, totals in filtered_disk_totals.iteritems(): total_active = (float)(totals[1] - totals[0]) / 1000.0 putil = 100 * total_active / interval zagg_sender.add_zabbix_keys( {'%s[%s]' % (item_prototype_key_putil, disk): putil}) zagg_sender.send_metrics()
def main(): '''Run pminfo against a list of metrics. Sample metrics passed in for an amount of time and report data to zabbix ''' args, parser = parse_args() if not args.metrics: print print 'Please specify metrics with -m.' print parser.print_help() sys.exit(1) metrics = args.metrics interval = int(args.interval) count = int(args.count) # Gather sampled data data = pminfo.get_sampled_data(metrics, interval, count) zab_results = collections.defaultdict(list) for metric_name, val in data.items(): if 'kernel' in metric_name: for sample in range(len(val)): if sample + 1 == len(val): break zab_results[metric_name].append( pminfo.calculate_percent_cpu(val[sample], val[sample + 1], interval)) else: print 'NOT SUPPORTED: [%s]' % metric_name if zab_results.get(metric_name, None) != None and (args.verbose or args.debug): print '%s: %.2f' % (metric_name, zab_results[metric_name][-1]) zab_results = get_averages(zab_results) # Send the data to zabbix if not args.test: mts = MetricSender(verbose=args.debug) mts.add_metric(zab_results) mts.send_metrics()
def main(): """ Main function to run the check """ args = parse_args() zagg_sender = ZaggSender(verbose=args.verbose, debug=args.debug) discovery_key_disk = 'disc.disk' interval = 3 pcp_disk_dev_metrics = ['disk.dev.total', 'disk.dev.avactive'] item_prototype_macro_disk = '#OSO_DISK' item_prototype_key_tps = 'disc.disk.tps' item_prototype_key_putil = 'disc.disk.putil' disk_metrics = pminfo.get_sampled_data(pcp_disk_dev_metrics, interval, 2) pcp_metrics_divided = {} for metric in pcp_disk_dev_metrics: pcp_metrics_divided[metric] = {k: v for k, v in disk_metrics.items() if metric in k} # do TPS checks; use disk.dev.total filtered_disk_totals = clean_up_metric_dict(pcp_metrics_divided[pcp_disk_dev_metrics[0]], pcp_disk_dev_metrics[0] + '.') # Add dynamic items zagg_sender.add_zabbix_dynamic_item(discovery_key_disk, item_prototype_macro_disk, filtered_disk_totals.keys()) # calculate the TPS and add them to the ZaggSender for disk, totals in filtered_disk_totals.iteritems(): disk_tps = (totals[1] - totals[0]) / interval zagg_sender.add_zabbix_keys({'%s[%s]' % (item_prototype_key_tps, disk): disk_tps}) # do % Util checks; use disk.dev.avactive filtered_disk_totals = clean_up_metric_dict(pcp_metrics_divided[pcp_disk_dev_metrics[1]], pcp_disk_dev_metrics[1] + '.') # calculate the % Util and add them to the ZaggSender for disk, totals in filtered_disk_totals.iteritems(): total_active = (float)(totals[1] - totals[0]) / 1000.0 putil = 100 * total_active / interval zagg_sender.add_zabbix_keys({'%s[%s]' % (item_prototype_key_putil, disk): putil}) zagg_sender.send_metrics()
def main(): '''Run pminfo against a list of metrics. Sample metrics passed in for an amount of time and report data to zabbix ''' args, parser = parse_args() if not args.metrics: print print 'Please specify metrics with -m.' print parser.print_help() sys.exit(1) metrics = args.metrics interval = int(args.interval) count = int(args.count) # Gather sampled data data = pminfo.get_sampled_data(metrics, interval, count) zab_results = collections.defaultdict(list) for metric_name, val in data.items(): if 'kernel' in metric_name: for sample in range(len(val)): if sample + 1 == len(val): break zab_results[metric_name].append(pminfo.calculate_percent_cpu(val[sample], val[sample+1], interval)) else: print 'NOT SUPPORTED: [%s]' % metric_name if zab_results.get(metric_name, None) != None and (args.verbose or args.debug): print '%s: %.2f' % (metric_name, zab_results[metric_name][-1]) zab_results = get_averages(zab_results) # Send the data to zabbix if not args.test: zgs = ZaggSender(verbose=args.debug) zgs.add_zabbix_keys(zab_results) zgs.send_metrics()