Containerd

Supported OS Linux Windows

Overview

This check monitors the Containerd container runtime.

Setup

Installation

Containerd is a core Datadog Agent check. You must configure Containerd in both datadog.yaml and containerd.d/conf.yaml.

In datadog.yaml, configure your cri_socket_path for the Agent to query Containerd. In containerd.d/conf.yaml, configure the check instance settings (such as filters) for the events.

Installation on containers

If you are using the Agent in a container, setting the DD_CRI_SOCKET_PATH environment variable to the Containerd socket automatically enables the Containerd integration with the default configuration.

For example, to install the integration on Kubernetes, edit your DaemonSet to mount the Containerd socket from the host node to the Agent container and set the DD_CRI_SOCKET_PATH environment variable to the DaemonSet mount path:

Linux container
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: datadog-agent
spec:
  template:
    spec:
      containers:
        - name: datadog-agent
          # ...
          env:
            - name: DD_CRI_SOCKET_PATH
              value: /var/run/containerd/containerd.sock
          volumeMounts:
            - name: containerdsocket
              mountPath: /var/run/containerd/containerd.sock
            - mountPath: /host/var/run
              name: var-run
              readOnly: true
          volumes:
            - hostPath:
                path: /var/run/containerd/containerd.sock
              name: containerdsocket
            - hostPath:
                path: /var/run
              name: var-run

Note: The /var/run directory must be mounted from the host to run the integration without issues.

Windows container
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: datadog-agent
spec:
  template:
    spec:
      containers:
        - name: datadog-agent
          # ...
          env:
            - name: DD_CRI_SOCKET_PATH
              value: \\\\.\\pipe\\containerd-containerd
          volumes:
            - hostPath:
                path: \\\\.\\pipe\\containerd-containerd
              name: containerdsocket
          volumeMounts:
            - name: containerdsocket
              mountPath: \\\\.\\pipe\\containerd-containerd

Configuration

  1. Edit the containerd.d/conf.yaml file, in the conf.d/ folder at the root of your Agent’s configuration directory to start collecting your Containerd performance data. See the sample containerd.d/conf.yaml for all available configuration options.

  2. Restart the Agent

Validation

Run the Agent’s status subcommand and look for containerd under the Checks section.

Data Collected

Metrics

containerd.cpu.system
(gauge)
The total CPU time
Shown as nanosecond
containerd.cpu.throttled.periods
(gauge)
The total CPU throttled time (Linux only)
Shown as nanosecond
containerd.cpu.total
(gauge)
The total CPU time
Shown as nanosecond
containerd.cpu.user
(gauge)
The total user CPU time
Shown as nanosecond
containerd.image.pull
(count)
The number of image pull requests
Shown as byte
containerd.image.size
(gauge)
The size of the container image
Shown as byte
containerd.mem.cache
(gauge)
The cache amount used (Linux only)
Shown as byte
containerd.mem.commit
(gauge)
The committed memory (Windows only)
Shown as byte
containerd.mem.commit_peak
(gauge)
The peak committed memory (Windows only)
Shown as byte
containerd.mem.current.failcnt
(gauge)
The usage failcnt (Linux only)
containerd.mem.current.limit
(gauge)
The memory limit (Linux only)
Shown as byte
containerd.mem.current.usage
(gauge)
The memory usage (Linux only)
Shown as byte
containerd.mem.kernel.usage
(gauge)
The kernel usage (Linux only)
Shown as byte
containerd.mem.kernel_tcp.failcnt
(gauge)
The kerneltcp failcnt (Linux only)
containerd.mem.kernel_tcp.limit
(gauge)
The kerneltcp limit (Linux only)
Shown as byte
containerd.mem.kernel_tcp.max
(gauge)
The kerneltcp maximum usage (Linux only)
Shown as byte
containerd.mem.kernel_tcp.usage
(gauge)
The kerneltcp usage (Linux only)
Shown as byte
containerd.mem.rss
(gauge)
The rss amount used (Linux only)
Shown as byte
containerd.mem.swap.usage
(gauge)
The swap usage (Linux only)
Shown as byte
containerd.mem.working_set
(gauge)
The container working set usage
Shown as byte
containerd.proc.open_fds
(gauge)
The number of open file descriptors
Shown as file
containerd.storage.read
(rate)
Read bytes (Windows only)
Shown as byte
containerd.storage.write
(rate)
Write bytes (Windows only)
Shown as byte
containerd.uptime
(gauge)
Time since the container was started
Shown as second

This integration works on Linux and Windows, but some metrics are OS dependent. Look at metadata.csv for the list of OS dependent metrics.

Events

The Containerd check can collect events. Use filters to select the relevant events. See the sample containerd.d/conf.yaml to have more details.

Service Checks

containerd.health
Returns CRITICAL if the Agent check is unable to connect to the monitored containerd socket. Returns OK otherwise.
Statuses: ok, critical

Troubleshooting

Need help? Contact Datadog support.