cbednarski/pulse

此包已被废弃且不再维护。未建议替代包。

PHP的健康检查框架

v1.0.0 2013-12-03 07:27 UTC

This package is not auto-updated.

Last update: 2020-01-24 14:56:40 UTC


README

Pulse 允许您轻松为应用程序编写健康检查,并显示一个简单、汇总的报告,以便您快速诊断应用程序是否出现故障(或是否可以责怪其他人)。您还可以使用 nagioszabbix 等工具监控您的健康检查。

[构建状态] (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 状态代码。使用这些检查以查看系统何时出现关键故障。关键检查必须返回布尔值 truefalse。使用 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。使用这些检查以查看应用程序何时经历服务降级但仍可用。警告检查必须返回布尔值 truefalse

$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列入白名单