最近,自己业务进行上线,上线后,需要考虑的是对各种服务进行监控,包括(httpd服务,mysqld服务等),现在想以mysqld服务为例总结下那种方式的脚本最为专业和合理:

(1).根据mysql的端口号来监控mysql的服务。(常见于监控mysql的本地服务)

比较常见的一个脚本:

 netstat -natup|grep mysqld|awk -F'[ :]+' '{print $5}'

 上面是将mysqld的端口号进行了过滤,这个方法的缺点是:有可能是端口在,但是服务可能是不正常的。例如:系统负载很高,cpu的负载也很高,连接数满了,这个是其存在的问题之一。

(2).根据mysql的进程监控mysql的服务:

比较常见的一个脚本:

 ps -aux |grep mysqld |grep -v grep|wc -l

这种方式的缺点也是和上面的一样:有可能是端口在,但是服务可能是不正常的。例如:系统负载很高,cpu的负载也很高,连接数满了,这个是其存在的问题之一。

(3). 通过mysql客户端的命令以及用账户连接mysql,然后根据确定返回的命令状态或者返回的内容来确定mysql是否正常(本地或者是远程的连接状态)。

比较常见的一个判断脚本(只是其中的一些个核心内容):

 mysql -uroot -p1234 -e'select version();'>&/dev/null
echo $?

如果上面的$?是0 的话,说明是能够正常连接的,如果为1的话,则说明是连接失败的。

这种方式的缺点是,需要有mysql的连接客户端,要有数据的账号和密码,以及连接数据库主机的授权。

(4).通过php/java的方式直接连接mysql的方式来监控mysql的服务状态。

比较常见的一个脚本,也是比较简单的:

 <?php
$conn = mysql_connect('root','1234','locahost',3306) or die('mysql coulc not connect'.mysql_error()); ?>

这种方式是最接近用户的访问方式,效果是最好的,因为上面的这种方式尽管就算是端口存在,但是只要服务器的cpu负载很高,那用户的访问肯定是不正常的。

所以报警的最佳方式不是服务的报警是否开启了,而是网站的用户访问是否还是正常。这才是最佳的报警原则和方式。  我们应该从用户的角度出发考虑问题,而不是说从运维的角度来考虑问题。 所以应该在工作中使用这个方式。

(5).下面来看下Apache或者是nginx的监控脚本的一些常用的写法:

其实Apache的监控和mysql的监控本质上都是一样的,可以仿照上面的方法进行编写。

但是还是要介绍一个比较新的方式,使用nmap的方式来进行监测,服务的端口有没有打开,可以监控远端的服务器的端口有没有打开:

 HttpPortNum=`namp localhost -p |grep open |wc -l`
if [ HttpPortNum -eq ];then
echo "httpd is running!"
else
echo "httpd is not running!"
/data0/apache/bin/apachectl start &
fi

(6).使用URL的方式来进行监控:

 #!/bin/bash
wget -T -q --spider http://10.210.66.81/ >&/dev/null if [ $? -eq ];then
echo "httpd is running!"
else
echo "httpd is not running!"
/data0/http2/bin/apachectl start &
fi

(7).使用http code的方式来进行判断:

 #!/usr/bin/bash
httpCode=`curl -I -s http://10.210.66.81|grep 200|awk '{print $2}'` if [ "$httpCode" -eq ];then
echo "apache is running!"
else
echo "apache is not running!"
/data0/apache/bin/apachectl start &
fi

关于mysql和Apache以及nginx的监控脚本怎么写会比较好的记录的更多相关文章

  1. Zabbix 监控MySQL、Apache、Nginx应用监控

    zabbix对第三方应用软件的监控,主要有两个工作难点,一个是编写自定义监控脚本,另一个是在编写模板并导入zabbix web中,编写脚本这个要根据 监控需求定制即可,而编写模板文件有些难度,不过网上 ...

  2. mysql 自动备份和nginx自动安装脚本

    一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...

  3. nginx响应时间监控脚本

    最近我们服务的使用方总是反应说我们接口超时,于是做了一个监控脚本,统计最近五分钟的响应情况,并对异常情况发送邮件报警. #!/bin/bash function define(){ ori_log_p ...

  4. Linux 安装Jdk、mysql、apache、php、tomcat、nginx

    Jdk 安装分三步:第一步,上传跟 linux 位数相同的 jdk tar 包,解压:第二步:解压 tar 包,配置环境变量,且 source 一下 /etc/profile:第三步:检查版本 第一步 ...

  5. Zabbix监控web,MySQL,TCP状态,Nginx

    接上篇Zabbix使用SMTP发送邮件报警并且制定报警内容 Zabbix怎么设置声音告警 web监控 在zabbix server选择web 创建一个监控web的场景 添加后这里有数字1 查看 假如在 ...

  6. Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间

    Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...

  7. Web服务(Apache、Nginx、Tomcat、Jetty)与应用(LAMP、CMS-WordPress&Ghost、Jenkins、Gitlab)

    Web服务和应用是目前信息技术领域的热门技术.如何使用Docker来运行常见的Web服务器(包括Apache.Nginx.Tomcat等),以及一些常用应用(LAMP.CMS等).包括具体的镜像构建方 ...

  8. select与epoll、apache与nginx实现原理对比

    转自:http://www.tuicool.com/articles/AzmiY3 关于select与epoll 两种IO模型,都属于多路IO就绪通知,提供了对大量文件描述符就绪检查的高性能方案,只不 ...

  9. Apache与Nginx网络模型

    Nginx的高并发得益于其采用了epoll模型,与传统的服务器程序架构不同,epoll是linux内核2.6以后才出现的.下面通过比较Apache和Nginx工作原理来比较. 传统Apache都是多进 ...

随机推荐

  1. iOS-服务器文件断点下载

    文件下载基本步骤:1.获取下载链接,创建响应发送请求.(使用异步请求,避免因文件过大下载时间长而阻塞主线程).2.当接到响应时在下载目录中创建文件.创建文件使用NSFileHandle进行文件内部处理 ...

  2. WampServe修改默认网站目录的方法(转)

    1wamp简介 WampServe集成了Apache.MySQL.PHP.phpmyadmin,支持Apache的mod_rewrite,PHP扩展.Apache模块只需要在菜单“开启/关闭”上点点就 ...

  3. TextView 跑马灯

    首先,写一个类,让其继承自TextView: 重写focus方法,让TextView始终是focus. public class MarqueeText extends TextView { publ ...

  4. NSDictionary读取数据类型异常问题.

    起因:做网络交互时,经常会使用JSON作为数据的承载体,本来是件好事,但是用多了,发现iOS侧偶尔会出现异常,几经比较发现是服务器给的数据有问题,该给INT的给按照STR给了,服务器能做动态更新,可客 ...

  5. asp.net httpmodule 访问页面控件 备忘

    用到的时候发现还得找代码,存一个例子方便自己和他人修改: using System; using System.Data; using System.Configuration; using Syst ...

  6. Android Studio IDE 简单学习和介绍

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  7. Angular2.0-组件

    截止到目前为止,Angular2.0完成了其alpha-32版本的开发,新的版本还在迭代开发当中,这其中有个问题,就是每个版本相比于以前的版本都会有一些改动,包括API方面的修改,这会导致很多基于以前 ...

  8. Abstract和Virtual和interface , 派生类中重写 override / new关键字

    http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html C#中Abstract和Virtual 在C#的学习中,容易混淆virtua ...

  9. 【uTenux实验】时间管理(系统时间/周期性处理/警报处理)

    1.系统时间管理 系统时间管理函数用来对系统时间进行操作,是OS的一个基础性的东西.个人认为,设置系统时间和获取系统时间对OS来说基本是可有可无的. uTenux提供了三个系统时间相关API.分别用于 ...

  10. 随机数生成器console

    #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { ]; ]; int i; ...