监控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 ...
随机推荐
- Java基础系列--throw、throws关键字
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8484697.html 一.概述 throw和throws就是异常相关的关键字,在java中 ...
- Go 包依赖管理工具 —— govendor
govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...
- spark集群的简单测试和基础命令的使用
写此篇文章之前,已经搭建好spark集群并测试成功: spark集群搭建文章链接:http://www.cnblogs.com/mmzs/p/8193707.html 一.启动环境 由于每次都要启动, ...
- 【golang-GUI开发】struct tags系统(一)
我们已经介绍了qt的signal和slot,现在该讲讲它的struct tags系统了.qt拥有多种的struct tags,我们会去一一了解它们. 什么是struct tags? struct ta ...
- python的一些内置模块
整理了几种python的常用内置模块. 内置函数思维导图:https://www.processon.com/view/link/5c7902b1e4b0168e4200846a re模块 re(re ...
- [转]GitLab Continuous Integration (GitLab CI/CD)
本文转自:https://docs.gitlab.com/ee/ci/README.html GitLab Continuous Integration (GitLab CI/CD) The bene ...
- 操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null
报错:操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null . 同时修改主表和从表的数据,想用EF主表T_ReviewPlan中某个对象item删除item对应的从表T_ReviewS ...
- EChart中使用地图方式总结(转载)
EChart中使用地图方式总结 2018年02月06日 22:18:57 来源:https://blog.csdn.net/shaxiaozilove/article/details/79274772 ...
- [PHP] PHP在CLI环境下的错误日志
1.display_errors = Off;//控制php是否输出错误;在生产环境中输出会泄露敏感信息;建议记录错误而不是将它们发送到STDOUToff :不显示任何错误;stderr :向STDE ...
- 详解-制作根文件系统,并使用yaffs,jffs,nfs挂载系统(2)
1.安装mkyaffsimage, mkyaffs2image命令(用来制作yaffs文件系统) 第一个命令针对Flash小页512B,第二个针对Flash大页2KB首先下载压缩文件 yaffs_so ...