GBase 8a
运维管理
文章

GBase 8aSQL进程监控 Linux端

发表于2024-12-31 09:14:5337次浏览2个评论

设计背景
在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

 

评论

登录后才可以发表评论
崔哥发表于 8个月前
篱落疏疏一径深,树头花落未成阴。儿童急走追黄蝶,飞入菜花无处寻。
崔哥发表于 2个月前
楼上黄昏欲望休,玉梯横绝月中钩。芭蕉不展丁香结,同向春风各自愁。东南日出照高楼,楼上离人唱石州。总把春山扫眉黛,不知供得几多愁?