mysql 数据库监控

master
newrain 3 years ago
parent b0724c7288
commit 42dd7397b7
  1. 99
      dbMonitor.sh
  2. 10
      osMonitor.sh

@ -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

@ -35,6 +35,7 @@ function cpuLoad(){
;;
15)
uptime | awk '{print $(NF)}' | awk -F',' '{print $1}'
;;
esac
}
@ -58,6 +59,7 @@ function uptime(){
;;
idle)
echo "scale=2;a=${_idletime}/${_uptime};if (length(a)==scale(a)) print 0;print a " | bc
;;
esac
}
@ -69,6 +71,7 @@ function conns(){
;;
[1-9]*)
lsof -i:$1 | wc -l
;;
esac
}
@ -77,11 +80,12 @@ function ports(){
local p
case $1 in
portList)
p="`ss -tnul | grep -v Netid |awk '{print $5}'|awk -F ':' '{print $NF}'|sort -n|uniq`"
p="$(ss -tnul | grep -v Netid | awk '{print $5}' | awk -F ':' '{print $NF}' | sort -n | uniq)"
echo $p
;;
port)
ss -tnul | grep -v Netid | awk '{print $5}' | awk -F ':' '{print $NF}' | sort -n | uniq | wc -l
;;
esac
}
@ -90,11 +94,12 @@ function services(){
local s
case $1 in
servicesList)
s="`ls /etc/systemd/system/multi-user.target.wants/`"
s="$(ls /etc/systemd/system/multi-user.target.wants/)"
echo $s
;;
service)
ls /etc/systemd/system/multi-user.target.wants/ | wc -l
;;
esac
}
@ -133,4 +138,5 @@ Services)
;;
Crontab)
crontab $2 # user
;;
esac
Loading…
Cancel
Save