因为我们服务器中装了node有运行node服务所以这边我选择使用node来请求钉钉机器人
1:上来在钉钉中新建一个群聊,并在群聊中申请一个自定义webhook机器人
为了方便后续请求,这边的加密方式我们选择关键词加密
然后保存,ok,钉钉这边就完成了操作
2:我们准备发送钉钉推送消息的js脚本
我这边是直接拿curl转的,所以这里如果没有node环境可以直接编写shell脚本使用curl命令去请求一样是可以的。下面上代码
var request = require('request');
var sd = require('silly-datetime');
var headers = {
'User-Agent': 'Apipost client Runtime/+https://www.apipost.cn/',
'Content-Type': 'application/json'
};
var now =sd.format(new Date(), 'YYYY-MM-DD HH:mm');
var dataString = '{ "msgtype": "text", "text": { "content": "监控报警:服务挂了!!!!!!!'+now+'" } }';
var options = {
url: 'https://oapi.dingtalk.com/robot/send?access_token=xx',
method: 'POST',
headers: headers,
body: dataString
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
request(options, callback);
这里需要用npm 安装两个包 分别是 request和silly-datetime 我们直接在js脚本当前目录安装即可,安装完毕之后,我们就可以node xx.js 来运行测试下能否正常推送消息,如果配置和关键字没问题的话,钉钉这边应该可以直接搜到消息。
3:shell脚本
这边我们直接使用linux的crontab来为脚本增加一个定时调度
我选择的是1分钟执行一次
* * * * * /root/monitor/xxx.shell
下面上一下shell脚本的命令,这里很简单,我在报错后选择直接钉钉推送,如果这边还想做的更好,可以直接在脚本重启服务,这样的话可以最大程度缓解服务挂掉的损失!
count=$(netstat -lntp |grep -c 3001) echo $count if [ $count != 1 ]; then node /root/monitor/check.js fi
注意node后面需要跟着钉钉js的绝对路径脚本。
ok这样我们就完成了一个简单的服务监控。这里可以监控各种服务的运行状态,本人不是专业运维,如果写的不好,欢迎指出。



