redwebcreation/laravel-healthful

检查您的应用程序是否健康。

1.0.0 2021-08-17 05:29 UTC

This package is auto-updated.

Last update: 2024-09-17 11:43:03 UTC


README

此包旨在与Docker的HEALTHCHECK指令一起使用,并相应地设计。

Tests Formats Version Total Downloads License

安装

需要PHP 8.0+

您可以通过composer安装此包

composer require redwebcreation/laravel-healthful

该包将自动注册自己。

您需要发布迁移

php artisan vendor:publish --tag="healthful-migrations"

可选地,您可以发布配置文件

php artisan vendor:publish --tag="healthful-config"

这是已发布配置文件的内容

<?php

use RWC\Healthful\Checks\DatabaseCheck;
use RWC\Healthful\Checks\QueueCheck;
use RWC\Healthful\Checks\SchedulerCheck;

return [
    /* The route that should return the health status */
    'route' => '/_/health',

    /* A list of checks to be performed. */
    'checks' => [
        DatabaseCheck::class,
    ]
];

用法

检查您的应用程序是否健康

use RWC\Healthful\Facades\Health;

Health::check();

如果所有检查都为真,则返回true;如果其中一个失败,则返回false。

您可能希望公开您的应用程序的健康状态

use RWC\Healthful\Facades\Health;

Health::route()->name('healthcheck');

它会在/_/health处注册一个路由,如果所有检查都通过,则返回200,如果其中之一未通过,则返回503。

自定义检查

// app/HealthChecks/IsMondayCheck.php
use RWC\Healthful\Checks\Check;

class IsMondayCheck implements Check {
    public function passes() : bool{
        // Monday is never healthful.
        return !now()->isMonday();
    }
}
// config/healthful.php
return [
    'checks' => [
        // ...
        IsMondayCheck::class
    ]
    
];

您还可以使用Heartbeat模型

use RWC\Healthful\Models\Heartbeat;

$heartbeat = Heartbeat::firstOrNew([
    'type' => 100 // any number above 100
]);

$heartbeat->updateTimestamps();
$heartbeat->save();

您需要指定一个大于100的type,以确保本包提供的其他类型的心跳永远不会与您的冲突。

然后,在您的检查中:

use RWC\Healthful\Checks\Check;
use RWC\Healthful\Models\Heartbeat;

class MyCheck implements Check {
    public function passes(): bool {
        $heartbeat = Heartbeat::query()
            ->where('type', 100)
            ->where('updated_at', '>=', now()->subMinutes(5))
            ->first();

        return $heartbeat !== null;
    }
}

Docker集成

# Dockerfile
HEALTHCHECK --interval=1m --timeout=30s --retries=3 CMD curl --fail http://localhost/_/health || exit 1

测试

composer test

Laravel的HealthfulFélix Dorn创建,遵循MIT许可证