ipunkt / laravel-healthcheck
configurable healthcheck route for laravel
Installs: 45 943
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 5
Forks: 4
Open Issues: 2
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
database
Tests database connections via Eloquentstorage
Tests write access to filesystem pathsredis
Tests for accessing redis queue servicesolr
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.
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."); } }