แพ็คเกจนี้จะตรวจสอบว่าทรัพยากรแอปพลิเคชันทำงานตามที่ควรหรือไม่และสร้างแผงสถานะการบริการ มีประเด็นหลักดังต่อไปนี้:
Heath มีตัวตรวจสอบทรัพยากรที่กำหนดค่าไว้ล่วงหน้าสำหรับบริการต่อไปนี้:
แต่คุณสามารถเพิ่มสิ่งอื่นใดที่คุณต้องการได้ คุณเพียงแค่ต้องค้นหาตัวตรวจสอบที่ถูกต้องเพื่อใช้ หรือเพียงแค่สร้างตัวตรวจสอบใหม่สำหรับทรัพยากรของคุณ
หากคุณมีเว็บไซต์จำนวนมากที่ต้องตรวจสอบ คุณสามารถใช้ตัวตรวจสอบ HealthPanel เพื่อสร้างแอปพลิเคชัน Health Monitor เพื่อตรวจสอบจอภาพระยะไกลทั้งหมดของคุณ และสร้างแดชบอร์ดเพื่อสรุปสถานะของเว็บไซต์ทั้งหมดของคุณ
การสร้างการตรวจสอบทรัพยากรใหม่เป็นเรื่องง่าย เพียงสร้างไฟล์ YAML ใหม่ในโฟลเดอร์ config/health ของแอป เท่านี้ก็เสร็จสิ้น นี่คือตัวอย่างบางส่วน:
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 Webhooks และเพิ่มวิธีนี้ให้กับโมเดลผู้ใช้ของคุณด้วย webhook ของคุณ:
/**
* Route notifications for the Slack channel.
*
* @return string
*/
public function routeNotificationForSlack()
{
return config('services.slack.webhook_url');
}
เมื่อแคชผลลัพธ์ด้านสุขภาพแล้ว คุณสามารถล้างแคชเพื่อให้ประมวลผลทรัพยากรทั้งหมดอีกครั้งโดยการเพิ่ม ?flush=true
ไปที่ url:
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
อันโตนิโอ คาร์ลอส ริเบโร่
สุขภาพได้รับใบอนุญาตภายใต้ใบอนุญาต BSD 3-Clause - ดูรายละเอียดในไฟล์ LICENSE
คำขอดึงและปัญหาต่างๆ เป็นเรื่องที่น่ายินดีอย่างยิ่ง