php实现监控
PHP 实现监控的方法
使用内置函数记录脚本执行情况
PHP 提供了内置函数如 memory_get_usage() 和 microtime() 来监控内存使用和执行时间。通过记录脚本开始和结束时的内存和时间,可以计算资源消耗。
$startMemory = memory_get_usage();
$startTime = microtime(true);
// 业务逻辑代码
$endTime = microtime(true);
$endMemory = memory_get_usage();
echo "Execution time: " . ($endTime - $startTime) . " seconds\n";
echo "Memory used: " . ($endMemory - $startMemory) . " bytes\n";
集成第三方监控工具
可以使用 New Relic、Datadog 或 Prometheus 等工具来监控 PHP 应用。这些工具提供更全面的监控功能,包括性能指标、错误追踪和报警机制。
安装 New Relic 的 PHP 扩展后,配置文件会自动收集应用性能数据并发送到 New Relic 平台。
; php.ini 配置示例
extension=newrelic.so
newrelic.license = "YOUR_LICENSE_KEY"
newrelic.appname = "Your Application Name"
日志记录与错误监控
通过 PHP 的 error_log 函数或 Monolog 库记录日志,结合 Sentry 或 Bugsnag 实现错误监控。Monolog 支持将日志发送到文件、数据库或第三方服务。
require 'vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$log = new Logger('app');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
$log->warning('This is a warning message');
自定义健康检查接口
创建一个简单的 HTTP 接口用于健康检查,返回应用状态和数据库连接情况。结合 cron 任务或外部监控服务定期调用该接口。
header('Content-Type: application/json');
try {
$db = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
echo json_encode(['status' => 'OK', 'database' => 'connected']);
} catch (PDOException $e) {
echo json_encode(['status' => 'ERROR', 'database' => 'disconnected']);
}
使用 Prometheus 和 Grafana 搭建监控系统
通过 Prometheus 客户端库暴露 PHP 应用的指标,Grafana 可视化数据。适合需要自定义指标的场景。

require 'vendor/autoload.php';
use Prometheus\CollectorRegistry;
use Prometheus\Storage\APC;
$registry = new CollectorRegistry(new APC());
$counter = $registry->registerCounter('app', 'requests_total', 'Total requests');
$counter->inc();
header('Content-Type: text/plain');
echo $registry->getMetricFamilySamples();






