「Docker」- 监控

  CREATED BY JENKINSBOT

需要监控 Docker 的哪些指标?

1)Service:Docker 服务的自生运行状态,资源占用,负载情况
2)Container:容器的 CPU MEM DISK NETWORK

Service

WIP

Container

使用 Docker 自身提供的 Prometheus Metrices 参数

Collect Docker metrics with Prometheus | Docker Documentation

/etc/docker/daemon.json

{
  "metrics-addr" : "127.0.0.1:9323",
  "experimental" : true
}

该方法能够收集服务、容器的总体运行情况,但是无法获取特定容器信息。

使用 cAdvisor 容器收集容器信息

google/cadvisor: Analyzes resource usage and performance characteristics of running containers.
cadvisor/prometheus.md at master · google/cadvisor

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  gcr.io/google-containers/cadvisor:latest

能够收集更多指标,包括每个容器的指标,也包含每个容器的磁盘空间使用(container_fs_*)

但是不包含”挂载到容器的磁盘的“空间的使用情况(我们的特殊场景、特殊需求)

cdewitt/docker-stats-exporter – Docker Hub

https://hub.docker.com/r/cdewitt/docker-stats-exporter

该镜像使用 Docker stats API 将来提供 Prometheus metrics 指标,作为 Prometheus Metrics Exporter 存在。

我们可以基于该项目进行一些改造,以满足我们自己的需要,它基于 Flask 框架。

docker stats

Docker Engine API v1.40 Reference
Can cURL send requests to sockets? – Super User
Runtime metrics | Docker Documentation
docker stats | Docker Documentation