通知

通知功能可以一直让您知悉关键事件。

默认情况下,您仅收到有关关键事件的邮件:

  • 停机
  • 部署
  • 问题
    本节将帮助您设置自定义通知并配置您想要接收它们的频道。

默认通知

默认情况下,PM2发送几种不同类型的通知:

  • 当抛出新的异常时。
    [新异常]在process_name上检测到异常

  • 当服务器脱机超过90秒时

  • 部署后

[应用程序故障]应用抛出太多错误 (process_name)

自定义通知

自定义指标通知

使用PM2 Plus设置自定义通知的主要方式是使用自定义指标.

定义自定义指标时,您可以在达到特定阈值时启用通知.

例子:

  1. const metric = probe.metric({
  2. name: 'CPU usage',
  3. value: () => {
  4. return cpu_usage;
  5. },
  6. alert: {
  7. mode: 'threshold',
  8. value: 95,
  9. msg: 'Detected over 95% CPU usage', // optional
  10. action: () => { //optional
  11. console.error('Detected over 95% CPU usage');
  12. },
  13. cmp: (value, threshold) => { //optional
  14. return (parseFloat(value) > threshold); // default check
  15. }
  16. }
  17. });

可用的选项是:

  • mode:
    • threshold:当值高于或低于阈值时,直接触发警告
    • threshold-avg:当值高于或低于 X 秒阈值时触发警告
    • smart:当值不正常时自动触发警告
  • value:将用于异常检查的值
  • msg:用于例外情况的字符串
  • action: 可选。当发生异常时触发函数。
  • cmp: 可选。用于2个参数进行异常检查的函数。
  • interval: 可选threshold-avg模式。 监测值的样本长度(默认为180秒)。
  • timeout: 可选threshold-avg模式。 平均值比较开始后的时间段(默认30 000毫秒)。

自定义事件通知

另一种设置自定义通知的方式是使用自定义事件。

定义了自定义事件后,可以直接在仪表板中订阅它。

通知渠道

默认情况下,通知通过邮件发送。 您也可以通过slack或webhook接收.

Slack通知

Slack集成允许您在选定的Slack频道直接接收异常情况和事件通知。

首先,您需要获取Slack URL并设置传入的Webhook。 关于如何设置的更多细节可以在这里找到:https://my.slack.com/services/new/incoming-webhook/https://api.slack.com/incoming-webhooks

然后进入通知页面并将webhook插入字段。 启用并点击更新。

检查您是否在您的slack channel成功接收了一条通知,以确认它已配置成功。

Webhooks

您还可以设置一个webhook,当您收到通知时,它会将POST HTTP请求发送到给定的URL。

数据的格式是像下面这样的json:

  1. {
  2. "event":"event:new_exception",
  3. "data":{
  4. "process":{
  5. "pm_id":9,
  6. "name":"pm2-elasticsearch",
  7. "rev":"ac77098c5e1b10d74360b113da6e717fab8fe427",
  8. "server":"pm2-module-testing"
  9. },
  10. "data":{
  11. "message":"Bad argument",
  12. "stack":"TypeError: Bad argument\n at TypeError (native)\n at ChildProcess.spawn (internal/child_process.js:274:26)\n at exports.spawn (child_process.js:362:9)\n at Object.exports.execFile (child_process.js:151:15)\n at exports.exec (child_process.js:111:18)\n at /home/node/pm2-elasticsearch/lib/actions.js:25:5\n at process.<anonymous> (/home/node/pm2-elasticsearch/node_modules/pmx/lib/actions.js:64:14)\n at emitTwo (events.js:92:20)\n at process.emit (events.js:172:7)\n at handleMessage (internal/child_process.js:695:10)"
  13. },
  14. "at":1472651928925,
  15. "created_at":1472651928925,
  16. "updated_at":1472651928925,
  17. "count":1,
  18. "identifier":"ad6f8650dabfec83f183633b0bba7d97",
  19. "infected_servers":[
  20. "pm2-module-testing"
  21. ],
  22. "timestamps":[
  23. 1472651928925
  24. ],
  25. "commits":[
  26. "ac77098c5e1b10d74360b113da6e717fab8fe427"
  27. ],
  28. "bucket_url":"https://app.keymetrics.io/#/bucket/YOUR_BUCKET_ID/exceptions"
  29. }
  30. }

用例示例:您现在可以设置一个可以接收WebHooks的快速服务器,自动发送SMS或使用任何您想要的集成。

下一步

问题仪表板

疑问?

我们一直乐于帮您解决可能遇到的问题。搜索我们的文档或查看常见问题的答案。您也可以在我们的社区论坛发布问题或评论。您也可以看看我们在github中的帮助部分 https://github.com/keymetrics/keymetrics-support

原文: https://pm2.io/doc/zh/plus/guide/notifications/