instana/instana-php-opentracing

Instana Opentracing 客户端

v2.1.0 2019-09-20 12:27 UTC

This package is auto-updated.

Last update: 2024-08-28 17:15:49 UTC


README

一个用于与 Instana 一起使用的 OpenTracing 接口的 PHP 实现。

要求

需要在一个配置的 InstanaSpanFlusher 端点运行 Instana 代理。默认情况下,跟踪数据将被发送到主机上任何网络接口的 PHP 传感器监听的端口 16816。如果机器上没有运行 PHP 传感器来接收跟踪数据,请考虑使用替代的 REST SDK 端点。为此,请按照以下方式设置全局跟踪器:

use Instana\OpenTracing\InstanaTracer;

\OpenTracing\GlobalTracer::set(InstanaTracer::restSdk());

使用 restSdk 跟踪器将跟踪数据发送到代理上监听端口 42699 的端点。

从 v2.0.0 版本开始,所需的最低 PHP 版本是 PHP 5.4。
1.x 分支仅在 PHP 7+ 上运行。

1.x 版本和 2.x 版本之间的 BC 兼容性中断

方法 InstanaSpanType::entry()InstanaSpanType::local()InstanaSpanType::exit() 已重命名为 InstanaSpanType::entryType()InstanaSpanType::localType()InstanaSpanType::exitType() 以提供与 PHP < 7 的兼容性。在您的代码中直接调用这些方法需要重命名。

安装

此库可在 Packagist 上找到。

composer req "instana/instana-php-opentracing:^2.0"

您可以在 composer.json 中手动包含它,如下所示:

{
    "require": {
        "instana/instana-php-opentracing": "^2.0"
    }
}

由于 OpenTracing v1.0.0 仍处于测试版,您还需要设置:

{
    "config": {
        "prefer-stable": true,
        "minimum-stability": "beta",
    }
}

否则,Composer 将拒绝安装此包。

示例用法

use Instana\OpenTracing\InstanaTracer;

\OpenTracing\GlobalTracer::set(InstanaTracer::getDefault());

$parentScope = \OpenTracing\GlobalTracer::get()->startActiveSpan('one');
$parentSpan = $parentScope->getSpan();
$parentSpan->setTag(\Instana\OpenTracing\InstanaTags\SERVICE, "example-service");
$parentSpan->setTag(\OpenTracing\Tags\COMPONENT, 'PHP simple example app');
$parentSpan->setTag(\OpenTracing\Tags\SPAN_KIND, \OpenTracing\Tags\SPAN_KIND_RPC_SERVER);
$parentSpan->setTag(\OpenTracing\Tags\PEER_HOSTNAME, 'localhost');
$parentSpan->setTag(\OpenTracing\Tags\HTTP_URL, '/php/simple/one');
$parentSpan->setTag(\Instana\OpenTracing\InstanaTags\HTTP_PATH_TPL, '/php/simple/{id}');
$parentSpan->setTag(\OpenTracing\Tags\HTTP_METHOD, 'GET');
$parentSpan->setTag(\OpenTracing\Tags\HTTP_STATUS_CODE, 200);
$parentSpan->log(['event' => 'bootstrap', 'type' => 'kernel.load', 'waiter.millis' => 1500]);

$childScope = \OpenTracing\GlobalTracer::get()->startActiveSpan('two');
$childSpan = $childScope->getSpan();
$childSpan->setTag(\OpenTracing\Tags\SPAN_KIND, \OpenTracing\Tags\SPAN_KIND_RPC_CLIENT);
$childSpan->setTag(\OpenTracing\Tags\PEER_HOSTNAME, 'localhost');
$childSpan->setTag(\OpenTracing\Tags\HTTP_URL, '/php/simple/two');
$childSpan->setTag(\OpenTracing\Tags\HTTP_METHOD, 'POST');
$childSpan->setTag(\OpenTracing\Tags\HTTP_STATUS_CODE, 204);

$childScope->close();
$parentScope->close();

\OpenTracing\GlobalTracer::get()->flush();

容器化应用程序

当对容器化应用程序进行仪表化时,您需要提供 endpointURI 以指向运行容器的代理,例如,对于将跟踪数据发送到 PHP 传感器,您需要使用以下方式实例化跟踪器:

use Instana\OpenTracing\InstanaTracer;

InstanaTracer::phpSensor('tcp://172.17.0.1:16816');

对于将跟踪数据发送到 REST SDK,您需要使用以下方式实例化跟踪器:

use Instana\OpenTracing\InstanaTracer;

InstanaTracer::restSdk('http://172.17.0.1:42699/com.instana.plugin.generic.trace');

调整 URI 以使用允许容器与主机通信的任何 URI。

许可证

本库遵循 MIT 许可证

版权所有 2018 Instana, Inc

特此授予任何人获得此软件及其相关文档文件(以下简称“软件”)的副本(以下简称“许可”)的自由,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供副本的个人做此类事情,前提是遵守以下条件:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类责任是基于合同、侵权或其他原因,也不论此类责任是否源于、因或与软件或软件的使用或其他交易有关。