This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
lijia-tsg-oam/py_tools/tsg_monit_interface.py
2019-08-08 19:12:32 +08:00

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