平台监控

尽管Deis自身没有内置的监控系统,Deis的组件和部署的应用一样完全运行与Docker的容器之内。这意味着监控工具和服务只要支持Docker就应该也支持Deis。一些支持Docker集成的工具和监控服务详细列在下面。

工具

cadvisor

Google的Container Advisor (cadvisor) 运行在Docker的容器之内,可以显示一个主机上所有的容器的内存和CPU的使用情况。要运行cAdvisor:

  1. sudo docker run \
  2. --volume=/:/rootfs:ro \
  3. --volume=/var/run:/var/run:rw \
  4. --volume=/sys:/sys:ro \
  5. --volume=/var/lib/docker/:/var/lib/docker:ro \
  6. --publish=8080:8080 \
  7. --detach=true \
  8. --name=cadvisor \
  9. google/cadvisor:latest

要在集群的所有主机上运行cAdvisor,你可以提交并启动一个fleet服务:

  1. [Unit]
  2. Description=Google Container Advisor
  3. Requires=docker.socket
  4. After=docker.socket
  5. [Service]
  6. ExecStartPre=/bin/sh -c "docker history google/cadvisor:latest >/dev/null || docker pull google/cadvisor:latest"
  7. ExecStart=/usr/bin/docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --name=cadvisor google/cadvisor:latest
  8. [Install]
  9. WantedBy=multi-user.target
  10. [X-Fleet]
  11. Global=true

将此文件保存为cadvisor.service。用fleetctl load cadvisor.service && fleetctl start cadvisor.service加载并启动服务。

每个主机上的web界面可以通过8080端口访问到。

除了在每个CoreOS主机上开始cAdvisor的服务,另外有一个项目来自Google Cloud Platform团队的叫做heapster,这貌似是个支持集群的cAdvisor。

监控服务

下面是少部分的广为人知的支持Docker集成的监控服务。欢迎对本文档进行增加。

Datadog

Datadog云监控服务提供了一个监控代理可以运行在主机上然后提供所有Docker容器的数据(这功能特点与cAdvisor的实现很相似)。请参见此博客查看详情。Datalog为Docker的代理可以在一个主机上这样运行:

  1. docker run -d --privileged --name dd-agent -h `hostname` -v /var/run/docker.sock:/var/run/docker.sock -v /proc/mounts:/host/proc/mounts:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e API_KEY=YOUR_REAL_API_KEY datadog/docker-dd-agent

请将YOUR_REAL_API_KEY替换成你的Datadog的API key。

要在整个集群上运行Datadog,你可以提交然后启动一个fleet服务(再次提醒别忘了更换YOUR_REAL_API_KEY):

  1. [Unit]
  2. Description=Datadog
  3. Requires=docker.socket
  4. After=docker.socket
  5. [Service]
  6. ExecStartPre=/bin/sh -c "docker history datadog/docker-dd-agent:latest >/dev/null || docker pull datadog/docker-dd-agent:latest"
  7. ExecStart=/usr/bin/docker run --privileged --name dd-agent -h %H -v /var/run/docker.sock:/var/run/docker.sock -v /proc/mounts:/host/proc/mounts:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e API_KEY=YOUR_REAL_API_KEY datadog/docker-dd-agent
  8. [Install]
  9. WantedBy=multi-user.target
  10. [X-Fleet]
  11. Global=true

将此文件保存为cadvisor.service。用fleetctl load cadvisor.service && fleetctl start cadvisor.service加载并启动服务。

很快你就能在Datadog的控制面板上看到来自你deis集群上的数据了。

New Relic

New Relic的监控服务代理会运行在CoreOS的主机上然后将数据发送到New Relic。

然而,跟Datadog不一样的是,运行在主机上的代理不会发送带个容器的数据除非那些容器在创建的时候安装了他们自己的代理。

Deis社区的Johannes Würbach为New Relic开发了一个fleet服务,可以在他的newrelic-sysmond仓库里看到。