shell 监控mysql 服务

15 篇文章 0 订阅

这里主要说下,监控mysql 服务并发送邮件的一个栗子,主要内容包括:

  1. 邮件发送
  2. 简单的监控脚本

1.邮件发送

    先说下我这里的环境:ubuntu 16.04 LTS ,在ubuntu 下发送邮件是需要安装发送邮件的软件的,而在centos 下是不需要的(亲测 centos os 7.4)。这里以ubuntu 为例说下在Ubuntu 下如何发送邮件。

   先安装软件

root@zhang:/home/zhang# apt-get install heirloom-mailx

然后打开/etc/s-nail.rc 文件,在行末编辑进行配置:

168 set from=15003655146@163.com
169 set smtp=smtp.163.com
170 set smtp-auth-user=15003655146@163.com
171 set smtp-auth-password=xxx #  网易邮箱授权码,不是密码
172 set smtp-auth=login

说明:

from: 对方收到邮件时显示的发件人
smtp: 指定第三方发送邮件的smtp服务器地址
smtp-auth: SMTP的认证方式。默认是LOGIN,也可改为CRAM-MD5或PLAIN方式
smtp-auth-user: 第三方发邮件的用户名
smtp-auth-password: 用户名对应密码

测试邮件发送

root@zhang:/home/zhang/Code/Shell# mail -s "hello world" "1939229834@qq.com" < success.txt

-s 选项指定主题 

<  success.txt 指从success.txt 文件中读取要发送的内容

 

OK,到这里表示邮件发送成功!

2.监控脚本

    判断mysql 有没有跪的方式有好几种,这里说下:"模拟web 服务器,通过mysql 账户连接mysql ,然后根据返回命令状态或返回内容确认mysql 是否正常 " ,这种方式来判断mysql 是否跪了。

在写具体的脚本之前,先看下命令及执行结果:

root@zhang:/home/zhang/Code/Shell# mysql -hlocalhost -uroot -p'referee'  -e "select version();"
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+
| version()  |
+------------+
| 5.7.22-log |
+------------+
root@zhang:/home/zhang/Code/Shell# echo $?
0
root@zhang:/home/zhang/Code/Shell# mysql -hlocalhost -uroot -p'referee'  -e "select version_1();"
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1046 (3D000) at line 1: No database selected
root@zhang:/home/zhang/Code/Shell# echo $?
1
root@zhang:/home/zhang/Code/Shell# 

OK,基于这个思路:执行成功,$? 是0 ,否则非0 ,来编写shell  监控脚本。

这里先直接上已撸好的shell 

  1 #! /bin/bash 
  2 
  3 mysqlStatus=`mysql -hlocalhost -uroot -p'referee' -e "select version();" >&/    dev/null`
  4 
  5 if [ $? -ne 0 ] ;then
  6 
  7         mail -s "mysql abnormal" "1939229834@qq.com" < mysql_service_abnorma    l.txt
  8 
  9         service mysql restart
 10 
 11         sleep 5
 12 
 13          mysqlStatus=`mysql -hlocalhost -uroot -p'referee' -e "select versio n();" >&/dev/null`
 14 
 15 
 16         if [ $? -eq 0  ];then
 17 
 18                 mail -s "mysql restart successful" "1939229834@qq.com" < suc    cess.txt
 19         else
 20                 mail -s "mysql restart failed" "1939229834@qq.com" < failed.    txt
 21         fi
 22 fi
 23 

 

比较简单,先用账号密码连接mysql  ,然后执行语句。如果返回值0 表示OK,什么都不做,非0 发邮件通知mysql 服务异常,

然后尝试重启mysql 服务,5秒过后再用账号密码连接执行语句,看返回值,为0 发送成功邮件,否则发送失败邮件。

OK,下面测试脚本:

先停止mysql 服务:

service mysql stop

 使用service mysql status 命令可以查看mysql 服务状态 

root@zhang:/home/zhang/Code/Shell# service mysql status
● mysql.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/init.d/mysql; bad; vendor preset: enabled)
   Active: inactive (dead) since 日 2018-11-11 22:56:09 CST; 21s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 20607 ExecStop=/etc/init.d/mysql stop (code=exited, status=0/SUCCESS)
  Process: 19334 ExecStart=/etc/init.d/mysql start (code=exited, status=0/SUCCESS)

11月 11 22:46:38 zhang systemd[1]: Starting LSB: start and stop MySQL...
11月 11 22:46:38 zhang mysql[19334]: Starting MySQL
11月 11 22:46:40 zhang mysql[19334]: .. *
11月 11 22:46:40 zhang systemd[1]: Started LSB: start and stop MySQL.
11月 11 22:56:07 zhang systemd[1]: Stopping LSB: start and stop MySQL...
11月 11 22:56:07 zhang mysql[20607]: Shutting down MySQL
11月 11 22:56:09 zhang mysql[20607]: .. *
11月 11 22:56:09 zhang systemd[1]: Stopped LSB: start and stop MySQL.
root@zhang:/home/zhang/Code/Shell# date
2018年 11月 11日 星期日 22:56:35 CST

 执行脚本,发现不仅收到了邮件,而且mysql 服务正常重启OK。

 

注: 这里执行脚本务必要以root 账号来操作,因为其它账号执行service mysql restart 操作可能需要要求输入密码。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值