OpenTracing extension for Yii 1
Install Yii extension with composer
composer require websupport/yii-opentracing
Install client library (depends on your tracing system)
composer require jonahgeorge/jaeger-client-php
Default (NoopTracer) configuration without client library
# opentracing component must be preloaded
'preload' => ['opentracing'],
...
'components' => [
'opentracing' => [
'class' => \Websupport\OpenTracing\OpenTracing::class,
],
],
Jaeger client configuration
# opentracing component must be preloaded
'preload' => ['opentracing'],
...
'components' => [
'opentracing' => [
'class' => \Websupport\OpenTracing\JaegerOpenTracing::class,
'agentHost' => 'localhost',
'agentPort' => 5775,
'sampler' => [
'type' => \Jaeger\SAMPLER_TYPE_CONST,
'param' => true,
],
'traceIdHeader' => 'x-trace-id',
'baggageHeaderPrefix' => 'x-ctx-trace-',
],
],
OpenTracing can be enabled in CActiveRecord
using behaviors
.
<?php
use Websupport\OpenTracing\OpenTracingActiveRecordBehavior;
class Model extends CActiveRecord
{
public function behaviors()
{
return [
'OpenTracingActiveRecordBehavior' => [
'class' => OpenTracingActiveRecordBehavior::class,
'opentracingId' => 'opentracing' // string opentracing component name
]
];
}
}
If you are using Sentry to track errors and want to store Sentry Event ID within current trace, you can achieve this in conjunction with websupport/yii-sentry component.
After installing and configuring this component, each trace, where any error occurred will have its error.sentry_id
tag filled with Sentry Event ID.
'components' => [
'opentracing' => [
'class' => \Websupport\OpenTracing\JaegerOpenTracing::class,
'sentryId' => 'sentry' // or name of your yii-sentry component
...
],
'sentry' => [ // yii-sentry component
'class' => \Websupport\YiiSentry\Client::class
...
]
],