天天看点

第 三 十 三 天:shell 编 程 之 监 控 脚 本

小Q:如果你浪费了自己的年龄,那是挺可悲的。因为你的青春只能持续一点儿

      时间——很短的一点儿时间。                          —— 王尔德

======================================================================

在工作中,一些安装程序的脚本可以实现自动化,大大方便我们;但更重要的是我们得先

保证我们服务器运转正常,有些需要的监控服务也许第三方没有给出来,或者我们需要监

控一些特别的服务,所以自己写监控脚本是必须掌握的;

对于个人来说:我较喜欢nagios的添加服务方式和zabbix的监控界面和操作;

简单举例他俩添加自定义监控脚本的方式,让我们了解这过程。

附加一篇mysql数据备份脚本。

---------------------------------自定义nagios监控脚本-----------------

条件:两台服务器.安装nagios,和一些前期的配置,具体操作见下:

       http://beibing.blog.51cto.com/10693373/1702654

需求:我们磁盘有很多分区,我们需要时常查看他的使用量,当他块被写满的时候,需要

      清理一下,但我们不想天天输命令查看,实现他快满的时候,在监控中提示我们;

      扩展:快要满的时候给我们发邮件提醒;

client端:192.168.0.12

vim /etc/nagios/nrpe.cfg  

allowed_hosts=127.0.0.1 改为 allowed_hosts=127.0.0.1,192.168.0.11

dont_blame_nrpe=0 改为 dont_blame_nrpe=1

vim  /usr/local/nagios/libexec/check_disk.sh     #脚本存放的位置 

修改权限:chmod +x  /usr/lib/nagios/plugins/check_disk.sh 

vim  /etc/nagios/nrpe.cfg                       #服务端调用文件中的check_disk

command[check_disk]=/usr/lib/nagios/plugins/check_disk.sh

重启:/etc/init.d/nrpe restart 

service端:192.168.0.11

检 测 : check_nrpe -H 192.168.0.12 -c check_disk       

         正常的话,会输出一行磁盘检测的数据;否则需要去排错了

添加服务:vim  /etc/nagios/conf.d/192.168.0.12.cfg 

vim /etc/nagios/objects/commands.cfg

检测:nagios -v /etc/nagios/nagios.cfg

重启:/etc/init.d/nagios restart(客户service nrpe restart 服务service nagios restart)

当然了,http或者nginx也都要重启一个,否则根本连接不上啊;然后就可以登陆nagios

网站进行监控了,192.168.0.11/nagios查看;

自定义监控脚本方式大同小异,写好脚本,顺着这种方式套,应该没问题;而关于扩展的

问题,去参考上面给的衔接,理解之后就知道怎么调用了;

-----------------------自定义zabbix监控脚本------------------

条件:仍旧是前期的一些准备安装啦.连接了....去看看下面的文章吧

       http://beibing.blog.51cto.com/10693373/1702665 

需求:带三方软件没有提供监控网卡平均流量,我们需要去做一个网卡的实时监控,输出

      进网卡和出网卡的平均字节数;

      扩展:实现多个网卡的进出数据包的选择

Client:

安装完成---各种服务开启----配置通信----检测成功----浏览器正常使用后----继续

vim   /etc/zabbix/zabbix_agentd.conf

改动:UnsafeUserParameters=1

      UserParameter=my.net.if[*](英文方括号)/usr/local/sbin/zabbix/net.sh $1 $2

      UserParameter用来自定义键值,即我们要在监控软件添加用的key;因为我们写的

      脚本有参数表达,所以加了[*]和$1 $2,否则是不需要的

vim  /usr/local/sbin/zabbix/net.sh           #编写的脚本

在脚本执行前,需要先做一个操作,搭建临时文件,给个数值:

touch /tmp/net[io].log

date +%s >>/tmp/neti.log

grep eth0 /proc/net/dev |awk '{print $2}' >>/tmp/neti.log

date +%s >>/tmp/neto.log

grep eth0 /proc/net/dev |awk '{print $10}' >>/tmp/neto.log

chown zabbix  /tmp/net[io].log

service端:

检测:zabbix_get -s 192.168.0.12 -p10050 -k "my.net.if[eth0,out]"

      返回一个数值的话就说明没问题;

没问题就可以进监控界面添加服务了,浏览器:192.168.0.11/zabbix

组态 --> 主机 --> 项目  --> 创建监控项

名称 “网卡流量出”                #自定义

类型默认“zabbix代理”

键值  "my.net.if[eth0,out]"  /  my.net.if[eth0,in]

数据更新间隔  60

存档                               #此时就可以进行监控了,可以看到折线图出现

-------------------------------------mysql数据备份--------------------

1. 最简单的

2. 稍微复杂的

3. innodb引擎,超大数据库备份

执行脚本:

继续阅读