实际工作中我们需要知道部署在服务器上的应用有没有问题,但是人为的操作太麻烦有咩有简单的方式呢shell来监控我们服务器运行状态以及服务器上部署的应用,如果出现异常就会自动发送一个邮件给我们,开始搞起。。。

老套路,先梳理思路

监控apache web服务

监控mysql数据库

监控服务器硬盘使用情况

监控服务器的内存使用

  废话不多说,直接上代码

1.apache web 服务器

!/bin/bash
# 表示请求链接3秒钟,不要返回的测试数据
nc -w 3 localhost 80 &>/dev/null
if [ $? -eq 0 ];then
str="apache web status Running!"
else
str="apache web status Shuting!"
fi
# 发送的主题,邮件地址
echo str|mail -s 'apache web server' admin@lampym.com

2.监控mysql

!/bin/bash
# 表示请求链接3秒钟,不要返回的测试数据
nc -w 3 localhost 3306 &>/dev/null
if [ $? -eq 0 ];then
str="mysql server status Running!"
else
str="mysql server status Shuting!"
fi
# 发送的主题,邮件地址
echo str|mail -s 'mysql server status' admin@lampym.com

3.监控服务器disk

#!/bin/bash
:<<!
NR表示行数,$5表示第5列,具体的自己根据实际调整
!
ds=`df |awk '{if(NR==4){print int($5)}}'`
# 这里45根据实际需要更改
if [ $ds -lt 45 ];then
str="disk space is less then!!!"
else
str="disk space is greate than 45%!!!"
fi
echo $str|mailx -s 'linux server disk space' admin@lampym.com

4.监控服务器monery 

#!/bin/bash
:<<!
具体的自己根据实际调整
!
mery=`df |awk '{if(NR==2){print int($3*100/$2)}}'`
if [ $mery -lt 50 ];then
str="mery space is less then 50%!!!"
else
str="mery space is greate than 50%!!!"
fi
echo $str|mailx -s 'linux server mery space' admin@lampym.com

 整合一下

#!/bin/bash
# 功能:监控资源
# 名称:cont.sh
# 作者:枫客浪人
# 版本:0.1
# 联系方式:xxxx
# apache 应用服务
apache_web(){
nc -w 3 localhost 80 &>/dev/null
  if [ $? -eq 0 ];then
str="apache web status Running!"
  else
str="apache web status Shuting!"
  fi
    # 发送的主题,邮件地址
  echo str|mail -s 'apache web server' admin@lampym.com
}
# mysql 服务
mysql_db(){
nc -w 3 localhost 3306 &>/dev/null
if [ $? -eq 0 ];then
str="mysql server status Running!"
else
str="mysql server status Shuting!"
fi
# 发送的主题,邮件地址
echo str|mail -s 'mysql server status' admin@lampym.com
}
# 磁盘使用情况
disk_mnt(){
ds=`df |awk '{if(NR==4){print int($5)}}'`
# 这里45根据实际需要更改
if [ $ds -lt 45 ];then
str="disk space is less then!!!"
else
str="disk space is greate than 45%!!!"
fi
echo $str|mailx -s 'linux server disk space' admin@lampym.com
}
# 内存使用情况
meny_mnt(){
mery=`df |awk '{if(NR==2){print int($3*100/$2)}}'`
if [ $mery -lt 50 ];then
str="mery space is less then 50%!!!"
else
str="mery space is greate than 50%!!!"
fi
echo $str|mailx -s 'linux server mery space' admin@lampym.com
}
min(){
apache_web()
mysql_db()
disk_mnt()
meny_mnt()
}

 

  个人觉得还可将脚本更加复杂化,加入更多我们想要的信息,比如报错后具体的错误信息等等,当然这只是简单的例子,如果有需要,小伙伴们可以自己添加自己需要的内容。。。。。

  关于自动监控策略,我这里采用的是Linux中的定时crontab,编写计划,自动监控,每天发送一份报告,这样每天我都会收到服务器的一个状态

 

crontab -e

每天13:10分执行代码发送一份邮件

  

shell实现脚本监控服务器及web应用的更多相关文章

  1. Linux记录-shell实现脚本监控服务器及web应用

    1.apache web 服务器 1 2 3 4 5 6 7 8 9 10 !/bin/bash # 表示请求链接3秒钟,不要返回的测试数据 nc -w 3 localhost 80 &> ...

  2. shell监控脚本

    序言: 前几天一好友问我服务器监控怎么做?你们公司的监控是怎么做的?有什么开源的监控软件推荐?常见的开源的监控软件当然首先推荐ZABBIX,分布式够强大,而且很多公司都在用,我问他具体什么需求,能监控 ...

  3. 4.Vim编辑器与Shell命令脚本

    第4章 Vim编辑器与Shell命令脚本 章节简述: 本章首先讲解如何使用Vim编辑器来编写.修改文档,然后通过逐个配置主机名称.系统网卡以及Yum软件仓库参数文件等实验,帮助读者加深Vim编辑器中诸 ...

  4. shell及脚本4——shell script

    一.格式 1.1 开头 必须以 "# !/bin/bash"  开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...

  5. 【Telnet】使用Telnet协议连接到远程Shell执行脚本

    介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnbl ...

  6. shell自动计算脚本

    shell自动计算脚本 #!/bin/bash echo $(($)) [root@bogon ~]# sh b.sh 123+123246 let用户声明这个操作是要计算,后者的效率更高 (expr ...

  7. Shell菜单脚本

    今天在这儿给大家分享一个我简单编写的Shell菜单脚本,傻瓜式的人机交互,人人都可以操作linux. #!/bin/sh #Shell菜单演示 function menu () { cat <& ...

  8. shell常见脚本30例

    shell常见脚本30例 author:headsen chen  2017-10-19  10:12:12 本文原素材出自网上,特此申明.有些地方加入我自己的改动 常见的30例shell脚本 1.用 ...

  9. shell常用脚本

    shell常用脚本 author:headsen chen  2017-10-17 15:36:17 个人原创,转载请注明,否则依法追究法律责任 1,vim  name.grep.sh 2,cat   ...

随机推荐

  1. JavaWeb学习笔记二 Http协议和Tomcat服务器

    Http协议 HTTP,超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为 ...

  2. 忘记oracle的sys密码该如何重置;附如何修改oracle数据库用户密码

    参考博客:http://blog.itpub.net/26015009/viewspace-717505/ 这里只说一种方法:使用ORAPWD.EXE 工具修改密码 打开命令提示符窗口,输入如下命令: ...

  3. Beta冲刺 第五天

    Beta冲刺 第五天 1. 昨天的困难 1.昨天的困难主要是在类的整理上,一些逻辑理不清,也有一些类写的太绝对了,扩展性就不那么好了,所以,昨天的困难就是在重构上. 页面结构太凌乱,之前没有统筹好具体 ...

  4. Bate版敏捷冲刺报告--day0

    1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285)  Git链接:https://github.com/WHUSE2017/C-team 2 ...

  5. C语言--第14.15周作业

    一. 7-3 将数组中的数逆序存放 1.代码 #include 2<stdio.h> int main() { int a[10]; int i, n, s; scanf("%d ...

  6. 在Nginx上配置多个站点

    有时候你想在一台服务器上为不同的域名运行不同的站点.比如www.siteA.com作为博客,www.siteB.com作为论坛.你可以把两个域名的IP都解析到你的服务器上,但是没法在Nginx的根目录 ...

  7. python 异步协程

    """A very simple co-routine scheduler. Note: this is written to favour simple code ov ...

  8. "一不小心就火了"团队采访

    团队采访 一. 采访团队 团队:一不小心就火了 采访形式:线上问答 二.采访内容 你们是怎么合理地具体分配组员里的工作的?有些团队会出现个别组员代码任务很重,个别组员无所事事的情况,你们有什么有效的方 ...

  9. vue项目结构

    前言 我在 搭建vue项目环境 简单说明了项目初始化完成后的目录结构. 但在实际项目中,src目录下的结构需要跟随项目做一些小小的调整. 目录结构 ├── src 项目源码目录 │ ├── api 所 ...

  10. XML之自动生成类,添加,修改,删除类的属性

    1. class ClassHelperDemo { public static void Main() { #region 演示一:动态生成类. //生成一个类t. Type t = ClassHe ...