Jaeger - Tracing with gRPC service
要使用 Jaeger 追蹤 gRPC service 程式,可先加入 Jaeger 與 OpenTracing.Contrib.Grpc 套件。
...
<PackageReference Include="Jaeger" Version="0.3.6" />
<PackageReference Include="OpenTracing.Contrib.Grpc" Version="0.2.0" />
</ItemGroup>
...
修改 Startup.ConfigureServices,加入 Jaeger tracer、註冊 GlobalTracer、設定 gRPC 攔截器。
...
services.AddGrpc(options =>
{
var serviceName = AppDomain.CurrentDomain.FriendlyName;
var tracer = new Tracer.Builder(serviceName)
.WithSampler(new ConstSampler(true))
.Build();
GlobalTracer.Register(tracer);
services.AddSingleton<ITracer>(tracer);
var interceptors = options.Interceptors;
interceptors.Add<ServerTracingInterceptor>(tracer);
...
});
...
實際運行程式。
選取 Service 與 Operator 下去查詢。
可看到找到的 Trace,上半部可看到時間與耗時的分佈,下半部就是簡易的列表,可看出 Trace 名稱、識別碼、是什麼時間點觸發的、耗時多久、有多少 Span。
點選感興趣的 Trace,會進入 Trace 細部資訊頁面,會將 Trace 及其組成的 Span 以圖形的方式呈現,便於找到相對耗時的操作。
展開 Span 可看到 Span 的 Tag 這些細部的資訊。