NodeJs脚本发送告警示例

需要安装依赖 urllib

  1. yarn add urllib
  2. # 或者
  3. npm install urllib --save

脚本示例如下,请根据自身情况修改使用:

  1. var md5 = require('crypto').createHash('md5')
  2. var urllib = require('urllib');
  3. var taskid = 189; // 告警任务ID
  4. var token = 'xxxxxx'; // 告警任务token
  5. var [timestamp, sign] = gen_sign(taskid, token)
  6. var options = {
  7. method: 'POST',
  8. dataType: 'json',
  9. headers: {
  10. 'Content-Type': 'application/json'
  11. },
  12. content: JSON.stringify({
  13. taskid: 189,
  14. timestamp: timestamp,
  15. sign: sign,
  16. ctn: {
  17. say: 'hello world'
  18. }
  19. })
  20. }
  21. urllib.request('https://alarm-dog-service.domain.com/alarm/report', options, function (err, data, res) {
  22. if (err) {
  23. throw err; // you need to handle error
  24. }
  25. console.log(res.statusCode);
  26. console.log(res.headers);
  27. // data is Buffer instance
  28. console.log(data);
  29. });
  30. /**
  31. * 生成签名
  32. * @param {Number} taskid
  33. * @param {String} token
  34. */
  35. function gen_sign(taskid, token)
  36. {
  37. var timestamp = parseInt(Date.now() / 1000)
  38. var str = `${taskid}&${timestamp}${token}`
  39. var sign = md5.update(str).digest('hex')
  40. return [timestamp, sign]
  41. }

将脚本保存为 alarm.js,然后执行 node alarm.js,可能输出以下示例:

  1. 200
  2. {
  3. server: 'Tengine',
  4. 'content-type': 'application/json; charset=utf-8',
  5. 'content-length': '117',
  6. connection: 'keep-alive',
  7. date: 'Sun, 09 Aug 2020 09:08:09 GMT',
  8. 'access-control-allow-origin': '*',
  9. 'access-control-allow-methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
  10. 'access-control-allow-credentials': 'true',
  11. 'access-control-allow-headers': '*,DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization',
  12. 'access-control-expose-headers': '*',
  13. 'access-control-max-age': '86400',
  14. 'xes-app': 'openresty/1.15.8.1, xes-dny-sjhl-60-36',
  15. via: 'vcache11.cn2639[21,0]',
  16. 'timing-allow-origin': '*',
  17. eagleid: '014791a115969640893543749e'
  18. }
  19. {
  20. data: {
  21. uuid: '64f6401a-2818-4a0e-a10b-7f53380b5e4d',
  22. report_time: '2020-08-09 17:08:09'
  23. },
  24. msg: 'success',
  25. code: 0
  26. }