Open a command console, enter your project directory and execute:
composer require jpvdw86/symfony-health-check-bundle
This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.
Then, enable the bundle by adding it to the list of registered bundles
in the config/bundels.php
file of your project:
<?php
// config/bundels.php
return [
// ...
SymfonyHealthCheckBundle\SymfonyHealthCheckBundle::class => ['all' => true],
];
config/packages/symfony_health_check.yaml
Configurating health check - all available you can see here.
symfony_health_check:
health_checks:
- id: symfony_health_check.status_up_check
- id: symfony_health_check.doctrine_check
- id: symfony_health_check.environment_check
config/routes/symfony_health_check.yaml
health_check:
resource: '@SymfonyHealthCheckBundle/Resources/config/routes.xml'
config/packages/security.yaml
If you are using symfony/security and your health check is to be used anonymously, add a new firewall to the configuration
firewalls:
healthcheck:
pattern: ^/health
security: false
It is possible to add your custom health check:
<?php
// src/Check/CustomCheck.php
namespace App\Check;
use SymfonyHealthCheckBundle\Check\CheckInterface;
class CustomCheck implements CheckInterface
{
private const CHECK_RESULT_KEY = 'customConnection';
public function isHealthy(): bool
{
return true;
}
public function check(): array
{
return [
'name' => self::CHECK_RESULT_KEY,
'status' => $this->isHealthy()
];
}
}
Then we add our custom health check to collection
symfony_health_check:
health_checks:
- id: symfony_health_check.status_up_check
- id: symfony_health_check.doctrine_check
- id: symfony_health_check.environment_check
- id: custom_check
You can change the default behavior with a light configuration, remember to return to Step 3 after that:
health:
path: /your/custom/url
methods: GET
controller: SymfonyHealthCheckBundle\Controller\HealthController::healthCheckAction
You can add to follow line to you docker-compose / docker-stack file.
healthcheck:
test: curl -sS http://localhost/health || exit 1
interval: 5s
timeout: 3s
retries: 3
start_period: 15s
Or in your docker file
HEALTHCHECK --start-period=15s --interval=5s --timeout=3s --retries=3 CMD curl -sS http://localhost/health || exit 1