Bundle enables integration with healthchecks.io.
- implement concurrent requests
-
Require the
prgtw/healthchecks-bundle
package in yourcomposer.json
and update your dependencies.composer require prgtw/healthchecks-bundle
-
Add the
HealthchecksBundle
to your application's kernel:public function registerBundles() { $bundles = [ // ... new prgTW\HealthchecksBundle(), // ... ]; // ... }
Example configuration:
healthchecks:
api:
clients:
example: "api-key-here"
timezone: "Europe/Warsaw" # default timezone to use for checks
checks:
simple:
client: example
name: "Simple hourly check"
timeout: 3600
tags: [simple, all]
cron:
client: example
name: "Cron-based check"
schedule: "*/30 * * * *"
timezone: UTC
tags: [cron, all]
$api = $container->get('healthchecks.api');
// setup checks on healthchecks.io side according to configuration
$api->setup('simple');
$api->setupMany(['simple', 'cron']);
// ping check(s)
$api->ping('simple');
$api->pingMany(['simple', 'cron']);
// pause check(s)
$api->pause('simple');
$api->pauseMany(['simple', 'cron']);
To provide checks data at runtime you have to create your own resolver, and you have to configure bundle to use this resolver instead of default one
For example:
namespace App\Healthchecks\Resolver;
use prgTW\HealthchecksBundle\Resolver\ResolverInterface;
class CustomResolver implements ResolverInterface
{
public function resolve()
{
// Get the data from your source and map your array in such format:
return [
'backup_task' => [
'name' => 'Backup task',
'schedule' => '15 2 * * *',
'client' => 'dev',
'tags' => ['backup', 'devops'],
'unique' => ['name', 'tags'],
],
'cleanup_task' => [
'name' => 'Cleanup task',
'schedule' => '0 3 * * *',
'client' => 'dev',
'tags' => ['backup', 'devops'],
'unique' => ['name', 'tags'],
],
];
}
public function resolveNames(): array
{
return ['backup_task', 'cleanup_task'];
}
}
services:
healthchecks.resolver.custom:
class: "App\\Healthchecks\\Resolver\\CustomResolver"
healthchecks:
api:
clients:
example: "api-key-here"
timezone: "Europe/Warsaw" # default timezone to use for checks
resolver: "healthchecks.resolver.custom" #Service ID of your custom resolver