このパッケージは、アプリケーション リソースが正常に実行されているかどうかを確認し、サービス ステータス パネルを作成します。主なポイントは次のとおりです。
Heath は、次のサービス用に事前構成されたリソース チェッカーを備えています。
ただし、他に必要なものを追加することはできます。必要なのは、使用する適切なチェッカーを見つけるか、リソース用に新しいチェッカーを作成することだけです。
チェックする Web サイトが多数ある場合は、HealthPanel チェッカーを使用してヘルス モニター アプリケーションを作成し、すべてのリモート モニターをチェックし、すべての Web サイトの状態を要約するダッシュボードを作成できます。
新しいリソース モニターの作成は簡単です。アプリの config/health フォルダーに新しい YAML ファイルを作成するだけで完了です。以下にいくつかの例を示します。
name: S3
abbreviation: s3
checker: PragmaRXHealthCheckersCloudStorageChecker
notify: true
driver: s3
file: pragmarx-health-s3-testfile.txt
contents: {{ str_random(32) }}
error_message: 'Amazon S3 connection is failing.'
column_size: 4
name: NginxServer
abbreviation: ngnxsrvr
checker: PragmaRXHealthCheckersProcessChecker
command: 'pgrep %s'
method: process_count
process_name: nginx
instances:
minimum:
count: 4
message: 'Process "%s" has not enough instances running: it has %s, when should have at least %s'
maximum:
count: 8
message: 'Process "%s" exceeded the maximum number of running instances: it has %s, when should have at most %s'
notify: true
pid_file_missing_error_message: 'Process ID file is missing: %s.'
pid_file_missing_not_locked: 'Process ID file is not being used by any process: %s.'
column_size: 4
チェックするサービスが多数ある場合は、デフォルトのパネル デザインを変更して、使用するスペースを減らすことができます。
障害が発生したリソースにマウスを置くと、エラー メッセージに即座にアクセスできます。
リソース ボタンをクリックすると、次のエラー メッセージを示すアラートが表示されます。
Slack 経由で送信される通知の例は次のとおりです。
以下のヘルス チェック コマンドも、標準形式で終了コードを返します。
数値 | サービスステータス | ステータスの説明 |
---|---|---|
0 | わかりました | サービスは正常に機能しているようです |
1 | 警告 | チェックは正常に実行されましたが、「警告」のしきい値を超えていました |
2 | 致命的 | チェックで検出されたサービスが実行中でないか、「クリティカル」しきい値を超えています |
3 | 未知 | サービスチェックの設定が間違っている可能性があり、チェックの実行が妨げられています。 |
コマンドhealth:panel
使用して、コンソールでサービスのステータスを表示します。
コマンドhealth:check
し、失敗時に通知を送信します。
インストール後、次のルートにアクセスできるようになります。
メインパネルルート。
パッケージがサービスに関して知っているすべての情報を含む json を返します。
すべてのサービスのステータスを含む文字列を返します。他の監視サービスを使用する場合に便利です。
hlthFAIL-dbFAIL-filesystemOK-frmwrkOK-httpOK-httpsOK-mailOK
特定のサービスに関する情報を含む json を返します。
Composer を使用してインストールします。
composer require pragmarx/health
サービス プロバイダーをconfig/app.php
に追加します。
PragmaRXHealthServiceProvider::class,
php artisan vendor:publish --provider="PragmaRXHealthServiceProvider"
http://yourdomain.com/health/panel
このパッケージでは、ほとんどすべてを簡単に構成できます。
一部のチェッカーでは、チェッカーが機能するために適切なバイナリ パスを構成する必要があります。
'services' => [
'ping' => [
'bin' => env('HEALTH_PING_BIN', '/sbin/ping'),
],
'composer' => [
'bin' => env('HEALTH_COMPOSER_BIN', 'composer'),
],
],
Slack 経由で通知を受信するには、Incoming Webhook をセットアップし、Webhook を使用してこのメソッドを User モデルに追加する必要があります。
/**
* Route notifications for the Slack channel.
*
* @return string
*/
public function routeNotificationForSlack()
{
return config('services.slack.webhook_url');
}
Health 結果がキャッシュされている場合、URL に?flush=true
追加することで、キャッシュをフラッシュしてすべてのリソースを再度処理することができます。
http://yourdomain.com/health/panel?flush=true
独自の通知システムを構築したい場合は、それを無効にして次のイベントをリッスンできます。
PragmaRXHealthEventsRaiseHealthIssue::class
ブロードキャストチェッカーはピンポンシステムによって行われます。ブロードキャスト チェッカーはサービスに ping を送信し、それを返す必要があります。基本的に行う必要があるのは、いくつかのデータを含む URL をコールバックすることです。
var request = require('request');
var server = require('http').Server();
var io = require('socket.io')(server);
var Redis = require('ioredis');
var redis = new Redis();
redis.subscribe('pragmarx-health-broadcasting-channel');
redis.on('message', function (channel, message) {
message = JSON.parse(message);
if (message.event == 'PragmaRX\Health\Events\HealthPing') {
request.get(message.data.callbackUrl + '?data=' + JSON.stringify(message.data));
}
});
server.listen(3000);
<!DOCTYPE html>
<html>
<head>
<title>Pusher Test</title>
<script src="https://js.pusher.com/3.2/pusher.min.js"></script>
<script>
var pusher = new Pusher('YOUR-PUSHER-KEY', {
encrypted: true
});
var channel = pusher.subscribe('pragmarx-health-broadcasting-channel');
channel.bind('PragmaRX\Health\Events\HealthPing', function(data) {
var request = (new XMLHttpRequest());
request.open("GET", data.callbackUrl + '?data=' + JSON.stringify(data));
request.send();
});
</script>
</head>
<body>
Pusher waiting for events...
</body>
</html>
$ generalHealthState = app ( ' pragmarx.health ' )-> checkResources ();
// or
$ databaseHealthy = app ( ' pragmarx.health ' )-> checkResource ( ' database ' )-> isHealthy ();
職人コマンドのチェックイン例:
Artisan::command('database:health', function () {
app('pragmarx.health')->checkResource('database')->isHealthy()
? $this->info('database is healthy')
: $this->info('database is in trouble')
;
})->describe('Check database health');
SensioLabs Security Checker パッケージが廃止されたため、このチェッカーは local-php-security-checker に依存するようになりました。このチェッカーを使用するには、サーバーまたはコンテナーにコンパイルまたはインストールし、それに応じてconfig/resources/SecurityChecker.yml
ファイルを更新する必要があります。
Lumen で使用するには、おそらくbootstrap/app.php
で次のようなことを行う必要があります。
$app->instance('path.config', app()->basePath() . DIRECTORY_SEPARATOR . 'config');
$app->instance('path.storage', app()->basePath() . DIRECTORY_SEPARATOR . 'storage');
$app->withFacades();
$app->singleton('IlluminateContractsRoutingResponseFactory', function ($app) {
return new IlluminateRoutingResponseFactory(
$app['IlluminateContractsViewFactory'],
$app['IlluminateRoutingRedirector']
);
});
$app->register(PragmaRXHealthServiceProvider::class);
$ composer test
アントニオ・カルロス・リベイロ
Health は BSD 3 条項ライセンスに基づいてライセンスされています - 詳細については、 LICENSE
ファイルを参照してください。
プルリクエストや問題は大歓迎です。