Laravel Health Check
, (*1)
configurable healthcheck route for laravel, (*2)
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., (*3)
Add the \Ipunkt\LaravelHealthcheck\HealthcheckProvider::class, to your providers section in config/app.php., (*4)
php artisan vendor:publish --provider "Ipunkt\LaravelHealthcheck\HealthcheckProvider"
Usage
Edit the config file config/healthcheck.php, (*5)
see the comments there for more information, (*6)
Available checkers
-
database Tests database connections via Eloquent
-
storage Tests write access to filesystem paths
-
redis Tests for accessing redis queue service
-
solr Tests 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., (*7)
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.");
}
}