Dieses Paket prüft, ob die Anwendungsressourcen ordnungsgemäß ausgeführt werden, und erstellt ein Dienststatusfenster. Es hat die folgenden Hauptpunkte:
Heath verfügt über vorkonfigurierte Ressourcenprüfer für die folgenden Dienste:
Sie können aber auch alles andere hinzufügen, was Sie benötigen. Sie müssen lediglich den richtigen Prüfer finden oder einfach einen neuen Prüfer für Ihre Ressource erstellen.
Wenn Sie viele Websites überprüfen müssen, können Sie mit dem HealthPanel-Checker eine Health Monitor-Anwendung erstellen, um alle Ihre Remote-Monitore zu überprüfen und ein Dashboard zu erstellen, um den Status aller Ihrer Websites zusammenzufassen.
Das Erstellen neuer Ressourcenmonitore ist einfach. Erstellen Sie einfach eine neue YAML-Datei im Ordner „config/health“ der App und fertig. Hier einige Beispiele:
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
Wenn Sie viele Dienste überprüfen müssen, können Sie das Standard-Panel-Design ändern, um weniger Platz zu beanspruchen:
Fahren Sie mit der Maus über eine fehlerhafte Ressource und erhalten Sie sofortigen Zugriff auf die Fehlermeldung:
Klicken Sie auf die Ressourcenschaltfläche und Sie erhalten eine Benachrichtigung mit der folgenden Fehlermeldung:
Hier ist ein Beispiel für eine über Slack gesendete Benachrichtigung:
Die folgenden Befehle zur Integritätsprüfung geben auch einen Exit-Code in einem Standardformat zurück:
Numerischer Wert | Servicestatus | Statusbeschreibung |
---|---|---|
0 | OK | Service und scheint ordnungsgemäß zu funktionieren |
1 | Warnung | Die Prüfung verlief einwandfrei, lag aber über einem bestimmten „Warnschwellenwert“. |
2 | Kritisch | Der bei der Überprüfung festgestellte Dienst läuft nicht oder liegt über einem „kritischen“ Schwellenwert |
3 | Unbekannt | Die Einstellungen für die Serviceprüfung sind möglicherweise falsch konfiguriert und verhindern die Durchführung der Prüfung |
Verwenden Sie den Befehl health:panel
um den Status Ihrer Dienste in der Konsole anzuzeigen.
Verwenden Sie den Befehl health:check
um alle Ihre Ressourcen zu überprüfen und Benachrichtigungen bei Fehlern zu senden.
Nach der Installation haben Sie Zugriff auf die folgenden Routen:
Die Haupttafelroute.
Gibt einen JSON mit allem zurück, was das Paket über Ihre Dienste weiß:
Gibt eine Zeichenfolge mit dem Status aller Ihrer Dienste zurück, was nützlich ist, wenn Sie andere Überwachungsdienste verwenden:
hlthFAIL-dbFAIL-filesystemOK-frmwrkOK-httpOK-httpsOK-mailOK
Gibt einen JSON mit Informationen zu einem bestimmten Dienst zurück:
Verwenden Sie Composer, um es zu installieren:
composer require pragmarx/health
Fügen Sie den Dienstanbieter zu Ihrer config/app.php
hinzu:
PragmaRXHealthServiceProvider::class,
php artisan vendor:publish --provider="PragmaRXHealthServiceProvider"
http://yourdomain.com/health/panel
In diesem Paket ist fast alles einfach konfigurierbar:
Bei einigen Prüfprogrammen müssen Sie den richtigen Binärpfad konfigurieren, damit das Prüfprogramm funktioniert:
'services' => [
'ping' => [
'bin' => env('HEALTH_PING_BIN', '/sbin/ping'),
],
'composer' => [
'bin' => env('HEALTH_COMPOSER_BIN', 'composer'),
],
],
Um Benachrichtigungen über Slack zu erhalten, müssen Sie eingehende Webhooks einrichten und diese Methode mit Ihrem Webhook zu Ihrem Benutzermodell hinzufügen:
/**
* Route notifications for the Slack channel.
*
* @return string
*/
public function routeNotificationForSlack()
{
return config('services.slack.webhook_url');
}
Wenn das Gesundheitsergebnis zwischengespeichert wird, können Sie den Cache leeren, damit alle Ressourcen erneut verarbeitet werden, indem Sie ?flush=true
zur URL hinzufügen:
http://yourdomain.com/health/panel?flush=true
Wenn Sie lieber eigene Benachrichtigungssysteme erstellen möchten, können Sie diese deaktivieren und auf das folgende Ereignis warten
PragmaRXHealthEventsRaiseHealthIssue::class
Die Sendeprüfung erfolgt über ein Ping- und Pong-System. Der Broadcast-Checker pingt Ihren Dienst an und muss zurück antworten. Im Grunde müssen Sie eine URL mit einigen Daten zurückrufen:
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 ();
Beispiel für das Einchecken von Handwerkerbefehlen:
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');
Da das SensioLabs Security Checker-Paket aufgegeben wurde, hängt dieser Checker nun vom local-php-security-checker ab. Sie müssen es kompilieren oder auf Ihrem Server oder Container installieren, um diesen Prüfer verwenden zu können, und die Datei config/resources/SecurityChecker.yml
entsprechend aktualisieren.
Um es auf Lumen zu verwenden, müssen Sie wahrscheinlich so etwas in Ihrer bootstrap/app.php
tun:
$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
Antonio Carlos Ribeiro
Health ist unter der BSD 3-Clause-Lizenz lizenziert – Einzelheiten finden Sie in der LICENSE
Datei
Pull-Requests und Issues sind mehr als willkommen.