1 集群状态监控

1.1.查看集群状态

查看集群各节点运行状态,包括各节点gcware服务是否正常、各节点gcluster、gnode和syncserver三个关键服务运行状态、节点数据状态是否一致、节点是否可用,可通过以下三种方式进行查看:

1)前台方式:

执行频度:1小时

执行环境:大数据平台统一监控平台

执行步骤:

  •  登录大数据平台统一监控平台,查看“首页”功能,查看集群整体运行状态,如下图所示:

GBase集群监控_加载

       绿色集群状态正常,如果集群状态显示为红色,表示集群有异常。

  • 查看某集群所有节点运行状态,单击“监控中心-->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命令,查看集群的当前状态,如下图所示:

GBase集群监控_加载_02

其中:
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并发监控”,界面如下图所示:

GBase集群监控_加载_03

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 表示正在加载的进程数。

GBase集群监控_8a_04

备注:
通过以上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。