StackState-Docker Integration

Overview

Get metrics from Docker in real time to:

  • Visualize your containers’ performance.
  • Correlate the performance of containers with the applications running inside them.

Setup

Installation

Host Installation

  1. Ensure Docker is running on the host.
  2. Install the Agent as described in the Agent installation instructions for your host OS.
  3. Add the Agent user to the docker group: usermod -a -G docker sts-agent
  4. Create a docker_daemon.yaml file by copying the example file in the agent conf.d directory. If you have a standard install of Docker on your host, there shouldn’t be anything you need to change to get the integration to work.
  5. To enable other integrations, use docker ps to identify the ports used by the corresponding applications.

Note: docker_daemon has replaced the older docker integration.

Validation

  1. Restart the Agent.
  2. Execute the info command and verify that the integration check has passed. The output of the command should contain a section similar to the following:

    Checks
    ======
    
      [...]
      docker_daemon
      -------------
        - instance #0 [OK]
        - Collected 50 metrics, 0 events & 2 service checks
    

  3. In the application on the Infrastructure List, you should see the host with the blue docker pill next to it indicating that the app is receiving the data correctly.

Data Collected

Metrics

docker.cpu.system
(gauge)
The percent of time the CPU is executing system calls on behalf of processes of this container
shown as percent
docker.cpu.system.95percentile
(gauge)
95th percentile of docker.cpu.system
shown as percent
docker.cpu.system.avg
(gauge)
Average value of docker.cpu.system
shown as percent
docker.cpu.system.count
(rate)
The rate that the value of docker.cpu.system was sampled
shown as sample
docker.cpu.system.max
(gauge)
Max value of docker.cpu.system
shown as percent
docker.cpu.system.median
(gauge)
Median value of docker.cpu.system
shown as percent
docker.cpu.user
(gauge)
The percent of time the CPU is under direct control of processes of this container
shown as percent
docker.cpu.user.95percentile
(gauge)
95th percentile of docker.cpu.user
shown as percent
docker.cpu.user.avg
(gauge)
Average value of docker.cpu.user
shown as percent
docker.cpu.user.count
(rate)
The rate that the value of docker.cpu.user was sampled
shown as sample
docker.cpu.user.max
(gauge)
Max value of docker.cpu.user
shown as percent
docker.cpu.user.median
(gauge)
Median value of docker.cpu.user
shown as percent
docker.cpu.usage
(gauge)
The percent of CPU time obtained by this container
shown as percent
docker.cpu.throttled
(gauge)
Number of times the cgroup has been throttled
shown as
docker.mem.cache
(gauge)
The amount of memory that is being used to cache data from disk (e.g. memory contents that can be associated precisely with a block on a block device)
shown as byte
docker.mem.cache.95percentile
(gauge)
95th percentile value of docker.mem.cache
shown as byte
docker.mem.cache.avg
(gauge)
Average value of docker.mem.cache
shown as byte
docker.mem.cache.count
(rate)
The rate that the value of docker.mem.cache was sampled
shown as sample
docker.mem.cache.max
(gauge)
Max value of docker.mem.cache
shown as byte
docker.mem.cache.median
(gauge)
Median value of docker.mem.cache
shown as byte
docker.mem.rss
(gauge)
The amount of non-cache memory that belongs to the container's processes. Used for stacks, heaps, etc.
shown as byte
docker.mem.rss.95percentile
(gauge)
95th percentile value of docker.mem.rss
shown as byte
docker.mem.rss.avg
(gauge)
Average value of docker.mem.rss
shown as byte
docker.mem.rss.count
(rate)
The rate that the value of docker.mem.rss was sampled
shown as sample
docker.mem.rss.max
(gauge)
Max value of docker.mem.rss
shown as byte
docker.mem.rss.median
(gauge)
Median value of docker.mem.rss
shown as byte
docker.mem.swap
(gauge)
The amount of swap currently used by the container
shown as byte
docker.mem.swap.95percentile
(gauge)
95th percentile value of docker.mem.swap
shown as byte
docker.mem.swap.avg
(gauge)
Average value of docker.mem.swap
shown as byte
docker.mem.swap.count
(rate)
The rate that the value of docker.mem.swap was sampled
shown as sample
docker.mem.swap.max
(gauge)
Max value of docker.mem.swap
shown as byte
docker.mem.swap.median
(gauge)
Median value of docker.mem.swap
shown as byte
docker.container.size_rw
(gauge)
Total size of all the files in the container which have been created or changed by processes running in the container
shown as byte
docker.container.size_rw.95percentile
(gauge)
95th percentile of docker.container.size_rw
shown as byte
docker.container.size_rw.avg
(gauge)
Average value of docker.container.size_rw
shown as byte
docker.container.size_rw.count
(rate)
The rate that the value of docker.container.size_rw was sampled
shown as sample
docker.container.size_rw.max
(gauge)
Max value of docker.container.size_rw
shown as byte
docker.container.size_rw.median
(gauge)
Median value of docker.container.size_rw
shown as byte
docker.container.size_rootfs
(gauge)
Total size of all the files in the container
shown as byte
docker.container.size_rootfs.95percentile
(gauge)
95th percentile of docker.container.size_rootfs
shown as byte
docker.container.size_rootfs.avg
(gauge)
Average value of docker.container.size_rootfs
shown as byte
docker.container.size_rootfs.count
(rate)
The rate that the value of docker.container.size_rw was sampled
shown as sample
docker.container.size_rootfs.max
(gauge)
Max value of docker.container.size_rootfs
shown as byte
docker.container.size_rootfs.median
(gauge)
Median value of docker.container.size_rootfs
shown as byte
docker.containers.running
(gauge)
The number of containers running on this host
shown as
docker.containers.stopped
(gauge)
The number of containers stopped on this host
shown as
docker.images.available
(gauge)
The number of top-level images
shown as
docker.images.intermediate
(gauge)
The number of intermediate images, which are intermediate layers that make up other images
shown as
docker.mem.limit
(gauge)
The memory limit for the container, if set
shown as byte
docker.mem.limit.95percentile
(gauge)
95th percentile of docker.mem.limit. Ordinarily this value will not change
shown as byte
docker.mem.limit.avg
(gauge)
Average value of docker.mem.limit. Ordinarily this value will not change
shown as byte
docker.mem.limit.count
(rate)
The rate that the value of docker.mem.limit was sampled
shown as sample
docker.mem.limit.max
(gauge)
Max value of docker.mem.limit. Ordinarily this value will not change
shown as byte
docker.mem.limit.median
(gauge)
Median value of docker.mem.limit. Ordinarily this value will not change
shown as byte
docker.mem.sw_limit
(gauge)
The swap + memory limit for the container, if set
shown as byte
docker.mem.sw_limit.95percentile
(gauge)
95th percentile of docker.mem.sw_limit. Ordinarily this value will not change
shown as byte
docker.mem.sw_limit.avg
(gauge)
Average value of docker.mem.sw_limit. Ordinarily this value will not change
shown as byte
docker.mem.sw_limit.count
(rate)
The rate that the value of docker.mem.sw_limit was sampled
shown as sample
docker.mem.sw_limit.max
(gauge)
Max value of docker.mem.sw_limit. Ordinarily this value will not change
shown as byte
docker.mem.sw_limit.median
(gauge)
Median value of docker.mem.sw_limit. Ordinarily this value will not change
shown as byte
docker.mem.in_use
(gauge)
The fraction of used memory to available memory, if the limit is set
shown as fraction
docker.mem.in_use.95percentile
(gauge)
95th percentile of docker.mem.in_use
shown as fraction
docker.mem.in_use.avg
(gauge)
Average value of docker.mem.in_use
shown as fraction
docker.mem.in_use.count
(rate)
The rate that the value of docker.mem.in_use was sampled
shown as sample
docker.mem.in_use.max
(gauge)
Max value of docker.container.mem.in_use
shown as fraction
docker.mem.in_use.median
(gauge)
Median value of docker.container.mem.in_use
shown as fraction
docker.mem.sw_in_use
(gauge)
The fraction of used swap + memory to available swap + memory, if the limit is set
shown as fraction
docker.mem.sw_in_use.95percentile
(gauge)
95th percentile of docker.mem.sw_in_use
shown as fraction
docker.mem.sw_in_use.avg
(gauge)
Average value of docker.mem.sw_in_use
shown as fraction
docker.mem.sw_in_use.count
(rate)
The rate that the value of docker.mem.sw_in_use was sampled
shown as sample
docker.mem.sw_in_use.max
(gauge)
Max value of docker.container.mem.sw_in_use
shown as fraction
docker.mem.sw_in_use.median
(gauge)
Median value of docker.container.mem.sw_in_use
shown as fraction
docker.io.read_bytes
(gauge)
Bytes read per second from disk by the processes of the container
shown as byte
docker.io.read_bytes.95percentile
(gauge)
95th percentile of docker.io.read_bytes
shown as byte
docker.io.read_bytes.avg
(gauge)
Average value of docker.io.read_bytes
shown as byte
docker.io.read_bytes.count
(rate)
The rate that the value of docker.io.read_bytes was sampled
shown as sample
docker.io.read_bytes.max
(gauge)
Max value of docker.container.io.read_bytes
shown as byte
docker.io.read_bytes.median
(gauge)
Median value of docker.container.io.read_bytes
shown as byte
docker.io.write_bytes
(gauge)
Bytes written per second to disk by the processes of the container
shown as byte
docker.io.write_bytes.95percentile
(gauge)
95th percentile of docker.io.write_bytes
shown as byte
docker.io.write_bytes.avg
(gauge)
Average value of docker.io.write_bytes
shown as byte
docker.io.write_bytes.count
(rate)
The rate that the value of docker.io.write_bytes was sampled
shown as sample
docker.io.write_bytes.max
(gauge)
Max value of docker.container.io.write_bytes
shown as byte
docker.io.write_bytes.median
(gauge)
Median value of docker.container.io.write_bytes
shown as byte
docker.image.virtual_size
(gauge)
Size of all layers of the image on disk
shown as byte
docker.image.size
(gauge)
Size of all layers of the image on disk
shown as byte
docker.net.bytes_rcvd
(gauge)
Bytes received per second from the network
shown as byte
docker.net.bytes_rcvd.95percentile
(gauge)
95th percentile of docker.net.bytes_rcvd
shown as byte
docker.net.bytes_rcvd.avg
(gauge)
Average value of docker.net.bytes_rcvd
shown as byte
docker.net.bytes_rcvd.count
(rate)
The rate that the value of docker.net.bytes_rcvd was sampled
shown as sample
docker.net.bytes_rcvd.max
(gauge)
Max value of docker.container.net.bytes_rcvd
shown as byte
docker.net.bytes_rcvd.median
(gauge)
Median value of docker.container.net.bytes_rcvd
shown as byte
docker.net.bytes_sent
(gauge)
Bytes sent per second to the network
shown as byte
docker.net.bytes_sent_bytes.95percentile
(gauge)
95th percentile of docker.net.bytes_sent_bytes
shown as byte
docker.net.bytes_sent_bytes.avg
(gauge)
Average value of docker.net.bytes_sent_bytes
shown as byte
docker.net.bytes_sent_bytes.count
(rate)
The rate that the value of docker.net.bytes_sent_bytes was sampled
shown as sample
docker.net.bytes_sent_bytes.max
(gauge)
Max value of docker.container.net.bytes_sent_bytes
shown as byte
docker.net.bytes_sent_bytes.median
(gauge)
Median value of docker.container.net.bytes_sent_bytes
shown as byte
docker.data.used
(gauge)
Storage pool disk space used
shown as byte
docker.data.free
(gauge)
Storage pool disk space free
shown as byte
docker.data.total
(gauge)
Storage pool disk space total
shown as byte
docker.data.percent
(gauge)
The percent of storage pool used
shown as percent
docker.metadata.used
(gauge)
Storage pool metadata space used
shown as byte
docker.metadata.free
(gauge)
Storage pool metadata space free
shown as byte
docker.metadata.total
(gauge)
Storage pool metadata space total
shown as byte
docker.metadata.percent
(gauge)
The percent of storage pool metadata used
shown as percent

Further Reading

Knowledge Base

Compose and the StackState Agent

Compose is a Docker tool that simplifies building applications on Docker by allowing you to define, build and run multiple containers as a single application.