cbednarski / pulse
PHP的健康检查框架
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2020-01-24 14:56:40 UTC
README
Pulse 允许您轻松为应用程序编写健康检查,并显示一个简单、汇总的报告,以便您快速诊断应用程序是否出现故障(或是否可以责怪其他人)。您还可以使用 nagios、zabbix 等工具监控您的健康检查。
[] (https://travis-ci.org/cbednarski/pulse)
等等,什么是健康检查?
健康检查是测试系统健康和与其他服务连接性的好方法。例如,您可以验证与 memcache 或 mysql 的连接,您的应用程序是否可以读取/写入特定文件,或者第三方服务的 API 密钥是否仍然有效。
安装
您可以使用 composer 将其安装到您的项目中。在您的项目根目录中创建一个 composer.json
文件,并添加以下内容
{ "require": { "php": ">=5.3.0", "cbednarski/Pulse": "1.0.*" } }
运行 composer install
,包含 vendor/autoload.php
,然后您就可以开始了!
示例用法
关键检查
默认情况下,健康检查是关键的,这意味着健康检查页面将返回 503 状态代码。使用这些检查以查看系统何时出现关键故障。关键检查必须返回布尔值 true
或 false
。使用 add()
添加它们,或者更明确地使用 addCritical()
。
以下是一个检查与 memcache 连接的 healthcheck.php
实现示例
$pulse = new cbednarski\Pulse\Pulse(); $pulse->add("Check that config file is readable", function(){ return is_readable('/path/to/your/config/file'); }); include '/path/to/your/config/file'; $pulse->addCritical("Check memcache connectivity", function() use ($config) { $memcache = new Memcache(); if(!$memcache->connect($config['memcache_host'], $config['memcache_port'])){ return false; } $key = 'healthcheck_test_key' $msg = 'memcache is working'; $memcache->set($key, $msg); return $memcache->get($key) === $msg; });
警告
对于非关键检查,您可以使用警告,即使它们失败,您也会得到状态 200。使用这些检查以查看应用程序何时经历服务降级但仍可用。警告检查必须返回布尔值 true
或 false
。
$pulse->addWarning("Verify connectivity to youtube", function() { $youtube = new YoutubeClient(); return $youtube->isUp(); });
信息
如果您想传递非布尔值的信息数据,可以使用 addInfo()
。
$pulse->addInfo("Today is", function() { return date('l'); }); $pulse->check();
响应规范
Pulse 可以通过命令行运行,通过浏览器访问,或与 CURL 等工具一起使用。
Pulse 自动检测您是从浏览器、命令行还是 CURLy 接口运行的,并根据需要以颜色盲友好的 HTML、JSON 或纯文本格式响应。
状态代码
当所有测试通过时,Pulse会以200
状态码响应。如果某个测试失败,Pulse会响应503
。您可以通过curl查看这些响应。
$ curl -i http://example.com/healthcheck.php
JSON格式
要启用JSON格式,您需要发送Accept: application/json
。例如:
$ curl -H "Accept: application/json" http://example.com/healthcheck.php
示例
您可以在healthcheck-sample.php
中查看一些非常基本的健康检查示例。如果您有PHP 5.4或更高版本,运行make dev
将加载此示例,您可以观看其实际效果并与之互动。
脉冲是否与X兼容?
是的。Pulse被设计成独立且非常简单,因此不需要您使用任何特定的框架。如果您选择,您可以包含其他内容,如yml解析器等,但我们建议不要在其之上包含完整的框架栈。如果由于某些原因框架加载失败,您的健康检查将不会显示,这意味着它们对于诊断您遇到的问题没有用。
这不会暴露我的应用信息吗?
有可能。您可能不希望将健康检查结果显示给公众。相反,您可以选择将某些IP列入白名单。