404

[ Avaa Bypassed ]




Upload:

Command:

botdev@52.15.109.247: ~ $
# Tracing

containerd supports OpenTelemetry tracing since v1.6.0.
Tracing currently targets only gRPC calls.

## Sending traces from containerd deamon

By configuring `io.containerd.tracing.processor.v1.otlp` plugin.
containerd daemon can send traces to the specified OpenTelemetry endpoint.

```toml
[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
[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()
    ...
}
```

Filemanager

Name Type Size Permission Actions
PLUGINS.md.gz File 3.06 KB 0644
README.md.gz File 5.73 KB 0644
RUNC.md File 1.72 KB 0644
SECURITY_AUDIT.pdf.gz File 135.2 KB 0644
changelog.Debian.gz File 1.33 KB 0644
client-opts.md File 3.48 KB 0644
content-flow.md.gz File 6.41 KB 0644
copyright File 49.35 KB 0644
garbage-collection.md.gz File 3.13 KB 0644
getting-started.md.gz File 4.6 KB 0644
hosts.md.gz File 4.19 KB 0644
managed-opt.md.gz File 1.95 KB 0644
namespaces.md File 3.39 KB 0644
ops.md.gz File 3.32 KB 0644
remote-snapshotter.md.gz File 2.11 KB 0644
rootless.md File 3.32 KB 0644
stream_processors.md File 1.54 KB 0644
tracing.md File 2.5 KB 0644