1 集群状态监控
1.1.查看集群状态
查看集群各节点运行状态,包括各节点gcware服务是否正常、各节点gcluster、gnode和syncserver三个关键服务运行状态、节点数据状态是否一致、节点是否可用,可通过以下三种方式进行查看:
1)前台方式:
执行频度:1小时
执行环境:大数据平台统一监控平台
执行步骤:
- 登录大数据平台统一监控平台,查看“首页”功能,查看集群整体运行状态,如下图所示:
绿色集群状态正常,如果集群状态显示为红色,表示集群有异常。
- 查看某集群所有节点运行状态,单击“监控中心-->GBase环境-->集群状态监控”功能
2)后台方式:
执行频度:1小时
执行环境:ORACLE监控库
执行步骤
说明:监控库DWMS_DATABASE_INFO表,记录了目前所有生产环境节点的状态,每分钟采集一次。该数据是使用gcadmin采集的,字段含义和gcadmin含义一致。
- 查看节点是否异常:
select cluster_id, node_id, gnode, gcluster, data_state, node_state from dwms_database_info where valid_flag = 0 and (gnode = 'CLOSE' or gcluster = 'CLOSE' or data_state = 1 or node_state = 'Offline') ; - 查看加载机是否有异常:如果有记录,则表示,集群状态有异常。
select cluster_id, node_id from dwms_node_conf where (cluster_id,node_id) not in (select cluster_id, node_id from dwms_database_info where valid_flag = 0);
3)手工执行脚本
执行频度:1小时
执行环境:集群各节点
执行步骤
登录到需要查看集群的任意节点,使用gcadmin命令,查看集群的当前状态,如下图所示:
其中:
gcware:Online正常,Offline异常
gnode:OPEN正常,CLOSE异常
gcluster:OPEN正常,CLOSE异常
syncserver:OPEN正常,CLOSE异常
datastate:0表示节点数据处于正常状态,1表示本节点有表数据处于异常状态,如果出现1,集群内同步工具会自动恢复
nodestate:显示节点主机的健康状态,0表示正常,1表示属于故障状态。
1.2 集群状态异常问题处理
监控过程中出现gcware、gnode、gcluster、syncserver、datastate、nodestate异常问题均需要引起关注,问题出现后需要对问题进行处理、反馈,并配合完成异常节点的处理。
2 SQL监控
2.1.查看当前SQL
当集群运行缓慢时,可以查看集群当前正在执行的所有SQL,可以判断哪些SQL执行过长,当前集群正在执行的SQL整体是否过慢等,通过监控SQL运行状态找出集群问题或者发现潜在问题。
判断集群整体SQL是否运行缓慢有以下三个参考条件:
1)存在较多sql运行时间在1000秒以上(超过10条),且无执行时间在10秒以下的sql;
2)create、drop等ddl语句占比多,且多数耗时大于30;
3)执行简单sql 如select count(*) from table_a 时间大于30秒
有以下三种方式可以查看正在运行的SQL:
1)前台方式:
执行频度:1小时
执行环境:大数据平台统一监控平台
执行步骤:登录大数据平台统一监控平台,单击“监控中心-->GBase环境-->GBase并发监控”,界面如下图所示:
2)后台方式:
执行频度:1小时
执行环境:ORACLE监控库
执行步骤:说明:监控库DWMS_SQL_INFO表,记录了目前所有生产环境当前正在执行的SQL信息,每分钟采集一次。
- 当前执行SQL:
select exe_node_ip, session_pid, session_time, sql_info from dwms_sql_info where valid_flag=0 and sql_type = 'TRANS' and sql_info not like '%sub_step%' and sql_info not like '%GCLUSTER_LOCAL%' and cluster_id='BDPA' order by to_number(session_time); - 当前加载:
select exe_node_ip, session_pid, session_time, sql_info from dwms_sql_info where valid_flag=0 and sql_type = 'LOAD' and sql_info not like '%sub_step%' and sql_info not like '%GCLUSTER_LOCAL%' and cluster_id='BDPA' order by to_number(session_time);
3)手工调用脚本方式:
执行频度:1分钟
执行环境:各集群第一个加载机
执行步骤:登录每个环境的第一个加载机上,执行tail -f gbase/ping_node/always_result.txt查看集群当前正在执行的所有SQL ,其中non-load process number: 46 表示非加载SQL数,load process number: 0 表示正在加载的进程数。
备注:
通过以上3个方式可查看的存在问题的SQL 执行的时间、发起节点、SQL语句,但SQL显示的是截断后的SQL,查看完整的SQL需要登录到发起SQL的节点,登录GBase后,执行show full processlist;也可在linux命令行直接执行gbase –u用户名 –p密码 –h节点IP -e"show full processlist;" | grep -ivE “sleep|Daemon”
由于GBase集群采用的是分布式扁平架构,每个节点都可以作为集群的入口,所以,要查看整个集群当前正在执行的SQL,需要连接到每个节点并执行上述SQL。
2.2.SQL异常问题处理
SQL监控主要关注执行时间过长的SQL,SQL执行时间过长可能是:
1)SQL语句本身编写不符合GBase特性,造成执行效率低下
2)考虑是否有笛卡尔积,如果存在笛卡尔积可能会是集群资源不足,导致集群性能急剧下降
针对SQL语句编写问题,主要关注如下几个方面:
- 表类型不合理或者分布列不合理
- 笛卡尔积问题
- 如果分析后该SQL存在问题,且继续运行可能会影响集群的使用,则可以使用kill命令结束问题SQL。