exolnet / laravel-heartbeat
定期安排任务向监控系统发送心跳。
Requires
- php: ^7.2
- laravel/framework: ^6.0|^7.0
Requires (Dev)
- guzzlehttp/guzzle: ^6.3
- mockery/mockery: ^1.3
- orchestra/testbench: ^4.0|^5.0
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: ^3.3.2
Suggests
- guzzlehttp/guzzle: Required to send Http signals (~6.0).
README
定期安排任务向监控系统发送心跳。
安装
使用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而不是使用问题跟踪器来报告。