renoki-co/laravel-healthchecks

Laravel Healthchecks 是一个简单的控制器类,帮助您无问题地构建自己的健康检查端点。

2.1.0 2022-02-09 22:05 UTC

README

CI codecov StyleCI Latest Stable Version Total Downloads Monthly Downloads License

Laravel Healthchecks 是一个简单的控制器类,帮助您无问题地构建自己的健康检查端点。

🤝 支持

如果您在生产应用、演示、爱好项目、学校项目等中使用 Renoki Co. 的一个或多个开源包,请通过 GitHub Sponsors 赞助我们的工作。 📦

🚀 安装

您可以通过 composer 安装此包。

composer require renoki-co/laravel-healthchecks

🙌 使用

首先,您应该创建自己的 Controller 用于健康检查,该控制器扩展 RenokiCo\LaravelHealthchecks\Http\Controllers\HealthcheckController

use Illuminate\Http\Request;
use RenokiCo\LaravelHealthchecks\Http\Controllers\HealthcheckController;

class MyHealthcheckController extends HealthcheckController
{
    /**
     * Register the healthchecks.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return void
     */
    public function registerHealthchecks(Request $request)
    {
        $this->addHealthcheck('mysql', function (Request $request) {
            // Try testing the MySQL connection here
            // and return true/false for pass/fail.

            return true;
        });
    }
}
// In your routes
Route::get('/healthcheck', [MyHealthcheckController::class, 'handle']);

注册健康检查

在控制器中,您应该在 registerHealthchecks 方法中注册健康检查的闭包,如上面的示例所示。

您可以添加任意数量的健康检查。

public function registerHealthchecks(Request $request)
{
    $this->addHealthcheck('mysql', function (Request $request) {
        //
    });

    $this->addHealthcheck('redis', function (Request $request) {
        //
    });

    $this->addHealthcheck('some_check', function (Request $request) {
        //
    });

    $this->addHealthcheck('another_check_here', function (Request $request) {
        //
    });
}

状态码

如果失败,响应是 500。对于所有成功的响应,状态码是 200

要更改发送的 http 状态码,请在 registerHealthchecks 方法中指定此设置

public function registerHealthchecks(Request $request)
{
    $this->setPassingHttpCode(203);

    $this->setFailingHttpCode(403);

    $this->addHealthcheck('mysql', function (Request $request) {
        return true;
    });
}

输出

默认情况下,输出将是 OKFAIL 字符串,但如果您想调试健康检查,您可以得到一个包含每个已注册的健康检查及其通过/失败闭包的 JSON。

只需调用 withOutput()

public function registerHealthchecks(Request $request)
{
    $this->withOutput();

    $this->addHealthcheck('mysql', function (Request $request) {
        return true;
    });

    $this->addHealthcheck('redis', function (Request $request) {
        return false;
    });
}

浏览器中的输出将如下所示

{
    "mysql": true,
    "redis": false
}

🐛 测试

vendor/bin/phpunit

🤝 贡献

有关详细信息,请参阅 CONTRIBUTING

🔒 安全性

如果您发现任何安全问题,请通过电子邮件 alex@renoki.org 而不是使用问题跟踪器。

🎉 致谢