Jaeger - Tracing with gRPC service

要使用 Jaeger 追蹤 gRPC service 程式,可先加入 Jaeger 與 OpenTracing.Contrib.Grpc 套件。

1
2
3
4
5
...
<PackageReference Include="Jaeger" Version="0.3.6" />
<PackageReference Include="OpenTracing.Contrib.Grpc" Version="0.2.0" />
</ItemGroup>
...


修改 Startup.ConfigureServices,加入 Jaeger tracer、註冊 GlobalTracer、設定 gRPC 攔截器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...
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 這些細部的資訊。