Начну простой сервер узла, который, если вы убьете, monit снова перезапустит его, и вы получите электронное письмо, если оно настроено правильно.
расположение /home/xxx/monitoring/nodejs
Файл: узел-server.js
var http = require('http');
var port = 8002;
var fs = require('fs');
var logStream = fs.createWriteStream(port+"_log.txt", {'flags':'a'});
var count = 0;
http.createServer(function(req, res){
var output = (++count) + ' Request received in '+port+' @ ' + new Date()+'\n';
console.log(output);
logStream.write(output);
res.writeHead(200, {'Content-Type' : 'text/plain'});
res.end('From '+port+' @ ' + new Date());
}).listen(port);
console.log('Server running @ ' + port)
ФАЙЛ: server.sh
#!/bin/bash
process=$1
PID_FILE="/home/xxx/monitoring/nodejs/file.pid"
case $process in
start)
echo "STARTING node js server in port 8002"
nohup /usr/sbin/node /home/xxx/monitoring/nodejs/node-server.js > /home/xxx/monitoring/nodejs/server.log 2>&1 &
echo $! > $PID_FILE
;;
stop)
kill -9 $(cat $PID_FILE)
rm $PID_FILE
;;
*)
echo "INVALID OPTION"
;;
esac
МЕСТОНАХОЖДЕНИЕ:/и т.д./Monit/monitrc (для убунту)
set mail-format {
from: [email protected]
subject: monit alert -- XXX-PROD $EVENT $SERVICE
message: $EVENT Service $SERVICE
Date: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTION
Your faithful employee,
}
set mailserver smtp.gmail.com port 587 username "[email protected]" password "xxx" using tlsv1
set alert [email protected]
check process nodejs-server with pidfile /home/xxx/monitoring/nodejs/file.pid
start program = "/home/xxx/monitoring/nodejs/server.sh start"
stop program = "/home/xxx/monitoring/nodejs/server.sh stop
"
После запуска сервера нажмите браузер http://localhost:8002/. Он покажет некоторый результат. Теперь убейте процесс, найдя его идентификатор процесса либо из состояния «monit», либо из любого другого средства. Вы получите письмо, в котором говорится, что процесс не существует, но через некоторое время сервер запустится, и вы получите сообщение о том, что «процесс начался снова».
Но, пожалуйста, помните, что если вы остановите процесс из команды MONIT как
monit stop nodejs-server
, то он не будет перезапущен. И вы получаете сообщение о том, что процесс ur был остановлен.
В нем говорится: «Процесс program1» не работает. попытка перезагрузки. start:/bin/bash. Не удалось запустить – Zero
Пожалуйста, прочтите документацию, я не знаю, что вы делаете неправильно. Вы обрабатываете имя под названием «program1»? –
, и вы должны начать процесс, прежде чем monit сможет работать с ним. –