laravel-healthcheck maintained by saritasa
Laravel Health Check
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)
Laravel 5.5+
Install the saritasa/laravel-healthcheck package:
$ composer require saritasa/laravel-healthcheck
Configuration
- 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.
Laravel Lumen 8.0+
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);
Usage
Package exposes endpoints to run all checks or run each check by name:
GET /health
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.
GET /health/{checker}
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.
GET /liveness, GET /readness
Do nothing, just check availability of PHP application
Available checkers
Saritasa\LaravelHealthCheck\Checkers\DatabaseHealthChecker
Checks, if default connection to DB, configured in Laravel is available - tries to establish connection to server.
Saritasa\LaravelHealthCheck\Checkers\RedisHealthChecker
Checks, if redis connection is available - tries to establish connection to server.
Saritasa\LaravelHealthCheck\Checkers\S3HealthChecker
Checks, if application can read from default S3 bucket - tries to get enumerate entries in S3 bucket.
Saritasa\LaravelHealthCheck\Checkers\NullChecker
Does nothing. Use if you need to check HTTP server availability only.
Contributing
- 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