72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
# 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() |