Package for Laravel-based project self-diagnostics. Implements basic checks (ex. if application can connect to DB server) and allows extensibility (ex. implement custom checks)
Install the saritasa/laravel-healthcheck
package:
$ composer require saritasa/laravel-healthcheck
- Publish configuration file:
php artisan vendor:publish --provider="Saritasa\LaravelHealthCheck\HealthCheckServiceProvider"
Configure the necessary checks in file config/health_check.php
'checkers' => [
'database' => \Saritasa\LaravelHealthCheck\Checkers\DatabaseHealthChecker::class,
'redis' => \Saritasa\LaravelHealthCheck\Checkers\RedisHealthChecker::class,
's3' => \Saritasa\LaravelHealthCheck\Checkers\S3HealthChecker::class,
],
You can add more custom checks - just add a class implementing
\Saritasa\LaravelHealthCheck\Contracts\ServiceHealthChecker
interface with single method check()
that must return instance of \Saritasa\LaravelHealthCheck\Contracts\CheckResult
.
Install the saritasa/laravel-healthcheck
package:
$ composer require saritasa/laravel-healthcheck
Create a new file config\health_check.php
:
<?php
use Saritasa\LaravelHealthCheck\Checkers\DatabaseHealthChecker;
use Saritasa\LaravelHealthCheck\Checkers\RedisHealthChecker;
use Saritasa\LaravelHealthCheck\Checkers\S3HealthChecker;
return [
'checkers' => [
'database' => DatabaseHealthChecker::class,
'redis' => RedisHealthChecker::class,
's3' => S3HealthChecker::class,
],
];
Add the service provider in file bootstrap\app.php
:
$app->configure('health_check');
$app->instance('path.config', app()->basePath() . DIRECTORY_SEPARATOR . 'config');
$app->register(Saritasa\LaravelHealthCheck\HealthCheckServiceProvider::class);
Package exposes endpoints to run all checks or run each check by name:
Runs all known checks and returns HTTP code = 200, if all checks succeeded, 500 otherwise.
Response contains JSON with pares of check name and true/false indicating if checker completed successfully or not.
Where {checker} is a key from config/health_check.php
, ex. GET /health-check/database
.
Returns HTTP code = 200, if checker reports success, 500 otherwise.
Returns payload, returned by checker. If check result is not successful, adds error message.
Do nothing, just check availability of PHP application
Checks, if default connection to DB, configured in Laravel is available - tries to establish connection to server.
Checks, if redis connection is available - tries to establish connection to server.
Checks, if application can read from default S3 bucket - tries to get enumerate entries in S3 bucket.
Does nothing. Use if you need to check HTTP server availability only.
- Create fork, checkout it
- Develop locally as usual. Code must follow PSR-1, PSR-2 -
run PHP_CodeSniffer to ensure, that code follows style guides - Cover added functionality with unit tests and run PHPUnit to make sure, that all tests pass
- Update README.md to describe new or changed functionality
- Add changes description to CHANGES.md file. Use Semantic Versioning convention to determine next version number.
- When ready, create pull request