parent
b0724c7288
commit
42dd7397b7
@ -0,0 +1,99 @@ |
||||
#!/usr/bin/bash |
||||
|
||||
# os check |
||||
# build 2021-06-16 |
||||
|
||||
replPasswd=$1 # zabbix传参 |
||||
replUser=root |
||||
cmdPath=/usr/bin/mysql |
||||
slowLog=/var/log/mysql/slow.log |
||||
slowTmp=/tmp/.slowLog |
||||
# mysql ms monitor |
||||
|
||||
#1、数据库存活 |
||||
function Heartbeat() { |
||||
$cmdPath -u$replUser -p$replPasswd -e 'select user' &>/dev/null |
||||
echo $? |
||||
} |
||||
|
||||
#7、主从同步情况 |
||||
function Twins() { |
||||
result=$($cmdPath -u$replUser -p$replPasswd -e 'show slave status\G' 2>/dev/null | grep 'Running:') |
||||
echo $result | grep Yes >/dev/null && s=0 || s=1 && echo $s |
||||
} |
||||
|
||||
#2、增删改查次数 QPS、TPS |
||||
function Crud() { |
||||
local _result _uptime |
||||
_uptime=$($cmdPath -N -u$replUser -p$replPasswd -e "show global status like 'Uptime'" 2>/dev/null | awk '{print $2}') |
||||
if [ $1 == 'QPS' ] || [ $1 == 'qps' ] || [ $1 == 'Qps' ]; then |
||||
_select=$($cmdPath -N -u$replUser -p$replPasswd -e "show global status like 'Com_select'" 2>/dev/null | awk '{print $2}') |
||||
_update=$($cmdPath -N -u$replUser -p$replPasswd -e "show global status like 'Com_update'" 2>/dev/null | awk '{print $2}') |
||||
_insert=$($cmdPath -N -u$replUser -p$replPasswd -e "show global status like 'Com_insert'" 2>/dev/null | awk '{print $2}') |
||||
_delete=$($cmdPath -N -u$replUser -p$replPasswd -e "show global status like 'Com_delete'" 2>/dev/null | awk '{print $2}') |
||||
_result=$(($_select + $_update + $_insert + $_delete)) |
||||
echo "scale=5;a=${_result}/${_uptime};if (length(a)==scale(a)) print 0;print a " | bc |
||||
elif [ $1 == 'TPS' ] || [ $1 == 'tps' ] || [ $1 == 'Tps' ]; then |
||||
_commit=$($cmdPath -N -u$replUser -p$replPasswd -e "show global status like 'Com_commit'" 2>/dev/null | awk '{print $2}') |
||||
_rollback=$($cmdPath -N -u$replUser -p$replPasswd -e "show global status like 'Com_rollback'" 2>/dev/null | awk '{print $2}') |
||||
_result=$(($_commit + $_rollback)) |
||||
echo "scale=5;a=${_result}/${_uptime};if (length(a)==scale(a)) print 0;print a " | bc |
||||
else |
||||
_result=$($cmdPath -N -u$replUser -p$replPasswd -e "show global status like 'Com_${1}'" 2>/dev/null | awk '{print $2}') |
||||
echo $_result |
||||
fi |
||||
} |
||||
|
||||
#4、慢查询日志 |
||||
function SlowLog() { |
||||
#slowlog config my.cnf |
||||
#[mysqld] |
||||
#slow_query_log = ON |
||||
#slow_query_log_file = /var/log/mysql/slow.log |
||||
#long_query_time = 5 |
||||
newLines=$(cat $slowLog | wc -l) |
||||
datetime=$(date +%y%m%d%H) |
||||
if [ -f $slowTmp ]; then |
||||
oldLines=$(cat $slowTmp) |
||||
diff=$(($newLines - $oldLines)) |
||||
tail -n $diff $slowLog |
||||
else |
||||
echo -n $newLines >$slowTmp |
||||
fi |
||||
if [ $(du -s $slowLog | awk '{print $1}') -ge 2000 ]; then |
||||
cat $slowLog >/var/log/mysql/slow${datetime}.log && echo -n >$slowLog && echo -n 0 >$slowTmp |
||||
fi |
||||
} |
||||
|
||||
#5、数据库最大连接数 |
||||
function Config() { |
||||
_result=$($cmdPath -N -u$replUser -p$replPasswd -e "show variables like \"$1\"" 2>/dev/null | awk '{print $2}') |
||||
echo $_result |
||||
} |
||||
|
||||
#8、数据库登陆主机为%的用户 |
||||
function RemoteUser(){ |
||||
_result=$($cmdPath -N -u$replUser -p$replPasswd -e "select User from mysql.user where Host='%';" 2>/dev/null | awk '{print $2}') |
||||
echo $_result |
||||
} |
||||
|
||||
case $2 in |
||||
heartbeat) |
||||
Heartbeat |
||||
;; |
||||
crud) |
||||
Crud $3 # insert update delete select commit rollback qps tps |
||||
;; |
||||
twins) |
||||
Twins |
||||
;; |
||||
slowlog) |
||||
SlowLog |
||||
;; |
||||
config) |
||||
Config $3 # max_connections innodb_buffer_pool_size ... |
||||
;; |
||||
*) |
||||
echo 999 |
||||
;; |
||||
esac |
Loading…
Reference in new issue