タグをキーと値のペアの形式で追加して、トレースを他の Datadog 製品と関連付けることができます。これにより、特定のスパンに関する詳細が提供されます。タグは、単一スパンにすることも、グローバルにすべてのスパンに追加することもできます。
注: トレースメタデータはタグを介して追加されますが、タグはすでに Datadog 全体で特定の意味を持っています。
Datadog UI は、タグを使用してスパンレベルのメタデータを設定します。これらのタグの完全なリストは、Datadog および OpenTracing API にあります。
カスタムタグは、グローバルトレーサーからアクティブなスパンを取得し、setTag
を使用してタグを設定することにより、自動インスツルメンテーション用に設定できます。
import io.opentracing.Tracer;
import io.opentracing.util.GlobalTracer;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet
class ServletImpl extends AbstractHttpServlet {
@Override
void doGet(HttpServletRequest req, HttpServletResponse resp) {
final Span span = GlobalTracer.get().activeSpan();
if (span != null) {
span.setTag("customer.id", req.getParameter("customer_id"));
span.setTag("<タグキー>", "<タグ値>");
}
// サーブレット実装
}
}
set_tag
を呼び出すことにより、タグをスパンに直接追加します。たとえば、次のルートハンドラの場合:
from ddtrace import tracer
@app.route('/customer/<int:customer_id>')
def handle_customer(customer_id):
with tracer.trace('web.request') as span:
span.set_tag('customer.id', customer_id)
span.set_tag('<タグキー>', '<タグ値>')
現在のスパンをコンテキストから取得して、タグを設定できます。こうすることで、インスツルメンテーションによってスパンが開始された場合、スパンを取得してカスタムタグを追加できます。注: スパンが存在しない場合、None
が返されます。
from ddtrace import tracer
@app.route('/customer/<int:customer_id>')
@tracer.wrap()
def handle_customer(customer_id):
# コンテキスト内のアクティブなスパンを取得し、そこに tracer.wrap() で配置します
current_span = tracer.current_span()
if current_span:
current_span.set_tag('customer.id', customer_id)
current_span.set_tag('<タグキー>', '<タグ値>')
#set_tag
を呼び出して、Datadog::Span
オブジェクトにタグを直接追加します。
# Sinatra エンドポイントの例。
# Datadog がリクエストをトレースします。
get '/posts' do
Datadog.tracer.trace('web.request') do |span|
span.set_tag('http.url', request.path)
span.set_tag('<タグキー>', '<タグ値>')
end
end
コード内の任意のメソッドから現在アクティブなスパンにアクセスします。注: メソッドが呼び出され、現在アクティブなスパンがない場合、active_span
は nil
です。
# 例: アクティブなスパンにタグを追加する
current_span = Datadog.tracer.active_span
current_span.set_tag('<タグキー>', '<タグ値>') unless current_span.nil?
SetTag
を呼び出して、Span
インターフェイスにタグを直接追加します。
package main
import (
"log"
"net/http"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
func handler(w http.ResponseWriter, r *http.Request) {
// /posts URL でウェブリクエストのスパンを作成します。
span := tracer.StartSpan("web.request", tracer.ResourceName("/posts"))
defer span.Finish()
// タグを設定
span.SetTag("http.url", r.URL.Path)
span.SetTag("<タグキー>", "<タグ値>")
}
func main() {
tracer.Start(tracer.WithServiceName("<サービス名>"))
defer tracer.Stop()
http.HandleFunc("/posts", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Datadog のインテグレーションでは、Context
タイプを使用して、現在アクティブなスパンを伝播します。
Context
にアタッチされたスパンタグを追加したい場合、SpanFromContext
関数を呼び出します。
package main
import (
"net/http"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
func handler(w http.ResponseWriter, r *http.Request) {
// Go Context にアタッチされたウェブリクエストのスパンを取得します。
if span, ok := tracer.SpanFromContext(r.Context()); ok {
// タグを設定
span.SetTag("http.url", r.URL.Path)
}
}
setTag
または addTags
を呼び出して、スパンオブジェクトにタグを直接追加します。
// Express エンドポイントの例。
// Datadog がリクエストをトレースします。
app.get('/posts', (req, res) => {
const span = tracer.startSpan('web.request')
span.setTag('http.url', req.url)
span.addTags({'http.method': req.method})
span.addTags({'<タグキー>': '<タグ値>'})
})
コード内の任意のメソッドから現在アクティブなスパンにアクセスします。注: メソッドが呼び出され、現在アクティブなスパンがない場合、tracer.scope().active()
は null
を返します。
// 例: アクティブなスパンにタグを追加する
const span = tracer.scope().active()
span.setTag('<タグキー>', '<タグ値>')
Span.SetTag()
を呼び出して、Datadog.Trace.Span
オブジェクトにタグを直接追加します。例:
using Datadog.Trace;
// グローバルトレーサーを介してアクティブなスコープにアクセスします(null を返すことができます)
var scope = Tracer.Instance.ActiveScope;
// スパンにタグを追加します
scope.Span.SetTag("<タグキー>", "<タグ値>");
注: アクティブスパンがない場合、Datadog.Trace.Tracer.Instance.ActiveScope
は null
を返します。
システムプロパティ Ddd.trace.global.tags
でトレーサーを構成して、すべてのスパンにタグを追加します。
java -javaagent:<DD-JAVA-エージェントパス>.jar \
-Ddd.trace.global.tags=env:dev,<タグキー>:<タグ値> \
-jar <アプリケーションパス>.jar
tracer.set_tags
メソッドでトレーサーを構成して、すべての[スパン]スパンにタグを追加します。
from ddtrace import tracer
tracer.set_tags({ 'env': 'dev' })
tags
オプションでトレーサーを構成して、すべてのスパンにタグを追加します。
Datadog.configure do |c|
c.tracer tags: { 'env' => 'dev' }
end
詳細については、API に関するドキュメントを参照してください。
tags
オプションでトレーサーを構成して、すべてのスパンにタグを追加します。
package main
import "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
func main() {
tracer.Start(
tracer.WithGlobalTag("datacenter", "us-1"),
tracer.WithGlobalTag("env", "dev"),
)
defer tracer.Stop()
}
tags
パラメーターでトレーサーを構成して、すべてのスパンにタグを追加します。
const tracer = require('dd-trace').init({
tags: {
env: 'dev',
'<タグキー>': '<タグ値>'
}
})
トレーサーを構成して、生成されたすべてのスパンにタグを追加します。.NET 構成セクションに示すように、構成を設定するにはいくつかの方法があります。
この例では、環境変数を設定します。
DD_TRACE_GLOBAL_TAGS=key1:value1,key2:value2
このページ