监控Docker容器– Docker统计信息,cAdvisor,通用控制平面

有多种方法可以监视Docker容器。 该博客将介绍一些简单易用的选项:

  1. docker stats命令
  2. Docker远程API
  3. 顾问
    1. 普罗米修斯
    2. InfluxDB
  4. Docker通用控制平面

让我们看看它们中的每一个。

我们将使用Couchbase服务器来收集监视数据。

让我们以以下方式启动服务器:

docker run -d -p 8091-8093:8091-8093 -p 11210:11210 --name couchbase arungupta/couchbase

github.com/arun-gupta/docker-images/tree/master/couchbase中解释了arungupta arungupta/couchbase图像。 它执行:

  • 设置索引和数据服务的内存
  • 为Couchbase服务器配置索引,数据和查询服务
  • 设置用户名和密码凭证

现在让我们收集监视数据。

码头工人统计

docker stats显示以下容器资源使用情况统计docker stats的实时流:

  • CPU使用率
  • 内存使用率,限制,使用率百分比
  • 网络I / O
  • 磁盘I / O

统计信息每秒更新一次。

这是一个示例输出:

CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O               BLOCK I/O
4827f0139b1f        10.94%              706.2 MB / 1.045 GB   67.61%              299.7 kB / 2.473 MB   456 MB / 327.3 MB

默认情况下,此命令显示所有正在运行的容器的统计信息。 可以指定容器名称或ID的列表,以空格分隔,以将流限制为正在运行的容器的子集。

例如,仅可将Couchbase容器的统计信息视为:

docker stats couchbase

其中couchbase是容器名称。

输出看起来像:

CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O
couchbase           12.50%              708.2 MB / 1.045 GB   67.80%              301 kB / 2.477 MB   456 MB / 327.6 MB

可以指定--no-stream选项,其中仅显示第一个快照,并且不传输结果。

Docker Logentries容器可用于收集此数据。

Docker远程API

Docker守护程序提供了远程REST API。 客户端使用此API与引擎进行通信。 该API也可以由其他工具(例如curlChrome Postman REST Client)调用。 如果要在OSX Mavericks上使用Docker Machine创建Docker守护程序,那么使此API正常工作会有些棘手。

如果您使用的是Mac,请按照Enable Docker Remote API中的说明进行操作,以确保curl可以调用此REST API。

提供有关容器统计信息的API是/containers/{id}/stats/containers/{name}/stats.

然后可以获得有关该容器的更多统计信息:

~ > curl https://192.168.99.100:2376/containers/42d1414883af/stats --cert $DOCKER_CERT_PATH/cert2.p12 --pass mypass --key $DOCKER_CERT_PATH/key.pem --cacert $DOCKER_CERT_PATH/ca.pem

显示以下结果(格式化):

{
    "read": "2016-02-07T13:26:56.142981314Z",
    "precpu_stats": {
        "cpu_usage": {
            "total_usage": 0,
            "percpu_usage": null,
            "usage_in_kernelmode": 0,
            "usage_in_usermode": 0
        },
        "system_cpu_usage": 0,
        "throttling_data": {
            "periods": 0,
            "throttled_periods": 0,
            "throttled_time": 0
        }
    },
    "cpu_stats": {
        "cpu_usage": {
            "total_usage": 242581854769,
            "percpu_usage": [242581854769],
            "usage_in_kernelmode": 33910000000,
            "usage_in_usermode": 123040000000
        },
        "system_cpu_usage": 3367860000000,
        "throttling_data": {
            "periods": 0,
            "throttled_periods": 0,
            "throttled_time": 0
        }
    },
    "memory_stats": {
        "usage": 693821440,
        "max_usage": 818733056,
        "stats": {
            "active_anon": 282038272,
            "active_file": 28938240,
            "cache": 82534400,
            "hierarchical_memory_limit": 9223372036854771712,
            "hierarchical_memsw_limit": 9223372036854771712,
            "inactive_anon": 329543680,
            "inactive_file": 53284864,
            "mapped_file": 26558464,
            "pgfault": 809513,
            "pgmajfault": 2559,
            "pgpgin": 1015608,
            "pgpgout": 940757,
            "rss": 611270656,
            "rss_huge": 136314880,
            "swap": 249049088,
            "total_active_anon": 282038272,
            "total_active_file": 28938240,
            "total_cache": 82534400,
            "total_inactive_anon": 329543680,
            "total_inactive_file": 53284864,
            "total_mapped_file": 26558464,
            "total_pgfault": 809513,
            "total_pgmajfault": 2559,
            "total_pgpgin": 1015608,
            "total_pgpgout": 940757,
            "total_rss": 611270656,
            "total_rss_huge": 136314880,
            "total_swap": 249049088,
            "total_unevictable": 0,
            "total_writeback": 0,
            "unevictable": 0,
            "writeback": 0
        },
        "failcnt": 0,
        "limit": 1044574208
    },
    "blkio_stats": {
        "io_service_bytes_recursive": [{
                "major": 8,
                "minor": 0,
                "op": "Read",
                "value": 301649920
            }, {
                "major": 8,
                "minor": 0,
                "op": "Write",
                "value": 248315904
            }, {
                "major": 8,
                "minor": 0,
                "op": "Sync",
                "value": 201003008
            }, {
                "major": 8,
                "minor": 0,
                "op": "Async",
                "value": 348962816
            }, {
                "major": 8,
                "minor": 0,
                "op": "Total",
                "value": 549965824
            }],
        "io_serviced_recursive": [{
                "major": 8,
                "minor": 0,
                "op": "Read",
                "value": 41771
            }, {
                "major": 8,
                "minor": 0,
                "op": "Write",
                "value": 72796
            }, {
                "major": 8,
                "minor": 0,
                "op": "Sync",
                "value": 61246
            }, {
                "major": 8,
                "minor": 0,
                "op": "Async",
                "value": 53321
            }, {
                "major": 8,
                "minor": 0,
                "op": "Total",
                "value": 114567
            }],
        "io_queue_recursive": [],
        "io_service_time_recursive": [],
        "io_wait_time_recursive": [],
        "io_merged_recursive": [],
        "io_time_recursive": [],
        "sectors_recursive": []
    },
    "pids_stats": {},
    "networks": {
        "eth0": {
            "rx_bytes": 40192,
            "rx_packets": 285,
            "rx_errors": 0,
            "rx_dropped": 0,
            "tx_bytes": 222138,
            "tx_packets": 150,
            "tx_errors": 0,
            "tx_dropped": 0
        }
    }
}

有关内存,磁盘和网络的更多详细信息。 每秒推送一组新的指标。

顾问

cAdvisor或Container Advisor提供主机和容器指标。 它是一个正在运行的守护程序,用于收集,聚合,处理和导出有关正在运行的容器的信息。

让我们启动cAdvisor容器:

docker run -d --name=cadvisor -p 8080:8080 --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro google/cadvisor:latest

cAdvisor仪表板仅显示最近60秒的数据。 但是,支持多个后端,例如PrometheusInfluxDB ,可以长期存储,检索和分析。

使用Couchbase查询工具连接Couchbase服务器:

~ > docker run -it --link couchbase:db arungupta/couchbase cbq --engine http://db:8093
Couchbase query shell connected to http://db:8093/ . Type Ctrl-D to exit.
cbq>

调用N1QL查询

cbq> select * from `travel-sample` limit 1;
{
"requestID": "7af2d1b1-c37e-4c75-a913-cfaa99dcabdd",
"signature": {
"*": "*"
},
"results": [
{
"travel-sample": {
"callsign": "MILE-AIR",
"country": "United States",
"iata": "Q5",
"icao": "MLA",
"id": 10,
"name": "40-Mile Air",
"type": "airline"
}
}
],
"status": "success",
"metrics": {
"elapsedTime": "10.292951ms",
"executionTime": "10.232921ms",
"resultCount": 1,
"resultSize": 300
}
}

cAdvisor仅存储一分钟的数据,这是仪表板的捕获内容:

cadvisor-cpu-用法-1024x701

和备忘录用法:

cadvisor-总内存使用量-1024x429

有很多工具可以使用cAdvisor生成的数据并将其显示在漂亮的仪表板上。

有关更多详细信息,请访问github.com/google/cadvisor/tree/master/docs

Docker通用控制平面

Docker Universal Control Plane(DUCP)允许从防火墙内部管理和部署Dockerized分布式应用程序。 它与LDAP / AD等关键系统集成以管理用户,并为IT运营团队提供部署和管理界面。 RBAC,与Docker Trusted Registry的SSO集成,简单易用的Web UI是一些关键功能。 阅读产品概述以获取完整的功能集。

使用Docker Machine进行Docker通用控制计划是在本地计算机上体验此操作的最简单方法。 这些说明非常详细,可以直接使用。 这是部署Couchbase映像后的一些映像。

DUCP安装由DUCP控制器和一个或多个主机组成。 这些是在Docker Swarm集群中配置的。 然后在这些集群上启动容器:

ducp图像1024x397

端口映射很容易定义:

ducp端口映射1024x459

容器运行后,可以看到监视状态:

ducp-stats-1024x593

最后是漂亮的仪表板:

ducp-dashboard-1024x724

提供了一个客户端软件包 ,该软件包将有关Docker Swarm集群的信息显示为:

Containers: 10
 Running: 10
 Paused: 0
 Stopped: 0
Images: 15
Server Version: swarm/1.1.3
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 2
 node1: 192.168.99.101:12376
  └ Status: Healthy
  └ Containers: 7
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 2.004 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=4.1.19-boot2docker, operatingsystem=Boot2Docker 1.10.3 (TCL 6.4.1); master : 625117e - Thu Mar 10 22:09:02 UTC 2016, provider=virtualbox, storagedriver=aufs
  └ Error: (none)
  └ UpdatedAt: 2016-04-09T00:12:53Z
 node2: 192.168.99.102:12376
  └ Status: Healthy
  └ Containers: 3
  └ Reserved CPUs: 0 / 1
  └ Reserved Memory: 0 B / 2.004 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=4.1.19-boot2docker, operatingsystem=Boot2Docker 1.10.3 (TCL 6.4.1); master : 625117e - Thu Mar 10 22:09:02 UTC 2016, provider=virtualbox, storagedriver=aufs
  └ Error: (none)
  └ UpdatedAt: 2016-04-09T00:12:48Z
Cluster Managers: 1
 192.168.99.101: Healthy
  └ Orca Controller: https://192.168.99.101:443
  └ Swarm Manager: tcp://192.168.99.101:3376
  └ KV: etcd://192.168.99.101:12379
Plugins: 
 Volume: 
 Network: 
Kernel Version: 4.1.19-boot2docker
Operating System: linux
Architecture: amd64
CPUs: 2
Total Memory: 4.008 GiB
Name: ucp-controller-node1
ID: 6LTO:GVZJ:2M6Z:DONM:ZAKR:2JIL:ZWJG:KY7R:G3EL:AS2Y:X22F:RXM3
Labels:
 com.docker.ucp.license_key=XXXXXXXXXXXXXXXXXXXXXXXX
 com.docker.ucp.license_max_engines=1
 com.docker.ucp.license_expires=XXXXXXXXXXXXXXXXXXXXXXXX

有很多工具可提供监视数据:

docker statsDocker Remote API当然是最简单的监视数据快照。 从那里开始,它才变得有趣!

翻译自: https://www.javacodegeeks.com/2016/04/monitoring-docker-containers-docker-stats-cadvisor-universal-control-plane.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值