instana / instana-php-opentracing
Instana Opentracing 客户端
Requires
- php: ^7.1
- ext-json: *
- opentracing/opentracing: ^1@beta
- paragonie/random_compat: <9.99
Requires (Dev)
- phake/phake: ^3.0
- phpunit/phpunit: ^6
Suggests
- ext-posix: To be able to retrieve the process id more efficiently
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
特此授予任何人获得此软件及其相关文档文件(以下简称“软件”)的副本(以下简称“许可”)的自由,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供副本的个人做此类事情,前提是遵守以下条件:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类责任是基于合同、侵权或其他原因,也不论此类责任是否源于、因或与软件或软件的使用或其他交易有关。