Paket ini memeriksa apakah sumber daya aplikasi berjalan sebagaimana mestinya dan membuat panel status layanan. Ini memiliki poin-poin utama berikut:
Heath memiliki pemeriksa sumber daya yang telah dikonfigurasi sebelumnya untuk layanan berikut:
Namun Anda dapat menambahkan apa pun yang diperlukan, Anda hanya perlu menemukan pemeriksa yang tepat untuk digunakan atau cukup membuat pemeriksa baru untuk sumber daya Anda.
Jika Anda memiliki banyak situs web untuk diperiksa, Anda dapat menggunakan pemeriksa HealthPanel untuk membuat aplikasi Monitor Kesehatan untuk memeriksa semua monitor jarak jauh dan membuat dasbor untuk merangkum keadaan semua situs web Anda.
Membuat monitor sumber daya baru itu mudah, cukup buat file YAML baru di folder konfigurasi/kesehatan aplikasi dan selesai. Berikut beberapa contohnya:
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
Jika Anda memiliki banyak layanan untuk diperiksa, Anda dapat mengubah desain panel default untuk menggunakan lebih sedikit ruang:
Arahkan mouse ke sumber daya yang gagal dan dapatkan akses instan ke pesan kesalahan:
Klik tombol sumber daya dan Anda akan mendapatkan peringatan yang menunjukkan pesan kesalahan:
Berikut contoh notifikasi yang dikirim melalui Slack:
Perintah pemeriksaan kesehatan di bawah ini juga mengembalikan kode keluar dalam format standar:
Nilai Numerik | Status Layanan | Deskripsi Status |
---|---|---|
0 | OKE | Layanan dan tampaknya berfungsi dengan baik |
1 | Peringatan | Pemeriksaan berjalan baik-baik saja, tetapi berada di atas ambang batas "peringatan". |
2 | Kritis | Layanan pemeriksaan yang terdeteksi tidak berjalan atau berada di atas ambang batas "kritis". |
3 | Tidak dikenal | Pengaturan untuk pemeriksaan layanan mungkin salah dikonfigurasi dan menghalangi pelaksanaan pemeriksaan |
Gunakan perintah health:panel
untuk melihat status layanan Anda di konsol.
Gunakan perintah health:check
untuk memeriksa semua sumber daya Anda dan mengirimkan pemberitahuan jika ada kegagalan.
Setelah menginstal Anda akan memiliki akses ke rute berikut:
Rute panel utama.
Mengembalikan json dengan semua yang diketahui paket tentang layanan Anda:
Mengembalikan string dengan status di semua layanan Anda, berguna saat menggunakan layanan pemantauan lainnya:
hlthFAIL-dbFAIL-filesystemOK-frmwrkOK-httpOK-httpsOK-mailOK
Mengembalikan json dengan informasi tentang layanan tertentu:
Gunakan Komposer untuk menginstalnya:
composer require pragmarx/health
Tambahkan Penyedia Layanan ke config/app.php
Anda:
PragmaRXHealthServiceProvider::class,
php artisan vendor:publish --provider="PragmaRXHealthServiceProvider"
http://yourdomain.com/health/panel
Hampir semuanya mudah dikonfigurasi dalam paket ini:
Beberapa pemeriksa mengharuskan Anda mengonfigurasi jalur biner yang tepat agar pemeriksa dapat berfungsi:
'services' => [
'ping' => [
'bin' => env('HEALTH_PING_BIN', '/sbin/ping'),
],
'composer' => [
'bin' => env('HEALTH_COMPOSER_BIN', 'composer'),
],
],
Untuk menerima notifikasi melalui Slack, Anda harus menyiapkan Webhook Masuk dan menambahkan metode ini ke model Pengguna dengan webhook Anda:
/**
* Route notifications for the Slack channel.
*
* @return string
*/
public function routeNotificationForSlack()
{
return config('services.slack.webhook_url');
}
Ketika hasil Kesehatan di-cache, Anda dapat membersihkan cache agar memproses semua sumber daya lagi dengan menambahkan ?flush=true
ke url:
http://yourdomain.com/health/panel?flush=true
Jika Anda lebih memilih untuk membangun sistem notifikasi Anda sendiri, Anda dapat menonaktifkannya dan mendengarkan acara berikut
PragmaRXHealthEventsRaiseHealthIssue::class
Pemeriksa siaran dilakukan melalui sistem ping dan pong. Pemeriksa siaran akan melakukan ping ke layanan Anda, dan harus melakukan pong kembali. Pada dasarnya yang perlu Anda lakukan adalah memanggil kembali url dengan beberapa data:
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 ();
Contoh memeriksa perintah artisan:
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');
Karena paket Pemeriksa Keamanan SensioLabs ditinggalkan, pemeriksa ini sekarang bergantung pada pemeriksa keamanan-php-lokal. Anda perlu mengkompilasi atau menginstalnya di server atau container Anda untuk menggunakan pemeriksa ini, dan memperbarui file config/resources/SecurityChecker.yml
sesuai dengan itu.
Untuk menggunakannya di Lumen, Anda mungkin perlu melakukan sesuatu seperti ini di bootstrap/app.php
Anda :
$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
Kesehatan dilisensikan di bawah Lisensi 3-Klausul BSD - lihat file LICENSE
untuk detailnya
Permintaan tarik dan masalah sangat diterima.