Server IP : 195.201.23.43 / Your IP : 3.148.109.137 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/containerd/ |
Upload File : |
# Tracing containerd supports OpenTelemetry tracing since v1.6.0. Tracing currently targets only gRPC calls. ## Sending traces from containerd daemon By configuring `io.containerd.tracing.processor.v1.otlp` plugin. containerd daemon can send traces to the specified OpenTelemetry endpoint. ```toml version = 2 [plugins."io.containerd.tracing.processor.v1.otlp"] endpoint = "http://localhost:4318" ``` The following options are supported. - `endpoint`: The address of a server that receives [OpenTelemetry Protocol](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.8.0/specification/protocol/otlp.md). - `protocol`: OpenTelemetry supports multiple protocols. The default value is "http/protobuf". "grpc" is also supported. - `insecure`: Disable transport security when the protocol is "grpc". The default is false. "http/protobuf" always uses the schema provided by the endpoint and the value of this setting being ignored. The sampling ratio and the service name on the traces could be configured by `io.containerd.internal.v1.tracing` plugin. ```toml version = 2 [plugins."io.containerd.internal.v1.tracing"] sampling_ratio = 1.0 service_name = "containerd" ``` ## Sending traces from containerd client By configuring its underlying gRPC client, containerd's Go client can send traces to an OpenTelemetry endpoint. Note that the Go client's methods and gRPC calls are not 1:1. Single method call would issue multiple gRPC calls. ```go func clientWithTrace() error { exp, err := otlptracehttp.New(ctx, otlptracehttp.WithEndpoint("localhost:4318"), otlptracehttp.WithInsecure(), ) if err != nil { return err } res, err := resource.New(ctx, resource.WithAttributes( semconv.ServiceNameKey.String("CLIENT NAME"), )) if err != nil { return err } provider := trace.NewTracerProvider( trace.WithSampler(trace.AlwaysSample()), trace.WithSpanProcessor(trace.NewSimpleSpanProcessor(exp)), trace.WithResource(res), ) otel.SetTracerProvider(provider) otel.SetTextMapPropagator(propagation.TraceContext{}) ... dialOpts := []grpc.DialOption{ grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithStreamInterceptor(otelgrpc.StreamClientInterceptor()), grpc.WithUnaryInterceptor(otelgrpc.UnaryClientInterceptor()), } client, ctx, cancel, err := commands.NewClient(context, containerd.WithDialOpts(dialOpts)) if err != nil { return err } defer cancel() ctx, span := tracing.StartSpan(ctx, "OPERATION NAME") defer span.End() ... }Private