# coding: utf-8 import sys import psutil import time import json import telegraf from get_traffic_by_psutil import * from get_traffic_by_marsio import * from common_telegraf import * from common_logger import * from common_args import * from common_logger import * from common_get_tags import * INTERFACE_JSON_PATH = '/opt/tsg/etc/tsg_chassis_interface.json' def get_local_node(): try: with open(INTERFACE_JSON_PATH) as json_fp: json_dict = json.load(json_fp) return json_dict['local_chassis_node'] except IOError: return "" def get_interface_list(): try: with open(INTERFACE_JSON_PATH) as json_fp: json_dict = json.load(json_fp) interface_list = json_dict['interface_list'] #print(interface_list) for dev in interface_list: if 'marsio' == dev['dev_type']: logger.debug("get traffic stat by %s for: %s" %(dev['dev_type'], dev['dev_name'])) # call function in get_traffic_by_marsio.py send_metrics_by_marsio(logger, telegraf_client, dev['dev_name'], dev['flow_type'], node_name) elif 'pcap' == dev['dev_type']: logger.debug("get traffic stat by %s for: %s, please wait for 1s..." %(dev['dev_type'], dev['dev_name'])) # call function in get_traffic_by_psutil.py send_metrics_by_psutil(logger, telegraf_client, dev['dev_name'], dev['flow_type'], node_name) else: logger.critical("not support driver type %s for: %s" %(dev['dev_type'], dev['dev_name'])) sys.exit(1) except IOError: logger.critical("can't open file %s!" %(INTERFACE_JSON_PATH)) sys.exit(1) return "" if __name__ == '__main__': global node_name global telegraf_client global logger comm_arg_parser = setup_common_args() arg_options = comm_arg_parser.parse_args() logger = logger_init(arg_options.log_level) telegraf_server_ip = arg_options.telegraf_ip telegraf_server_port = int(arg_options.telegraf_port) telegraf_tags = tsg_get_tags() if len(telegraf_tags) <= 0: logger.info("not found telegraf tags.") telegraf_client = telegraf_init(telegraf_server_ip, telegraf_server_port, telegraf_tags) node_name = get_local_node() get_interface_list()