MyCat多实例LLD监控
Discovery_Mycat.py
#!/usr/bin/python2.6 # coding: utf-8 import sys import json import subprocess from xml.etree import ElementTree as ET def mycat_info(path): """ 根据路径读取Mycat应用的配置信息 return: {'password': 'materialcenter@137', 'managerPort': '9081', 'user': 'material_center_mycat'} """ mycat_dict = {} info = ["managerPort", "password"] root = ET.parse(path).getroot() for node in root.findall('system/property'): if node.get("name") == 'managerPort': mycat_dict["managerPort"] = node.text for node in root.findall('user'): mycat_dict["user"] = node.get('name') for i in node: if i.get("name") == "password": mycat_dict["password"] = i.text break break return mycat_dict def discovery_mycat( name=None): """ 发现运行状态的Mycat应用 """ mycat_dic = {} mycat_check = {} for i in path_list: mycat_name = i.split('/')[-1] mycat_path = '/'.join([i, 'conf/server.xml']) mycat_dic.setdefault("data", []).append({"{#MYCAT}": mycat_name}) mycat_check[mycat_name] = mycat_info(mycat_path) if name is not None: return mycat_check[name] return json.dumps(mycat_dic, indent=4) def cmd(item, **kwargs): """ 组合命令,返回符合条件的行数 """ parse_cmd = { "active": "mysql -u{user} -p{password} -P{managerPort} -h127.0.0.1 -N -e 'show @@datasource;'|awk '$7>30' |wc -l".format(**kwargs), "IDIL": "mysql -u{user} -p{password} -P{managerPort} -h127.0.0.1 -N -e 'show @@datasource;'|awk '$8>20' |wc -l".format(**kwargs) } print(parse_cmd[item]) status = subprocess.Popen(parse_cmd[item], shell=True, stdout=subprocess.PIPE).stdout.read() return status.strip() if __name__ == '__main__': result = subprocess.Popen("ps -ef |grep mycat", shell=True, stdout=subprocess.PIPE) result_list = result.stdout.read().split() path_list = [i.split('=')[1] for i in result_list if 'MYCAT_HOME' in i] if len(sys.argv) == 1: print(discovery_mycat()) elif len(sys.argv) == 3: print(cmd(sys.argv[2], **discovery_mycat(sys.argv[1])))
zabbix配置
UserParameter=Discovery_Mycat,/usr/local/zabbix/bin/Discovery_Mycat.py
                    
                
                
            
        
浙公网安备 33010602011771号