Skip to content

MacPaw/symfony-health-check-bundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

4dbb634 · Oct 3, 2023
Sep 12, 2023
Sep 24, 2023
Sep 24, 2023
Jan 16, 2022
Dec 15, 2021
Dec 24, 2021
Sep 26, 2021
Dec 24, 2021
Sep 24, 2023
Feb 13, 2023
Jan 18, 2022
Sep 13, 2023
Apr 30, 2021
Sep 12, 2023
Jan 12, 2023
May 6, 2021

Repository files navigation

Symfony Health Check Bundle

Version Build Status Code Coverage
master CI Coverage Status
develop CI Coverage Status

Installation

Step 1: Download the Bundle

Open a command console, enter your project directory and execute:

Applications that use Symfony Flex

$ composer require macpaw/symfony-health-check-bundle

Applications that don't use Symfony Flex

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

$ composer require macpaw/symfony-health-check-bundle

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.

Step 2: Enable the Bundle

Then, enable the bundle by adding it to the list of registered bundles in the app/AppKernel.php file of your project:

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...
            SymfonyHealthCheckBundle\SymfonyHealthCheckBundle::class => ['all' => true],
        );

        // ...
    }

    // ...
}

Create Symfony Health Check Bundle Config:

config/packages/symfony_health_check.yaml

Configurating health check - all available you can see here.

symfony_health_check:
    health_checks:
        - id: symfony_health_check.doctrine_check
    ping_checks:
        - id: symfony_health_check.status_up_check

Change response code:

  • default response code is 200.
  • determine your custom response code in case of some check fails (Response code must be a valid HTTP status code)
symfony_health_check:
    health_checks:
        - id: symfony_health_check.doctrine_check
    ping_checks:
        - id: symfony_health_check.status_up_check
    ping_error_response_code: 500
    health_error_response_code: 404

Create Symfony Health Check Bundle Routing Config:

config/routes/symfony_health_check.yaml

health_check:
    resource: '@SymfonyHealthCheckBundle/Resources/config/routes.xml'

Step 3: Configuration

Security Optional:

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
        ping:
            pattern: ^/ping
            security: false

Step 4: Additional settings

Add Custom Check:

It is possible to add your custom health check:

<?php

declare(strict_types=1);

namespace YourProject\Check;

use SymfonyHealthCheckBundle\Dto\Response;

class CustomCheck implements CheckInterface
{
    public function check(): Response
    {
        return new Response('status', true, 'up');
    }
}

Then we add our custom health check to collection

symfony_health_check:
    health_checks:
        - id: symfony_health_check.doctrine_check
        - id: custom_health_check // custom service check id

How Change Route:

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::check
    
ping:
    path: /your/custom/url
    methods: GET
    controller: SymfonyHealthCheckBundle\Controller\PingController::check

How To Use Healthcheck In Docker

HEALTHCHECK --start-period=15s --interval=5s --timeout=3s --retries=3 CMD curl -sS {{your host}}/health || exit 1