监控MySQL或Web服务是否正常

  在工作中,我们往往利用脚本定时监控本地、远端数据库服务端或Web服务是否运行正常,例如:负载高、cup高、连接数满了等....

方法一:根据端口

 本地:netstat/ss/lsof

①   netstat –lntup|grep 3306|wc –l

②   ss –lntup|grep 3306|wc -l

③   lsof –I :3306|grep mysql|wc –l

 远程:telnet/nmap/nc

①echo -e "\n"|telnet baidu.com 80|grep Connected|wc

②namp www.baidu.com -p 80|grep open|wc-l

方法二:根据进程

ps -ef|grep mysql|wc -l

wget/curl (http方式,判断根据返回值或返回内容)

header(http)根据状态码判断

数据库特有,通过mysql客户端连接,根据返回值或返回内存判断。

测试:以mysql为例(端口)

本地:

vim bqh.sh

#!/bin/sh
if [ `lsof -i tcp:3306|wc -l` -gt 0 ]
      then
    echo "MySQL is Running."
else
   echo "MySQL is Stopped."
   /etc/init.d/mysqld start
   echo "MySQL is Starting......"
fi

执行脚本后效果如下:

当然我们还可以用其它命令方法检测:

[root@lamp01 scripts]# vim bqh.sh 

#!/bin/sh
#if [ `lsof -i tcp:3306|wc -l` -gt 0 ]
#if [ `ps -ef|grep mysql|grep -v grep|wc -l` -gt 0 ] #注意脚本名字不能带mysql,自己也算进程
#if [ `netstat -lntup|grep mysql|wc -l` -gt 0 ]
if [ "`netstat -lnt|grep 3306|awk -F "[ :]+" ‘{print $5}‘`" = "3306" ]
    then
    echo "MySQL is Running."
else
   echo "MySQL is Stopped."
   /etc/init.d/mysqld start
   echo "MySQL is Starting......"
fi

注意:

如果mysql没启动,空值-eq 3306 会报错,如果以字符串的方式比较不会。

远程:

脚本如下:

vim jkmysql.sh

#!/bin/sh
#remote
#if [ `nc -w 2  192.168.43.118 3306 &>/null&&echo ok|wc -l` -gt 0 ]
if [ `nmap 192.168.43.118 -p 3306 2>/dev/null|grep open|wc -l` -gt 0 ]
    then
  echo "MySQL is Running..."
else
  echo "MySQL is Stopped."
  ssh -p22 root@192.168.43.118 "/etc/init.d/mysqld start" #此处需要做免密交互远程登录执行命令,https://www.cnblogs.com/su-root/p/10128237.html
  echo "MySQL is Starting......"
fi

我们在192.168.43.117机器上执行上面的脚本:

我们现在在192.168.43.118机器上把mysql服务关闭,然后再在192.168.43.117机器上执行脚本:

==========================华丽的分割线=================================

测试:以web为例

首先我们先启动nginx服务:

[root@lamp01 scripts]# /application/nginx/sbin/nginx
[root@lamp01 scripts]# curl -I -s www.jyw1.com|head -1
HTTP/1.1 200 OK
[root@lamp01 scripts]# curl -I www.jyw1.com 2>/dev/null |head -1
HTTP/1.1 200 OK
[root@lamp01 scripts]# 

curl -I -s www.jyw1.com|head -1 等价于 curl -I www.jyw1.com 2>/dev/null |head -1

脚本如下:

vim web.sh

#!bin/sh
if [ `curl -I -s www.jyw1.com|head -1|egrep "200"|wc -l` -eq 1 ]
 then
  echo "httpd is Running..."
else
  echo "httpd is Stopped!"
  /application/nginx/sbin/nginx
  echo "please wait..."
  echo "httpd is Runing......"
fi

当然我们还可以用其它命令方法检测:

脚本如下:

#!/bin/sh
if [ "`curl -s www.jyw1.com &>/dev/null&&echo $?`" = "0" ]
 then
  echo "Httpd is Running..."
else
  echo "Httpd is Stoped..."
  /application/nginx/sbin/nginx
  echo "please wait..."
  echo "httpd is Runing......"
fi

原文地址:https://www.cnblogs.com/su-root/p/10409973.html

时间: 2024-08-03 01:37:07

监控MySQL或Web服务是否正常的相关文章

用Azure VM + Azure Database for MySQL搭建Web服务

仍然是一篇动手实验,实验演示如何在Azure的虚拟机内部署一个Web服务器,并且使用Azure Mysql PaaS作为本应用的数据库.此实验的目的一方面是为了演示Azure IaaS层和PaaS服务配合使用的常规操作,另一方面是为之后的文章打基础,后续会以此应用程序和架构为基础,介绍更多Azure的相关服务(如Azure Web 应用,Application Insights,等).话不多说,直接进入正题吧. 实验开始之前,先介绍下开发环境: 开发语言:Python(3.6); 项目框架:Dj

haproxy的web服务负载均衡、动静分离、 MySQL服务负载均衡、状态监控

实验环境:基于centos6.6 haproxy-Server:172.16.249.98  hostname:node1 upsteram server1:172.16.249.100 hostname:node2 upstream server2:172.16.249.99  hostname:node3 web服务的负载均衡以及状态监控: 设置记录haproxy日志的文件位置: node1: #vim /etc/rsyslog.conf (1)启用UDP: # Provides UDP s

监控MYSQL服务是否异常

问题描述:监控MYSQL服务是否正常启动,如果未正常启动,就启动MYSQL 判断mysql的方法: 1)端口判断 [[email protected] ~]# netstat -lntup | grep 3306 tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2288/mysqld 2)进程判断 [[email protected] ~]# ps -ef | grep mysqld 

通过Centreon监控apache、MySQL、Hadoop服务状态

在上面的章节中,只是简单介绍了Centreon的几个基础监控项,例如添加主机.服务等,这些对于一个监控系统来说是远远不够的,本节将重点介绍对一些扩展服务的监控,也就是对一些常见应用的监控. 一. Nagios/centreon插件编写规范 作为运维人员,相信大家对脚本并不陌生,而Nagios插件就是可执行的一个脚本或程序,这个脚本可以用各种语言去实现,例如shell.perl.python都可以.对Nagios熟悉的读者肯定也编写过不少Nagios插件,虽然Nagios自带了很多常用的监控插件,

mysql和nginx服务是否正常监控脚本

一.监控web服务器和mysql方法 1.监控端口(nginx也相同) 1.1本地监控 netstat -tunlp|grep 3306|wc -l ss -tunlp|grep 3306|wc -l 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 2.监控进程(nginx同) ps -

生产环境监控mysql服务状态

在生产环境中,如果某个重要的服务关闭了,可能会产生不可预料的结果,这时候,我们要作一个脚本,这个脚本可以监控服务状态,在服务关闭的时候,可以自动打开服务,确保用户的利益. 下面我自己写了一个监控Mysql服务的脚本,目前还没有发现bug,如果有大神发现bug的话可以和我说一下哈,本人QQ:1090139534,我也是刚刚学习的,大家可以加我和我交流. #3306是mysqld服务的端口,看看是否是LISTEN状态. stat="`netstat -lnt|grep 3306 |grep  LIS

shell 实现监控Web服务状态

使用shell 实现监控Web服务状态 原理:下载网站,并把输出写入 /dev/null,如果该命令执行结果成功(返回0)打印成功提示,如果下       载失败,这再下载一次,如果还是失败,就打印失败 脚本如下 [[email protected] ~]# cat checkurl.sh  #!/bin/bash CheckUrl(){ timeout=5 fails=0 success=0 while true   do     wget --timeout=$timeout --tries

web服务文件更新自动同步、数据库主从复制、shell脚本实现网站代码备份和mysql备份

基搭建LAMP环境,并实践基于DNS做基于域名的虚拟主机中的环境,重新搭建一个同样的环境 要求: a)实现web服务文件更新的自动同步到另一台机器上 b)数据库实现主从复制 c)通过shell脚本实现网站源代码备份和mysql备份,备份策略包括全量备份.增量备份.差异备份 a,实现web服务文件更新的自动同步到另一台机器上: 1,在httpd服务器上建立基于FQDN的两个虚拟web站点,并创建相关目录. 2,修改测试windows主机的hosts文件,并编辑两个虚拟web站点对应的目录下的ind

相信很多朋友遇到过网站换服务器的问题,或成功或失败!今天3A网络小钱给大家讲的是自己的一个亲身经历,原先小钱有一个网站是在linux服务器上运行,所用的web服务为nginx+mysql+php,但由于服务器到期,新服务器用的是win2008系统,那就需要只能做好迁移! 前期做的准备 1、必须了解自己网站所用的PHP和MySQL的版本 2、网站大小

相信很多朋友遇到过网站换服务器的问题,或成功或失败!今天3A网络小钱给大家讲的是自己的一个亲身经历,原先小钱有一个网站是在linux服务器上运行,所用的web服务为nginx+mysql+php,但由于服务器到期,新服务器用的是win2008系统,那就需要只能做好迁移! 前期做的准备 1.必须了解自己网站所用的PHP和MySQL的版本 2.网站大小 3.数据库大小 由于网站过于巨大90G,而linux服务器上磁盘空间不够无法压缩,最后我选择的办法是使用FTP传,没想到什么好办法. 网站的数据库大