watchdog及其应用
一、watchdog介绍
watchdog 通常是一段物理电路,但这里讲的是linux 内核的实现,也就是softdog ,其原理详见IBM developerworks 。能够在系统资源耗尽之际实现系统软重启,防止硬重启带来的巨大损失。Watchdog 默认的动作是每隔1分钟往/dev/watchdog设备执行写操作,以证明系统运行正常,发现异常就主动发出重启信号。
watchdog可以通过系统编程实现一些功能,但在linux对应的rpm包里已经帮我们集成了一个watchdog应用。该watchdog 提供了两个接口test和repair 。test选项提供了测试机制,一旦测试失败,watchdog就会采取行动挽救,也就是repair 。 repair 选项提供了挽救系统的办法,默认是重启系统,但可以定制,通常是一个shell 脚本。
二、watchdog应用
安装和启用watchdog包
1# yum install watchdog
2# modinfo softdog
/etc/watchdog.conf 配置
1min-memory = 10
2#注意,这里指内存页面数,而不是内存大小,内存大小等于页面大小乘以页面数目。
3#使用命令“ getconf PAGESIZE” 获得系统内存页面大小,我这里是4096K=4M,也就是说,这里设置的最低内存为4M x 10 = 40M
4#意即,当系统可用虚拟内存低于40M时,watchdog将主动重启。
5watchdog-device = /dev/watchdog
6admin = root #发信收件人,这里是管理员。需要sendmail支持。
7interval = 10 #每间隔10秒钟往/dev/watchdog设备中执行一次写操作。
8logtick = 60 #睡眠时间,持续写日志到syslog很耗磁盘空间和CPU资源,此选项会隔一段时间写一次,节省资源。
9realtime = yes #实时监控,将watchdog 封入内存,防止在系统高负载时watchdog 意外退出。
10priority = 1 #优先级
从上面可以得到,watchdog的配置文件里可以监控网络、负载、内存、进程的pid号等。比如在监控到eth0口不正常的时候,我们直接ifup eth0接口 。其配置如下:
1# /etc/watchdog.conf 文件中打开如下选项:
2interface = eth0
3repair-binary= /etc/watchdog.d/repair.sh
4# repair.sh内容如下
5#!/usr/bin/env bash
6ifconfig eth0 >/dev/null
7if [$? != “0”];then
8 ifup eth0
9fi
此时通过手动停止eth0网卡,就会发现,直接网卡被修复又起来了。同样其还有test选项,可以通过开启脚本来自定义检测,如下:
1#!/usr/bin/env bash
2process_number=`pgrep java |wc -l`
3if [ $process_number == “0” ];then
4 echo “process java is not running”
5 exit 1
6fi
通过检测java进程是否异常,再进行修复(不就是守护进程的功能吗?)。repair脚本的内容这里就不写了。
注:如果repair 失败的话,watchdog依然会重启系统,这个需要注意!可以通过在repair 脚本中加入 exit 0 来防止watchdog 重启系统,即无论修复是否成功,都返回成功,骗过watchdog 的重启机制。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/linux-watchdog/5677.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.