docnet/matt-client

MATT (Monitor All The Things) 通知的PHP客户端

v1.2.0 2022-03-07 12:39 UTC

This package is not auto-updated.

Last update: 2024-09-24 07:27:16 UTC


README

这是一个简单的PHP客户端(一个具有流畅接口的单类),可以帮助您监控任务的执行成功或失败。

在编写crontab和其他定期任务时,常常会忽视健康监控。这通常表现为“我的天啊,某个脚本已经两周没有成功运行了,帮忙看看!”。

成功的缺失

这里的一个关键点是,该系统寻找成功消息的缺失。因此,如果您的cron脚本开始遇到致命错误,这将通知您。脚本中的常规“日志/电子邮件”功能甚至不会受到影响。

入门

当您需要知道某个定期任务是否停止工作时,在脚本末尾(当您知道任务已完成)进行如下操作:

Docnet\MATT::expect('My cron finished OK')->every('15m')->sms('07777123456');

如果某些事情永远不应该发生,请这样做(可能在主'catch'块中):

Docnet\MATT::expect('Some horrible error')->never()->email('bill@microsoft.com');

使用Composer安装

以下是Composer用户的require行...

"docnet/matt-client": "dev-master"

无需设置

您不需要去设置Web界面中的监控器等。第一次您调用(如上所述)时,服务器将开始监控。

您还会收到一条设置消息,这是对唯一事件引用的第一次调用。

命名接收者

您还可以使用已设置的命名目标和组,例如,在这个例子中,'support'代表多个人。

Docnet\MATT::expect('Some other horrible error')->never()->email('support');

截至写作时,命名接收者必须由作者设置。

事件名称

使用事件名称/标识符作为参数的单例工厂方法expect()。这些名称限制为32个字符,并且将被截断。

当我们这样做时,会触发一个E_USER_WARNING

间隔

方法every()接受一个字符串参数来表示间隔。支持的间隔字符串可以是以下之一:

  • 分钟
  • 小时

或者,以下时间表示方法之一,其中N是数字:

  • Nm
  • Nh
  • Nd

更改间隔

如果您开始时是这样的:

Docnet\MATT::expect('My cron finished OK')->every('5m')->sms('07777123456');

然后决定您想更改间隔,只需更改传递给every()的值,如下所示:

Docnet\MATT::expect('My cron finished OK')->every('15m')->sms('07777123456');

系统将自动为您更新监控间隔,并发送另一条确认消息。

警报频率

MATT将每隔跳过的间隔向您发送警报。

因此,每小时运行一次的失败的cron将在它再次成功运行之前每小时发送一次警报。

注意 - 如果您要求每分钟发送一条短信 - 您将收到一条短信!

监控器是HOST和DOCNET_APP_ID唯一的

默认情况下,MATT客户端将包括您的hostname作为请求的一部分,如果已定义,则包括DOCNET_APP_ID

监控器是针对host+app_id对唯一的。

这意味着对于“Google feed上传成功”的监控器可以运行,每个客户端的检查都是相互独立的。

如果您需要覆盖hostname,可以使用以下from()方法(但请注意与开发的重叠):

Docnet\MATT::expect('Clustered cron')->from('cluster')->every('hour')->email('support');

取消(停止监控)

如果您需要停止服务器监控特定事件,请使用 cancel(),如下所示

MATT::expect('Some other horrible error')->cancel();

系统将通知当前短信和电子邮件接收者已取消。

静默监控/取消

如果您需要抑制“正在监控...”和“已停止监控...”的消息,请使用 suppress_watch_message(),如下所示

Docnet\MATT::expect('Clustered cron')->from('cluster')->every('hour')->email('support')->suppress_watch_message();

Docnet\MATT::expect('Clustered cron')->cancel()->suppress_watch_message();

使用 PHP Streams 通过 HTTPS 进行 API 调用

由于我们不知道将要部署在什么平台上,所以我们不使用 Curl,以防它未安装。

因此,API 调用是通过 HTTPS 使用 PHP 本地 Streams 和相关上下文选项进行的。如果使用 PHP 本地 Streams 进行 HTTPS 调用失败且 Curl 可用,API 调用将通过 Curl 进行尝试

API 调用是在每个 MATT 实例的 __destruct() 中进行的。如果调用失败,将触发一个 E_USER_WARNING

如果来自服务器的响应包含文本消息,则将通过 E_USER_NOTICE 推送出来。

PHP 版本支持

希望与 PHP 5.3.0 及以上版本兼容。

编码标准

希望遵守 PSR-2