南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具

64 阅读2分钟

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

设计背景

在linux端,GBase 8a由于缺少对sql进程的有效监控和跟踪,致使维护工作不便。本工具的设计宗旨即解决该类维护问题。

设计目的

(1) 实时监控集群所有节点上sql任务并发执行情况

(2) 监控信息可压缩存档,便于追溯

(3) 监控范围可调节

(4) 监控信息含有分类统计功能

(5) 监控信息按照详细和简单分类,简单用于排查问题,详细用于追溯

工具说明

(1)该脚本用于记录和实时监控数据库中正在执行的sql,包括sql的执行时间,执行状态,sql下发源头等信息。

(2)使用前赋予可执行权限。如: chmod +x always.sh    chmod +x gcluster_process.sh

(3)该脚本只部署在集群主节点上(集群层)即可。

(4)用gbase用户新建目录 /opt/gbasetools/always

(5)将gcluster_process.sh,always.sh脚本和node_ip.list文件放在该目录下,在gcluster_process.sh脚本中修改登陆集群的用户和口令。 
在node_ip.list中存放coor节点ip; 将always.sh 挂在后台执行即可: sh always.sh &

(6)脚本正常会生成 always_result.txt和always_result.txt.full两个文件。full中存放着完整的sql,便于追溯,不带full的日志尾部有sql截断

   便于运维监控时使用。日常运维时直接tail -f always_result.txt即可,可作为日常运维集群的监控页面使用。

(7)显示结果中区分加载、非加载、普通sql的分类统计

(8)文件大小超过50万行或500MB会自动打包归档,并形成新的文件

工具详情

always.sh内容如下

#!/bin/bash


while [ 1 ]
do
echo "  `date +%F.%T`########################################################################################################" >> always_result.txt
sh gcluster_process.sh | grep -v Sleep | grep -v "show full processlist"  > tmp.gcluster_p.log

# catch full processlist log
echo " `date +%F.%T`########################################################################################################"  >> always_result.txt.full
cat tmp.gcluster_p.log | grep -viE 'Info$|event_scheduler.*Waiting for next activation' |sort -k 8,8nr >> always_result.txt.full


cat tmp.gcluster_p.log| grep -v Info |sed s/"checking permissions"/" "/g | awk '{print $1,$2,$3,$8,$9,$10,$11,$12,substr($13,1,500),substr($14,1,500),$15,$16,$17,$18}' |sort -k 5,5nr >> always_result.txt

echo non-load process number: `grep -v 'processlist' tmp.gcluster_p.log |grep -viE 'LOAD DATA INFILE' | grep -v Host | wc -l`  >> always_result.txt
echo load process number: `grep -iE 'LOAD DATA INFILE' tmp.gcluster_p.log| wc -l`  >> always_result.txt
echo sql-stmt number: `grep -iE 'insert|delete|select|update|drop|create' tmp.gcluster_p.log|grep -v 'LOAD DATA INFILE'| wc -l`  >> always_result.txt

sleep 10

if [ `cat always_result.txt|wc -l` -gt 500000 ] || [ `du -sk always_result.txt.full | awk '{print $1}'` -gt 500000 ] ;then
        tar cvfz  `pwd`/logbakup/always_result_`date +%F.%H%M%S`.tar.gz always_result.txt
        tar cvfz  `pwd`/logbakup/always_result_full_`date +%F.%H%M%S`.tar.gz always_result.txt.full
        echo >always_result.txt
        echo >always_result.txt.full
fi
done

gcluster_process.sh内容如下:

#!/bin/bash

. /home/gbase/.gbase_profile

cmd="$GCLUSTER_HOME/bin/gbase -ugbase -pgbase20110531"

while read node_ip
do
        $cmd -h $node_ip -P5258 -e "show full processlist" |sed 's/\n/ /g'|sed 's/\t/ /g'| while read line
        do
                dtime=`date +%Y-%m-%d' '%H:%M:%S`
                echo "#$dtime#HOST:$node_ip---------" "$line"
        done
done<node_ip.list 

node_ip.list 内容如下:

192.168.56.101
192.168.56.102

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。