generationtux / healthz
PHP应用的健康检查。
Requires
- php: >=7.2.5|^8.0
- aws/aws-sdk-php: ~3.0
- guzzlehttp/guzzle: ^6.2|^7.0.1|^7.2
- illuminate/console: ^6.0|^7.0|^8.0|^9.0
- illuminate/contracts: ^6.0|^7.0|^8.0|^9.0
- illuminate/database: ^6.0|^7.0|^8.0|^9.0
- illuminate/queue: ^6.0|7.0|^8.0|^9.0
- twig/twig: ^3.0
Requires (Dev)
- mockery/mockery: ~1.3.3|^1.4.2
- phpunit/phpunit: ^8.4|^9.3.3
- dev-master
- v3.5.1
- v3.5.0
- v3.4.0
- v3.3.0
- v3.2.0
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.0
- v1.1.1
- v1.1.0
- v1.0.0
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.0
- dev-ethanknowlton3819/sc-36782/open-source-use-github-actions-for-php-packages
- dev-guzzle5
- dev-fixed-test-for-guzzle5
- dev-jlaswell/ch1191/as-a-developer-i-would-like-a-command-in
- dev-OP-437-trim-whitespace-commit-file
- dev-OP-433
This package is auto-updated.
Last update: 2024-09-21 01:44:53 UTC
README
PHP Healthz
带有内置Laravel支持的PHP应用健康检查。
轻松了解您应用程序的健康状况!为负载均衡器或您自己的理智实现健康检查端点。附带可选UI和预配置的检查,您可以使用,并可扩展以添加自定义健康检查到堆栈中。
设置
$ composer require generationtux/healthz
Laravel < 5.4
(以下内容与Lumen兼容,存在一些差异)
添加将注册默认健康检查和路由的服务提供者
// config/app.php 'providers' => [ Illuminate..., Gentux\Healthz\Support\HealthzServiceProvider::class, ]
您应该能够访问 /healthz/ui
来查看默认的Laravel健康检查,或者运行 php artisan healthz
来获得CLI视图。
为了向UI页面添加基本认证,设置环境变量 HEALTHZ_USERNAME
和 HEALTHZ_PASSWORD
。即使UI有基本认证,简化版的 /healthz
端点也将始终可用,以响应负载均衡器和其他自动检查的请求。
为了自定义健康检查,只需在您的应用程序服务提供者(可能是 app/Providers/AppServiceProvider.php
)中注册 Gentux\Healthz\Healthz
来构建自定义Healthz实例。
use Gentux\Healthz\Healthz; use Illuminate\Support\ServiceProvider; use Gentux\Healthz\Checks\General\EnvHealthCheck; use Gentux\Healthz\Checks\Laravel\DatabaseHealthCheck; class AppServiceProvider extends ServiceProvider { public function register() { $this->app->bind(Healthz::class, function () { $env = new EnvHealthCheck(); $db = new DatabaseHealthCheck(); $db->setConnection("non-default"); return new Healthz([$env, $db]); }); } }
通用PHP
构建健康检查实例
<?php use Gentux\Healthz\Healthz; use Gentux\Healthz\Checks\General\MemcachedHealthCheck; $memcached = (new MemcachedHealthCheck())->addServer("127.0.0.1"); $healthz = new Healthz([$memcached]);
运行检查并查看结果
// @var $results Gentux\Healthz\ResultStack $results = $healthz->run(); if ($results->hasFailures()) { // oh no } if ($results->hasWarnings()) { // hmm } foreach ($results->all() as $result) { // @var $result Gentux\Healthz\HealthResult if ($result->passed() || $result->warned() || $result->failed()) { echo "it did one of those things at least"; } echo "{$result->title()}: {$result->status()} ({$result->description()})"; }
获取UI视图
$html = $healthz->html();
检查配置
HTTP
创建一个新的Guzzle请求并将其传递给HTTP健康检查的构造函数。
use GuzzleHTTP\PSR7\Request; use Gentux\Healthz\Checks\General\HttpHealthCheck; $request = new Request("GET", "http://example.com"); $httpCheck = new HttpHealthCheck($request);
您可以传递预期的响应状态码(默认为 200
),以及Guzzle客户端选项。
$httpCheck = new HttpHealthCheck($request, 204, [ "base_url" => "http://example.com", ]);
Memcached
创建一个新的Memcached健康检查并使用 addServer
和 setOptions
方法。
use Gentux\Healthz\Checks\General\MemcachedHealthCheck; $memcachedCheck = new MemcachedHealthCheck(); $memcachedCheck->addServer($server, $port = 11211, $weight = 0); $memcachedCheck->setOptions([]);
有关选项信息,请参阅 Memcached setOptions。
调试
设置环境变量以检查应用程序是否在调试模式下运行。如果此检查失败,则发出警告。
use Gentux\Healthz\Checks\General\DebugHealthCheck; $debugCheck = new DebugHealthCheck("APP_DEBUG");
在这种情况下,如果 APP_DEBUG
== 'true'
,则此检查将发出警告。
环境
提供一个环境变量名称来检查应用程序的环境。如果找到提供的env名称,则检查将始终成功并简单地输出名称。如果没有设置环境变量,则检查将发出警告。
use Gentux\Healthz\Checks\General\EnvHealthCheck; $envCheck = new EnvHealthCheck("APP_ENV");
数据库(Laravel)
此将使用Laravel内置的数据库服务来验证连接性。您可以选择设置要使用的连接名称(如果没有提供,则使用默认值)。
use Gentux\Healthz\Checks\Laravel\DatabaseHealthCheck; $dbCheck = new DatabaseHealthCheck(); $dbCheck->setConnection("my_conn"); // optional
队列(Laravel)
队列健康检查目前支持 sync
和 sqs
队列。您可以设置要使用的队列名称(如果没有指定,则使用默认值)。
use Gentux\Healthz\Checks\Laravel\QueueHealthCheck; $queueCheck = new QueueHealthCheck(); $queueCheck->setName("my_queue"); // optional
自定义检查
注意:检查可能有三种状态之一(success
、warning
或failure
)。成功和警告的组合以及整个堆栈将被视为成功。然而,任何单个失败都将使整个堆栈被视为失败。
要创建自定义健康检查,您应该扩展Gentux\Healthz\HealthCheck
并实现一个抽象方法run()
。
<?php use Gentux\Healthz\HealthCheck; class MyCustomCheck extends HealthCheck { /** @var string Optionally set a title, otherwise the class name will be used */ protected $title = ""; /** @var string Optionally set a description, just to provide more info on the UI */ protected $description = ""; public function run() { // any exception that is thrown will consider the check unhealthy } }
如果没有抛出异常,则假定检查已成功。否则,异常的消息将被用作失败检查的status
。
public function run() { throw new Exception('Heres why the check failed.'); }
如果您希望检查显示warning
而不是完全失败,请抛出一个Gentux\Healthz\Exceptions\HealthWarningException
实例。
use Gentux\Healthz\Exceptions\HealthWarningException; public function run() { throw new HealthWarningException("The check didn't fail, but here ye be warned."); }
贡献
您需要什么
- docker & docker-compose
- 此存储库的分支
启动开发环境
docker-compose up -d
进入容器
docker-compose exec app bash
Composer安装
composer install
运行测试
./vendor/bin/phpunit
最后
修改您的代码,并在此更改周围添加任何必要的测试。然后向generationtux存储库提交一个pull request。