이 Laravel 5 패키지는 서버와 웹사이트의 상태를 주기적으로 모니터링합니다. 현재는 디스크 사용량에 대한 정상/경보 상태 알림, 외부 서비스의 상태를 모니터링하는 HTTP Ping 기능, SSL 인증서에 대한 유효성 검사/만료 모니터를 제공합니다.
일단 설치되면 서버를 모니터링하는 것은 매우 쉽습니다. 다음 장인 명령을 내리십시오.
php artisan monitor:run
한 번에 특정 모니터만 실행할 수 있습니다.
php artisan monitor:run HttpPing
php artisan monitor:run SSLCertificate,DiskUsage
프로젝트의 구성 파일을 사용하면 원하는 수의 모니터를 구성하여 서버 설정 문제를 확인할 수 있습니다.
명령줄이나 Laravel 명령 스케줄러를 사용하여 monitor:run
artisan 명령이 실행되면 모니터가 실행되고 문제가 있는 경우 경고합니다. 경보 상태는 구성 가능하며 경고는 로그로 전송되거나 이메일, Pushover 및 Slack을 통해 전송될 수 있습니다.
디스크 사용량 모니터는 해당 파티션에서 사용되는 저장 공간의 비율을 확인하고 해당 비율이 구성 가능한 경보 비율을 초과하면 경고합니다.
HTTP Ping 모니터는 간단한 페이지 요청을 수행하고 HTTP 상태 코드가 200이 아닌 경우 경고합니다. 선택적으로 특정 문구가 페이지 소스에 포함되어 있는지 확인할 수 있습니다.
SSL 인증서 모니터는 구성된 URL에 대한 SSL 인증서를 가져와 해당 URL에 유효한지 확인합니다. 와일드카드 및 다중 도메인 인증서가 지원됩니다.
모니터는 인증서가 유효하지 않거나 만료된 경우 경고하고 만료 날짜가 가까워지면 경고합니다. 만료 전에 경고할 날짜도 구성할 수 있습니다.
다음을 사용하여 작곡가를 통해 이 패키지를 설치할 수 있습니다.
composer require ericmakesstuff/laravel-server-monitor
ServiceProvider를 등록해야 합니다.
// config/app.php
' providers ' => [
// ...
EricMakesStuff ServerMonitor ServerMonitorServiceProvider::class,
];
구성 파일을 app/config/server-monitor.php에 게시하려면 다음을 실행하세요.
php artisan vendor:publish --provider="EricMakesStuffServerMonitorServerMonitorServiceProvider"
구성 파일을 게시한 후 app/config/server-monitor.php의 'monitors'
섹션을 편집할 수 있습니다.
기본 모니터 구성은 다음과 같습니다.
' monitors ' => [
/*
* DiskUsage will alert when the free space on the device exceeds the alarmPercentage.
* path is any valid file path, and the monitor will look at the usage of that disk partition.
*
* You may add as many DiskUsage monitors as you require.
*/
' DiskUsage ' => [
[
' path ' => base_path (),
' alarmPercentage ' => 75 ,
],
],
/*
* HttpPing will perform an HTTP request to the configured URL and alert if the response code
* is not 200, or if the optional checkPhrase is not found in the response.
*/
' HttpPing ' => [
[
' url ' => ' http://www.example.com/ ' ,
],
[
' url ' => ' http://www.example.com/ ' ,
' checkPhrase ' => ' Example Domain ' ,
' timeout ' => 10 ,
' allowRedirects ' => false ,
],
],
/*
* SSLCertificate will download the SSL Certificate for the URL and validate that the domain
* is covered and that it is not expired. Additionally, it can warn when the certificate is
* approaching expiration.
*/
' SSLCertificate ' => [
[
' url ' => ' https://www.example.com/ ' ,
],
[
' url ' => ' https://www.example.com/ ' ,
' alarmDaysBeforeExpiration ' => [ 14 , 7 ],
],
],
경고는 기본 로그 처리기에 기록되거나 이메일, 푸시오버 또는 Slack을 통해 전송될 수 있습니다. 허용되는 값은 log
, mail
, pushover
및 slack
입니다.
기본 경고 구성은 다음과 같습니다.
' events ' => [
' whenDiskUsageHealthy ' => [ ' log ' ],
' whenDiskUsageAlarm ' => [ ' log ' , ' mail ' ],
' whenHttpPingUp ' => [ ' log ' ],
' whenHttpPingDown ' => [ ' log ' , ' mail ' ],
' whenSSLCertificateValid ' => [ ' log ' ],
' whenSSLCertificateInvalid ' => [ ' log ' , ' mail ' ],
' whenSSLCertificateExpiring ' => [ ' log ' , ' mail ' ],
],
기본 설치를 수행한 후 monitor:run 명령을 사용하여 시작할 수 있습니다. 대부분의 경우 서버 상태를 알고 싶을 때마다 monitor:run을 수동으로 실행할 필요가 없도록 이 명령을 예약할 수 있습니다.
이 명령은 다른 명령과 마찬가지로 Laravel의 콘솔 커널에서 예약될 수 있습니다.
// app/Console/Kernel.php
protected function schedule ( Schedule $ schedule )
{
$ schedule -> command ( ' monitor:run ' )-> daily ()-> at ( ' 10:00 ' );
$ schedule -> command ( ' monitor:run HttpPing ' )-> hourly ();
}
물론, 위의 코드에 사용된 일정은 단지 예시일 뿐입니다. 자신의 취향에 맞게 조정하십시오.
다음을 사용하여 테스트를 실행하세요.
vendor/bin/phpunit
더 많은 모니터링 지표. 이슈나 풀 리퀘스트를 통해 자유롭게 아이디어를 제출해 주세요!
자세한 내용은 CONTRIBUTING을 참조하세요.
보안 관련 문제를 발견한 경우 문제 추적기를 사용하는 대신 [email protected]으로 이메일을 보내주세요.
MIT 라이센스(MIT). 자세한 내용은 라이센스 파일을 참조하십시오.