exolnet/laravel-heartbeat

定期安排任务向监控系统发送心跳。

v2.0.0 2020-03-04 23:25 UTC

README

Latest Stable Version Software License Build Status Total Downloads

定期安排任务向监控系统发送心跳。

安装

使用composer安装此包

composer require exolnet/laravel-heartbeat

如果您不使用包自动发现,请在config/app.php中的providers数组中添加服务提供者

Exolnet\Heartbeat\HeartbeatServiceProvider::class

并在config/app.php中的facades数组中添加外观

'Heartbeat' => Exolnet\Heartbeat\HeartbeatFacade::class

配置

为了编辑此包的默认配置(例如,您可以定义预设和配置队列监控),您可以执行以下操作

php artisan vendor:publish --provider="Exolnet\Heartbeat\HeartbeatServiceProvider"

之后,将创建配置文件config/heartbeat.php。此文件包含此包可以配置的所有选项。默认配置文件在此处可以找到

用法

发送信号

使用心跳外观

您可以通过Heartbeat外观发送心跳信号。要做到这一点,指定您想使用的通道,并通过调用该通道所需参数的signal方法。例如,对于Http通道,它可能看起来像这样

Heartbeat::channel('http')->signal('https://beats.envoyer.io/heartbeat/example');

或者,您也可以通过调用Heartbeat外观中定义的方法辅助程序直接调用驱动方法来发送相同的信号

Heartbeat::http('https://beats.envoyer.io/heartbeat/example');

使用Artisan

心跳也可以与heartbeat Artisan命令一起使用。要做到这一点,指定通道,并按照signal方法的顺序指定通道的参数。以下是如何使用它的两个示例

php artisan heartbeat preset preset-name
php artisan heartbeat http https://beats.envoyer.io/heartbeat/example

指定预设

方便的preset通道允许您在配置文件中定义所有心跳配置。首先,让我们看一个preset配置的示例

'presets' => [
    'envoyer' => [
        'channel' => 'http',
        'url' => 'https://beats.envoyer.io/heartbeat/example',
    ],
]

现在可以使用preset通道通过调用http通道的信号方法来使用此配置

Heartbeat::preset('envoyer');

心跳为每个通道都列出了所有需要的参数。

队列监控

当您启用了Laravel的调度器时,心跳可以用来监控您的Laravel队列系统。此功能默认启用。使用预设queue,并且每十五分钟在您的storage/app文件夹中创建一个名为queue.heartbeat的文件。

要配置此,只需发布包配置并更新queue预设。

可用通道

磁盘

用于将心跳存储在Laravel Filesystem磁盘上的通道。

文件

用于将心跳存储在文件中的通道

Http

通过调用URL执行心跳的通道

自定义通道

心跳附带了一些通道,但您可能想编写自己的驱动程序来通过其他通道发送信号。为此,定义一个包含signal方法的类。此方法应接收您需要发送信号的所有参数

<?php

namespace App\Heartbeats;

class CustomChannel
{
    /**
     * Send a heartbeat signal.
     *
     * @param string $someOption
     * @param array $moreOptions
     * @return void
     */
    public function signal($someOption, array $moreOptions = [])
    {
        // Send the signal according to the specified options.
    }
}

定义了您的通道类之后,您可以通过扩展Heartbeat的驱动来添加它。这可以在服务提供者的boot方法中添加

<?php

namespace App\Providers;

use App\Heartbeats\CustomChannel;
use Heartbeat;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * @return void
     */
    public function boot()
    {
        Heartbeat::extend('custom', function($app) {
            return $app->make(CustomChannel::class);
        });
    }
}

最后,您现在可以像使用原生驱动程序一样使用您的驱动程序

Heartbeat::custom('someOption', ['more' => 'options']);

测试

要运行phpUnit测试,请使用

composer test

贡献

有关详细信息,请参阅CONTRIBUTING行为准则

安全

如果您发现任何与安全相关的问题,请通过电子邮件security@exolnet.com而不是使用问题跟踪器来报告。

致谢

许可协议

本代码遵循MIT 许可协议。请参阅许可文件以获取更多信息。