2016年2月1日 星期一

Node.js搭配/dev/watchdog做監控

Linux上的Watchdog是一個滿常用來監控系統的服務,可以透過掛載模組後產生硬體的watchdog裝置(/dev/watchdog),掛載方式可以參考本文最下面的鏈結。

其中需要:
1. 設定watchdog的module掛載
2. 啟用module

而在Node.js中需要連結/dev/watchdog的方法,是open該file後,持續的在所規定的時間內丟一個特定字串給它(/dev/watchdog),下面是node.js實作的方式:

var fs = require('fs');
var data = 0;
var WDIOC_KEEPALIVE = 2147768069;
var WDIOC_SETTIMEOUT = 3221509894;
var WDIOC_GETTIMEOUT = 2147768071;

var buf = new Buffer(4);

fs.open('/dev/watchdog', 'r+', function(err, fd){
  if(err) console.log('error:', err);
  setInterval(function() {
    console.log('write file...');
          fs.write(fd, WDIOC_KEEPALIVE, buf, function(err){
            if(err) console.log('error:', err);
          })
  }, 2000);
});

當程式執行起來後,將會每2秒鐘到該裝置寫一塊資料,當成是關閉後,則會觸動系統重新開機的動作... 這個用途在當系統發生問題時候,需要重新開機時,非常有用唷 :D

參考:http://www.switchdoc.com/2014/11/reliable-projects-using-internal-watchdog-timer-raspberry-pi/