def check_segment(self): """检查数据库segment节点是否起着""" data = self.db_fun_query( """select status from gp_segment_configuration where content!='-1' and role='p';""", """select * from gp_segment_configuration where content!='-1' and role='p';""" ) api.urlPost(data)
def check_overtime_sql(self): """检查超时sql,返回超时SQL数量""" data = self.db_fun_query( """SELECT count(1) FROM pg_stat_activity WHERE current_query != '<IDLE>' AND current_query NOT ILIKE '%pg_stat_activity%' AND age(clock_timestamp(),query_start)>= '2 hours'::interval;""", """SELECT procpid,query_start,age(clock_timestamp(),query_start),usename,current_query FROM pg_stat_activity WHERE current_query != '<IDLE>' AND current_query NOT ILIKE '%pg_stat_activity%' AND age(clock_timestamp(),query_start) >= '2 hours'::interval ORDER BY query_start desc;""") api.urlPost(data)
def check_CPU(self): """检查CPU""" ssh = ssh_server(self.host_obj) query_result = fun_query( ssh, """vmstat|awk 'NR==3 {print ($13+$14)/100}'""", """vmstat""") data = api.format_json(self.project_nick, self.host_obj.host_nick, None, self.service_dict['m_type'], self.service_dict['m_dim'], query_result[0], query_result[1], query_result[2]) api.urlPost(data)
def check_master(self): """ 检查数据库MASTER节点是否起着 1. content='-1' 代表master节点,否则为segment节点 2. role='p' 代表当前角色为primary """ data = self.db_fun_query( """select status from gp_segment_configuration where content='-1' and role='p';""", """select * from gp_segment_configuration where content='-1' and role='p';""" ) api.urlPost(data)
def check_process(self): """检查newbi进程""" ssh = ssh_server(self.host_obj) query_result = fun_query( ssh, """ps -ef | grep jetty | grep -v "grep" | wc -l""", """ps -ef | grep jetty | grep -v 'grep'""") data = api.format_json(self.project_nick, self.host_obj.host_nick, None, self.service_dict['m_type'], self.service_dict['m_dim'], query_result[0], query_result[1], query_result[2]) api.urlPost(data)
def check_memory(self): """检查MEMORY""" ssh = ssh_server(self.host_obj) query_result = fun_query(ssh, """vmstat|awk 'NR==3 {print $4/1024"MB"}'""", """vmstat""") data = api.format_json(self.project_nick, self.host_obj.host_nick, None, self.service_dict['m_type'], self.service_dict['m_dim'], query_result[0], query_result[1], query_result[2]) api.urlPost(data)
def check_disk(self): """检查DISK""" ssh = ssh_server(self.host_obj) query_result = fun_query( ssh, """iostat -dx|awk 'BEGIN{max=0} {if($14+0>max+0) max=$14} END{print max/100}'""", """iostat""") data = api.format_json(self.project_nick, self.host_obj.host_nick, None, self.service_dict['m_type'], self.service_dict['m_dim'], query_result[0], query_result[1], query_result[2]) api.urlPost(data)
def check_IOPS(self): """检查IOPS""" ssh = ssh_server(self.host_obj) # 最大的一个iops query_result = fun_query( ssh, """iostat |awk 'BEGIN{max=0} NR>6 {if($2+0>max+0) max=$2} END{print max}'""", """iostat""") data = api.format_json(self.project_nick, self.host_obj.host_nick, None, self.service_dict['m_type'], self.service_dict['m_dim'], query_result[0], query_result[1], query_result[2]) api.urlPost(data)
def check_process(self): """ 检查KETTLE进程是否存在 1. 创建ssh 对象 2. 在目标服务器上执行命令 3. post数据 :return: """ # 1. 生成ssh对象 ssh = ssh_server(self.host_obj) # 2. 查询数据 query_result = fun_query( ssh, """ps -ef | grep spoon.sh | grep -v 'grep'|wc -l""", """ps -ef | grep spoon.sh | grep -v 'grep'""") # 3. 格式化数据 data = api.format_json(self.project_nick, self.host_obj.host_nick, None, self.service_dict['m_type'], self.service_dict['m_dim'], query_result[0], query_result[1], query_result[2]) # 4. 向接口中post数据 api.urlPost(data)
def check_connections(self): """检查数据库连接数""" data = self.db_fun_query("""select count(1) from pg_stat_activity;""", """select count(1) from pg_stat_activity;""") api.urlPost(data)