监控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

我们也可以监控nginx服务是否开启(进程或端口等方式)
脚本如下:
vim web2.sh
#!/bin/sh
if [ `ps -ef|grep nginx|wc -l` -ge 2 ]
then
echo "Httpd is Running... "
else
echo "Httpd is Stoped..."
/application/nginx/sbin/nginx
echo "please wait..."
sleep 1
echo "Httpd is Running..."
fi

其他方法:
echo $? #等于0
lsof -i :端口号|wc -l #大于等于1
nmap ip地址 -p 端口|grep open|wc -l #等于1
wget --spider --timeout=10 --tries=2 ip地址 &>/dev/null #返回值等于0
curl -I -s -w "%{http_code}" -o /dev/null ip地址 #等于200
监控MySQL或Web服务是否正常的更多相关文章
- 通过Centreon监控apache、MySQL、Hadoop服务状态
在上面的章节中,只是简单介绍了Centreon的几个基础监控项,例如添加主机.服务等,这些对于一个监控系统来说是远远不够的,本节将重点介绍对一些扩展服务的监控,也就是对一些常见应用的监控. 一. Na ...
- Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间
Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...
- shell脚本监控MySQL服务是否正常
监控MySQL服务是否正常,通常的思路为:检查3306端口是否启动,ps查看mysqld进程是否启动,命令行登录mysql执行语句返回结果,php或jsp程序检测(需要开发人员开发程序)等等: 方法1 ...
- cacti系列(一)之cacti的安装及配置监控mysql服务
简介 Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构 ...
- zabbix-server端监控MySQL服务
Zabbix 监控MySQL数据库 为server.zabbix,com 添加服务模块 创建MySQL服务图形 Server.zabbix.com 服务器操作 [root@server ~]# cd ...
- 监控web服务(http,本地 / 远程监控nginx)
监控 httpd 服务一: #!/bin/bash #描述: 秒级别监控 http 服务 while [ 1 -lt 2 ] do sleep 10 ai=`netstat -ntl | grep & ...
- shell习题第26题:监控mysql服务
[题目要求] 假设mysql密码是123456. 写脚本监控mysql服务是否正常,比如是否可以执行show processlist,并检测一下当前的mysql服务是主还是从.如果是从,请判断他的主从 ...
- 监控MySQL服务及httpd服务
一:监控MySQL服务 [root@server ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf PidFile=/tmp/zabbix_agentd ...
- 【Prometheus+Grafana系列】监控MySQL服务
前言 前面的一篇文章已经介绍了 docker-compose 搭建 Prometheus + Grafana 服务.当时实现了监控服务器指标数据,是通过 node_exporter.Prometheu ...
随机推荐
- Mysql加锁过程详解(2)-关于mysql 幻读理解
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
- tcp_wrapper过滤
1.1 wrap简介 wrap工作在内核空间和应用程序中间的库层次中.在内核接受到数据包准备传送到用户空间时都会经过库层次,对于部分(只是部分)应用程序会在经过库层次时会被wrap库文件阻挡下来检查一 ...
- 前端(一)之 HTML
前端之 HTML 前言 python 基础.网络编程.并发编程与数据库要开始告一段落了,从现在开始进入前端的学习.前端的东西多且杂,需要好好地练习. 什么是前端 前端即网站前台部分,运行在 PC 端, ...
- YARN集群的mapreduce测试(一)
hadoop集群搭建中配置了mapreduce的别名是yarn [hadoop@master01 hadoop]$ mv mapred-site.xml.template mapred-site.xm ...
- 分部视图(Partial View)及Html.Partial和Html.Action差异
参考资料: https://www.cnblogs.com/Leon-Hu/p/5575311.html
- [PHP] 算法-数值的整数次方的PHP实现
给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 1.指数的二进制表达10^6次方 可以表示10^110(二进制) 10^100 ...
- [PHP]算法-最长公共子串的PHP实现
最长公共子串问题: 给定两个字符串,求出它们之间最长的相同子字符串的长度. 暴力解法思路: 1.以两个字符串的每个字符为开头,往后比较,这样就会需要两层循环 2.两层循环内部的比较方式,也是一层循环, ...
- JSJ—编译器与虚拟机哪个重要?
阅读本文约“2分钟” 熟悉Java的朋友都知道虚拟机还有编译器,那么它们各自主要的功能是什么?谁比较重要呢?让我们来了解一下这两位美女的故事. 虚拟机可以说就是Java,她能让程序运行起来. 但是编译 ...
- Java学习笔记之——多态、抽象
1. 多态 多态:同一种事物调用同一个方法有不同的表现行为.(同一类型操作,作用于某一类对象,可以有不同的解释,产生不同的执行结果) 应用场景;当你定义一个功能性的方法可以使用多态的概念 前提:子类继 ...
- Flask 系列之 LoginManager
说明 操作系统:Windows 10 Python 版本:3.7x 虚拟环境管理器:virtualenv 代码编辑器:VS Code 实验目标 通过使用 flask-login 进行会话管理的相关操作 ...