Этот пакет проверяет, работают ли ресурсы приложения должным образом, и создает панель состояния службы. Он имеет следующие основные моменты:
В 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, вам необходимо настроить входящие веб-перехватчики и добавить этот метод в свою модель пользователя с помощью веб-перехватчика:
/**
* 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
Проверка трансляции осуществляется через систему пинг-понг. Средство проверки широковещательной рассылки пропингует вашу службу и должно ответить обратно. По сути, вам нужно перезвонить 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:
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 был заброшен, эта программа проверки теперь зависит от 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
Запросы на включение и проблемы более чем приветствуются.