ipunkt / laravel-healthcheck
configurable healthcheck route for laravel
Installs: 45 996
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 5
Forks: 4
Open Issues: 2
pkg:composer/ipunkt/laravel-healthcheck
Requires
- illuminate/database: ^5.0 || ^6.0 || ^7.0 || ^8.0
- illuminate/support: ^5.0 || ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- mockery/mockery: ^0.9
- phpunit/phpunit: ^5.0
- solarium/solarium: ^3.8
Suggests
- solarium/solarium: Necessary to check Apache Solr instance
README
configurable healthcheck route for laravel
Install
composer require ipunkt/laravel-healthcheck
If you are using laravel 5.5 or above you do not have to add the provider manually. We support the package discovery.
Add the \Ipunkt\LaravelHealthcheck\HealthcheckProvider::class, to your providers section in config/app.php.
php artisan vendor:publish --provider "Ipunkt\LaravelHealthcheck\HealthcheckProvider"
Usage
Edit the config file config/healthcheck.php
see the comments there for more information
Available checkers
databaseTests database connections via EloquentstorageTests write access to filesystem pathsredisTests for accessing redis queue servicesolrTests for accessing solr services (needs extra package solarium/solarium)
Extend
To add a new Healthchecker implement Ipunkt\LaravelHealthcheck\HealthChecker\Checker and register it with the
Ipunkt\LaravelHealthcheck\HealthChecker\Factory\HealthcheckerFactory.
The HealtcheckerFactory is registered as singleton so you can use App::make() to retrieve it in the boot part of a
ServiceProvider and register your Checker.
HealthcheckerFactory::register
- string $identifier - the identifier which will activate the checker when added to
config('healthcheck.checks') - Closure function(array $config) { return new Checker; } - Callback to make the Checker. Receives
$config('healthcheck.$identifier')as parameter.
Example
class ServiceProvider { public function boot() { /** * @var HealthcheckerFactory $factory */ $factory = $this->app->make('Ipunkt\LaravelHealthcheck\HealthChecker\Factory\HealthcheckerFactory'); $factory->register('identifier', function(array $config) { $newChecker = new ExampleChecker; $newChecker->setExampleOption( array_get($config, 'url', 'http://www.example.com') ); return $newChecker; }); } } class ExampleChecker implement Ipunkt\LaravelHealthcheck\HealthChecker\Checker { protected $url; public function setExampleOption($url) { $this->url = $url; } public function check() { $url = $this->url; if ( @file_get_contents($url) === false ) throw new CheckFailedException("Failed to retrieve $url."); } }