이 패키지는 애플리케이션 리소스가 정상적으로 실행되고 있는지 확인하고 서비스 상태 패널을 생성합니다. 여기에는 다음과 같은 주요 사항이 있습니다.
Heath에는 다음 서비스에 대해 사전 구성된 리소스 검사기가 있습니다.
하지만 필요한 다른 것을 추가할 수 있습니다. 사용할 올바른 검사기를 찾거나 리소스에 대한 새 검사기를 만들기만 하면 됩니다.
확인할 웹사이트가 많은 경우 HealthPanel 검사기를 사용하여 모든 원격 모니터를 확인하는 상태 모니터 애플리케이션을 생성하고 모든 웹사이트의 상태를 요약하는 대시보드를 생성할 수 있습니다.
새 리소스 모니터를 만드는 것은 쉽습니다. 앱의 config/health 폴더에 새 YAML 파일을 만들기만 하면 완료됩니다. 다음은 몇 가지 예입니다.
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을 사용하여 User 모델에 이 메서드를 추가해야 합니다.
/**
* Route notifications for the Slack channel.
*
* @return string
*/
public function routeNotificationForSlack()
{
return config('services.slack.webhook_url');
}
상태 결과가 캐시되면 URL에 ?flush=true
추가하여 캐시를 플러시하여 모든 리소스를 다시 처리하도록 할 수 있습니다.
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 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
안토니오 카를로스 리베이로
Health는 BSD 3-Clause License에 따라 라이센스가 부여됩니다. 자세한 내용은 LICENSE
파일을 참조하세요.
끌어오기 요청과 문제는 환영할 만한 일입니다.