适用于 AWS X-Ray 的基础 PHP 仪表库

v1.4.3 2022-05-12 10:58 UTC

README

Build Status PHP 7.0
Packagist

waylandace\xray

适用于 AWS X-Ray 的基础 PHP 仪表库。它是 https://github.com/patrickkerrigan/php-xray 的分支

在亚马逊发布官方 AWS X-Ray PHP SDK 之前,此库允许您向 PHP 应用程序添加基本仪表,并通过 AWS X-Ray 守护进程报告跟踪。

请注意,此库不提供对流行库的自动仪表化。为了仪表化 SQL 查询、HTTP 请求和其他服务,您需要创建自己的包装器,以适当地开始和结束跟踪段。

安装

推荐使用 Composer 安装此库

$ composer require waylandace/xray ^1.2

使用

开始跟踪

Trace 类代表 AWS X-Ray 跟踪的最顶层,可以作为单例在代码的任何地方轻松访问,包括在框架和依赖注入器初始化之前。

您应该在请求开始时尽早开始跟踪

use Pkerrigan\Xray\Trace;

Trace::getInstance()
    ->setTraceHeader($_SERVER['HTTP_X_AMZN_TRACE_ID'] ?? null)
    ->setName('app.example.com')
    ->setUrl($_SERVER['REQUEST_URI'])
    ->setMethod($_SERVER['REQUEST_METHOD'])
    ->begin(); 

向跟踪添加段

您可以根据需要向跟踪添加任意数量的段,包括嵌套段。要将 SQL 查询添加到跟踪,您将执行以下操作

Trace::getInstance()
    ->getCurrentSegment()
    ->addSubsegment(
        (new SqlSegment())
            ->setName('db.example.com')
            ->setDatabaseType('PostgreSQL')
            ->setQuery($mySanitisedQuery)    // Make sure to remove sensitive data before passing in a query
            ->begin()    
    );
    
    
// Run your query here
    
Trace::getInstance()
    ->getCurrentSegment()
    ->end();
    

getCurrentSegment() 方法将始终返回最近打开的段,允许您根据需要深入嵌套。

向跟踪添加异常

您可以根据需要向跟踪添加任意数量的异常。嵌套异常将被展平并包含在跟踪中。添加异常 不会 设置错误/故障标志。

Trace::getInstance()
    ->getCurrentSegment()
    ->addException($exception)
    ->setError(true);

结束跟踪

在请求结束时,您将想要结束并提交您的跟踪。默认情况下,只支持通过 AWS X-Ray 守护进程提交。

Trace::getInstance()
    ->end()
    ->setResponseCode(http_response_code())
    ->submit(new DaemonSegmentSubmitter());