تتحقق هذه الحزمة مما إذا كانت موارد التطبيق تعمل كما ينبغي وتقوم بإنشاء لوحة حالة الخدمة. وفيه النقاط الرئيسية التالية:
قام 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، سيتعين عليك إعداد 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 and pong. سيقوم مدقق البث باختبار اتصال الخدمة الخاصة بك، ويجب أن يقوم بذلك مرة أخرى. ما عليك فعله بشكل أساسي هو إعادة الاتصال بعنوان 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، يعتمد هذا المدقق الآن على مدقق الأمان المحلي php. تحتاج إلى تجميعه أو تثبيته على الخادم أو الحاوية لديك حتى تتمكن من استخدام هذا المدقق، وتحديث الملف 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
للحصول على التفاصيل
طلبات السحب والقضايا هي موضع ترحيب كبير.