saritasa / laravel-healthcheck
Package for projects health-check
Installs: 4 788
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 11
Forks: 1
Open Issues: 0
Requires
- php: >=7.1
- illuminate/database: ^5.6 || 6.* || 7.* || 8.* || 9.* || 10.* || 11.*
- illuminate/routing: ^5.6 || 6.* || 7.* || 8.* || 9.* || 10.* || 11.*
- illuminate/support: ^5.6 || 6.* || 7.* || 8.* || 9.* || 10.* || 11.*
- saritasa/php-common: ^1.1
Requires (Dev)
- mockery/mockery: ^1.1
- phpunit/phpunit: ^8.5
- slevomat/coding-standard: >=5.0
- squizlabs/php_codesniffer: ^3.0
README
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