shell—服务监控
监测mysql数据库异常
1.端口监控
- 服务器本地监控端口
在服务器本地监控端口的命令有:netstat
ss
lsof
netstat:
netstat -antlpe | grep mysql
netstat -antlpe | grep 3306 | awk -F "[ :]+" '{print $5}'
对端口进程进行判断时,尽量先通过grep过滤端口和进程标记特殊字符串,然后结合wc -l(统计输出的行数)将结果转换成行数再进行比较,相对简单有效。而且会经过wc -l命令处理之后的结果一定是数字,这样再进行判断比较简单
netstat -antlpe | grep mysql |wc -l
ss:类似于netstat,参数选项可通用
ss -antlpe | grep mysql | wc -l
lsof:
yum install lsof -y
lsof -i tcp:3306 |wc -l
- 在远程服务器监控本地端口
在远程服务器监控本地端口的命令:nmap
telnet
nc
在远程主机:
nmap:
yum install telnet nmap nc -y
nmap 172.25.254.236 -p 3306
nmap 172.25.254.236 -p 3306 | grep open
nmap 172.25.254.236 -p 3306 | grep open | wc -l
查看远程端口是否开通,过滤open关键字,结果返回1,说明3306端口是通的
telnet:
telnet 172.25.254.236 3306
telnet 172.25.254.236 3306 | grep Connected
telnet 172.25.254.236 3306 | grep Connected | wc -l
telnet是常用来监测远程服务器端口是否通畅的一个命令,在非交互式需要采用特殊写法。过滤的关键字为Connected,返回1,说明3306端口是通的
2.对服务进程或进程数进行监控
对服务进程或进程数进行监控(适合本地服务器)
ps -ef | grep mysql |wc -l #此处把过滤的动作也当作了一个进程
ps -ef | grep mysql |grep -v grep
ps -ef | grep mysql |grep -v grep | wc -l
3.开发监控mysql数据库的脚本
脚本1:
#!/bin/bash
if [ "`netstat -antlpe | grep 3306 | awk -F '[ :]+' '{print $5}'`" = "3306" ]
then
echo "mysql is running"
else
echo "mysql is stop,now start it"
systemctl start mariadb
fi
脚本2:
#!/bin/bash
if [ `netstat -antlpe | grep 3306 | wc -l` -eq 1 ]
then
echo "mysql is running"
else
echo "mysql is stop,now start it"
systemctl start mariadb
fi