非常教程

Docker 17参考手册

引擎: 管理员指南 | Engine: Admin Guide

使用Prometheus(引擎)收集Docker指标 | Collect Docker metrics with Prometheus (Engine)

Prometheus 是一个开源系统监控和警报工具包。您可以将 Docker 配置为 Prometheus 目标。本主题向您展示如何配置 Docker,设置 Prometheus 作为 Docker 容器运行,并使用 Prometheus 监控 Docker 实例。

警告:可用指标和这些指标的名称正在积极开发中,并可能随时更改。

目前,您只能监控 Docker 本身。您目前无法使用 Docker 目标监控您的应用程序。

配置 Docker

要将 Docker 守护程序配置为 Prometheus 目标,您需要指定metrics-address。最好的方法是通过daemon.json默认情况下位于以下位置之一的。如果该文件不存在,请创建它。

  • Linux/etc/docker/daemon.json
  • Windows 服务器C:\ProgramData\docker\config\daemon.json
  • 适用于 Mac 的 Docker for Mac / Docker:单击工具栏中的 Docker 图标,选择 Preferences,然后选择 Daemon。点击高级

如果该文件当前为空,请粘贴以下内容:

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

如果文件不为空,请添加这两个键,确保生成的文件是有效的JSON。请注意,除了最后一行,每行都以逗号(,)结尾。

保存文件,或者在 Docker for Mac 或 Docker for Windows 的情况下,保存配置。重新启动 Docker。

Docker 现在在端口9323上公开 Prometheus 兼容指标。

配置并运行 Prometheus

在此示例中,Prometheus 在同一主机上作为 Docker 容器运行。

复制以下配置文件之一并将其保存到/tmp/prometheus.yml。这是一个普通存储 Prometheus 配置文件,除了在文件底部添加 Docker 作业定义之外。Docker for Mac 和 Docker for Windows 需要稍微不同的配置。

  • Docker for Linux
  • Docker for Mac 或 Windows
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
      monitor: 'codelab-monitor'

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first.rules"
  # - "second.rules"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'docker'
         # metrics_path defaults to '/metrics'
         # scheme defaults to 'http'.

    static_configs:
      - targets: ['localhost:9323']
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
      monitor: 'codelab-monitor'

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first.rules"
  # - "second.rules"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'docker'
         # metrics_path defaults to '/metrics'
         # scheme defaults to 'http'.

    static_configs:
      - targets: ['192.168.65.1:9323']

接下来,使用此配置启动单个副本 Prometheus 服务。

$ docker service create --replicas 1 --name my-prometheus \
    --mount type=bind,source=/tmp/prometheus.yml,destination=/etc/prometheus/prometheus.yml \
    --publish 9090:9090/tcp \
    prom/prometheus

验证 Docker 目标是否在http:// localhost:9090 / targets / 中列出。

使用Prometheus(引擎)收集Docker指标  |  Collect Docker metrics with Prometheus (Engine)

如果您使用 Docker for Mac 或 Docker for Windows,则无法直接访问端点 URL。

使用 Prometheus

创建一个图。点击 Prometheus UI 中的图表链接。从“ 执行”按钮右侧的组合框中选择一个度量标准,然后单击“ 执行”。以下屏幕截图显示了图表engine_daemon_network_actions_seconds_count

使用Prometheus(引擎)收集Docker指标  |  Collect Docker metrics with Prometheus (Engine)

上图显示了一个相当闲置的 Docker 实例。如果您正在运行活动工作负载,则您的图形可能看起来不同

为了使图表更有趣,可以通过启动一项服务来创建一些网络操作,其中包括10个任务,它们可以不停地 ping Docker(您可以将 ping 目标更改为任何您喜欢的任务):

$ docker service create \
  --replicas 10 \
  --name ping_service \
  alpine ping docker.com

等待几分钟(默认刮取间隔为15秒)并重新加载图形。

使用Prometheus(引擎)收集Docker指标  |  Collect Docker metrics with Prometheus (Engine)

准备就绪后,请停止并删除ping_service服务,以免无缘无故地淹没有ping的主机。

$ docker service remove ping_service

等待几分钟,你会发现图表回落到闲置状态。

下一步

  • 阅读 Prometheus 文档
  • 设置一些警报

prometheus, metrics

引擎: 管理员指南 | Engine: Admin Guide相关

1.Amazon CloudWatch记录日志记录驱动程序(引擎) | Amazon CloudWatch logs logging driver (Engine)
2. 绑定挂载 | Bind mounts (Engine)
3.配置和运行Docker(引擎) | Configuring and running Docker (Engine)
4.配置日志记录驱动程序 | Configuring logging drivers (Engine)
5.使用systemd控制和配置Docker(引擎) | Control and configure Docker with systemd (Engine)
6.ETW日志记录驱动程序(引擎) | ETW logging driver (Engine)
7.流利的日志驱动程序(引擎) | Fluentd logging driver (Engine)
8.格式化命令和日志输出(引擎) | Format command and log output (Engine)
9.Google Cloud日志记录驱动程序(引擎) | Google Cloud logging driver (Engine)
10.Graylog扩展格式(GELF)日志记录驱动程序(引擎) | Graylog Extended Format (GELF) logging driver (Engine)
11.Journald日志记录驱动程序(引擎) | Journald logging driver (Engine)
12.JSON文件日志记录驱动程序(引擎) | JSON File logging driver (Engine)
13.在守护进程停机期间保持容器处于活动状态(引擎) | Keep containers alive during daemon downtime (Engine)
14.限制容器的资源(引擎) | Limit a container's resources (Engine)
15.通过大使容器链接(引擎) | Link via an ambassador container (Engine)
16.记录驱动程序的日志标记(引擎) | Log tags for logging driver (Engine)
17.Logentries日志驱动程序(引擎) | Logentries logging driver (Engine)
18.PowerShell DSC用法(引擎) | PowerShell DSC usage (Engine)
19.修剪未使用的Docker对象(引擎) | Prune unused Docker objects (Engine)
20.在容器中运行多个服务(引擎) | Run multiple services in a container (Engine)
21.运行时指标(引擎) | Runtime metrics (Engine)
22.Splunk日志记录驱动程序(引擎) | Splunk logging driver (Engine)
23.自动启动容器(引擎) | Start containers automatically (Engine)
24.存储概述(引擎) | Storage overview (Engine)
25.Syslog日志记录驱动程序(引擎) | Syslog logging driver (Engine)
26.tmpfs mounts
27.解决卷问题(引擎) | Troubleshoot volume problems (Engine)
28.使用日志驱动程序插件(引擎) | Use a logging driver plugin (Engine)
29.使用Ansible(引擎) | Using Ansible (Engine)
30.使用Chef(引擎) | Using Chef (Engine)
31.使用Puppet(引擎) | Using Puppet (Engine)
32.查看容器的日志(引擎) | View a container's logs (Engine)
33.Volumes (Engine)
Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06