configurable healthcheck route for laravel
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"
Edit the config file config/healthcheck.php
see the comments there for more information
databaseTests database connections via EloquentstorageTests write access to filesystem pathsredisTests for accessing redis queue servicesolrTests for accessing solr services (needs extra package solarium/solarium)
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.
- 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.
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.");
}
}