作者:阳光而灿烂61 | 来源:互联网 | 2024-11-28 10:06
本文将详细介绍如何通过多种方法监控Web服务器(如Nginx)和数据库服务器(如MySQL)的服务状态,确保它们能够稳定运行。
1. 监控服务端口
1.1 本地监控:
使用netstat -tunlp | grep 3306 | wc -l
或ss -tunlp | grep 3306 | wc -l
命令检查MySQL服务是否在监听指定端口。
1.2 远程监控:
利用nmap 10.117.33.98 -p 3306 | grep open | wc -l
或echo -e '\n' | telnet 10.117.33.98 3306 2>/dev/null | grep Connected | wc -l
命令从远程检查MySQL端口的开放情况。
2. 监控服务进程
使用ps -ef | grep mysql | grep -v grep | wc -l
命令检查MySQL服务进程是否在运行。
3. 使用wget和curl进行HTTP请求监控
通过wget --spider --timeout=10 --tries=2 www.example.com &>/dev/null; echo $?
或curl -s -o /dev/null http://www.example.com; echo $?
命令发送HTTP请求并检查返回状态码,0表示成功,非0表示失败。
4. 示例监控脚本
4.1 MySQL服务状态监控脚本示例:
#!/sbin/bash
# 检查nmap是否已安装,未安装则自动安装
[ $(rpm -qa nmap | wc -l) -lt 1 ] && yum install -y nmap &>/dev/null
# 使用nmap检查MySQL端口是否开放
if [ $(nmap 10.117.33.130 -p 3306 | grep open | wc -l) -gt 0 ]; then
echo "MySQL is running!"
else
echo "MySQL is stopped"
# 可选:自动重启MySQL服务
# /etc/init.d/mysqld start
fi
4.2 PHP脚本检查MySQL连接状态:
$link_id = mysql_connect('localhost', 'root', 'password') or die(mysql_error());
if ($link_id) {
echo "MySQL connection successful!";
} else {
echo mysql_error();
}
?>
4.3 Nginx服务状态监控脚本示例:
#!/sbin/bash
# 检查nmap是否已安装,未安装则自动安装
[ $(rpm -qa nmap | wc -l) -lt 1 ] && yum install -y nmap &>/dev/null
# 使用nmap检查Nginx端口是否开放
if [ $(nmap 10.117.33.130 -p 80 | grep open | wc -l) -gt 0 ]; then
echo "Nginx is running!"
else
echo "Nginx is stopped"
fi
4.4 使用curl监控Nginx服务状态:
#!/sbin/bash
# 使用curl发送HTTP请求并检查返回状态
if [ $(curl -I http://10.117.33.130 2>/dev/null | head -1 | egrep '200|302|301' | wc -l) -eq 1 ]; then
echo "Nginx is running!"
else
echo "Nginx is stopped!"
fi