关于 Docker 容器的监控,google cAdvisor 是个很好的工具,但是它默认只显示实时数据,不储存历史数据。为了存储和显示历史数据、自定义展示图,可以把将cAdvisor与InfluxDB、Grafana 集成起来。

需要的镜像:

tutum/influxdb

google/cadvisor

grafana/grafana

安装:有8台mesos-slave,都需要运行一个cAdvisor docker实例对docker进行监控,然后需要运行一个InfluxDB docker实例存储cAdvisor 产生的数据,然后运行一个Grafana docker实例将InfluxDB数据库里面的数据取出来展示到图上面。

部署 InfluxDB

  • InfluxDB只需要一个实例;
  • UI 通过 marathon-lb 的虚拟主机发布;
  • 数据端口 8086 通过 servicePort 发布到 marathon-lb所在的slaves;
  • servicePort需要设置为固定值,比如:28086,以便于cAdvisor和Grafana连接;
  • 数据目录 /data 映射到 nfs共享目录;
{
"id": "/influxdb",
"cmd": null,
"cpus": 0.3,
"mem": 1024,
"disk": 0,
"instances": 1,
"acceptedResourceRoles": [],
"container": {
"type": "DOCKER",
"volumes": [
{
"containerPath": "/etc/localtime",
"hostPath": "/etc/localtime",
"mode": "RO"
},
{
"containerPath": "/data",
"hostPath": "/home/nfs/InfluxDB",
"mode": "RW"
}
],
"docker": {
"image": "10.80.163.110:5000/influxdb",
"network": "BRIDGE",
"portMappings": [
{
"containerPort": 8083,
"hostPort": 0,
"servicePort": 10010,
"protocol": "tcp",
"labels": {}
},
{
"containerPort": 8086,
"hostPort": 0,
"servicePort": 28086,
"protocol": "tcp",
"labels": {}
}
],
"privileged": false,
"parameters": [],
"forcePullImage": false
}
},
"labels": {
"HAPROXY_0_VHOST": "influxdb.osp.cloud",
"HAPROXY_GROUP": "external"
},
"portDefinitions": [
{
"port": 10010,
"protocol": "tcp",
"name": "default",
"labels": {}
},
{
"port": 28086,
"protocol": "tcp",
"labels": {}
}
]
}

  

创建监控数据库

打开 http://influxdb.osp.cloud设置 Host 和 Port 分别为http://influxdb.osp.cloud 和 28086。

为每个mesos slave创建一个单独的数据库,分别为:cadvisor112, cadvisor113, ...

部署 cAdvisor

  • 每个mesos slave都要部署一个实例;
  • UI 通过marathon-lb的虚拟主机发布;
  • 设置 storage_drive 为 influxdb;
{
"id": "/cadvisor112",
"cmd": null,
"cpus": 0.1,
"mem": 256,
"disk": 0,
"instances": 1,
"constraints": [
[
"hostname",
"CLUSTER",
"10.80.163.112"
]
],
"acceptedResourceRoles": [
"*"
],
"container": {
"type": "DOCKER",
"volumes": [
{
"containerPath": "/etc/localtime",
"hostPath": "/etc/localtime",
"mode": "RO"
},
{
"containerPath": "/rootfs",
"hostPath": "/",
"mode": "RO"
},
{
"containerPath": "/var/run",
"hostPath": "/var/run",
"mode": "RW"
},
{
"containerPath": "/sys",
"hostPath": "/sys",
"mode": "RO"
},
{
"containerPath": "/var/lib/docker",
"hostPath": "/var/lib/docker",
"mode": "RO"
},
{
"containerPath": "/cgroup",
"hostPath": "/cgroup",
"mode": "RO"
}
],
"docker": {
"image": "10.80.163.110:5000/cadvisor",
"network": "BRIDGE",
"portMappings": [
{
"containerPort": 8080,
"hostPort": 0,
"servicePort": 10011,
"protocol": "tcp",
"labels": {}
}
],
"privileged": false,
"parameters": [],
"forcePullImage": false
}
},
"labels": {
"HAPROXY_0_VHOST": "cadvisor112.zyyt.osp.cloud",
"HAPROXY_GROUP": "external"
},
"portDefinitions": [
{
"port": 10011,
"protocol": "tcp",
"name": "default",
"labels": {}
}
],
"args": [
"-storage_driver",
"influxdb",
"-storage_driver_host",
"influxdb.osp.cloud:28086",
"-storage_driver_db",
"cadvisor112"
]
}

  

查看cAdvisor UI:

http://cadvisor112.zyyt.osp.cloud

部署 Grafana

  • 只需要部署一个实例;
  • UI 通过 marathon-lb 虚拟主机发布;
  • 数据目录 /var/lib/grafana 映射到 nfs 共享存储,以便于持久化存储;
{
"id": "/grafana",
"cmd": null,
"cpus": 0.3,
"mem": 512,
"disk": 0,
"instances": 1,
"constraints": [
[
"hostname",
"CLUSTER",
"10.80.163.112"
]
],
"acceptedResourceRoles": [
"*"
],
"container": {
"type": "DOCKER",
"volumes": [
{
"containerPath": "/etc/localtime",
"hostPath": "/etc/localtime",
"mode": "RO"
},
{
"containerPath": "/var/lib/grafana",
"hostPath": "/home/nfs/GrafanaData",
"mode": "RW"
}
],
"docker": {
"image": "10.80.163.110:5000/grafana:2.0.2",
"network": "BRIDGE",
"portMappings": [
{
"containerPort": 3000,
"hostPort": 0,
"servicePort": 10012,
"protocol": "tcp",
"labels": {}
}
],
"privileged": false,
"parameters": [],
"forcePullImage": false
}
},
"labels": {
"HAPROXY_0_VHOST": "grafana.zyyt.osp.cloud",
"HAPROXY_GROUP": "external"
},
"portDefinitions": [
{
"port": 10012,
"protocol": "tcp",
"name": "default",
"labels": {}
}
]
}

创建数据分析图

打开 Grafana UI:

http://grafana.zyyt.osp.cloud

设置数据源:

  • 类型:InfluxDB
  • URL:http://influxdb.osp.cloud:28086
  • Access:direct
  • Database:选择一个slave的数据库,如:cadvisor112

创建graph:

效果图:

参考: http://www.mamicode.com/info-detail-1393800.html

在Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控的更多相关文章

  1. 7、Docker监控方案(cAdvisor+InfluxDB+Grafana)

    一.组件介绍 我们采用现在比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控. 1.cAdvisor(数据采集) 开源软件cAdvisor(Container Adv ...

  2. docker容器监控:cadvisor+influxdb+grafana

    cadvisor+influxdb+grafana可以实现容器信息获取.存储.显示等容器监控功能,是目前流行的docker监控开源方案. 方案介绍 cadvisor Google开源的用于监控基础设施 ...

  3. (原)ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers

    ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers(运行在主机上) 适用于类ubuntu系统.amd64. 1. in ...

  4. docker监控方案实践(cadvisor+influxdb+grafana)

    一.概要 1.1 背景 虚拟化技术如今已经非常热门,如果你不知道什么是虚拟化,那你应该了解虚拟机.虚拟化技术如同虚拟机一样,用于将某些硬件通过软件方式实现"复制",虚拟出" ...

  5. jmeter+influxdb+grafana性能测试监控

    背景: 话说Jmeter原生的监控确实太丑了,听大佬们在讨论Jmeter+InfluxDb+Grafana的监控,于是,为了有一个漂亮的测试报告,就手动开始进行部署. 安装步骤: 1.influxdb ...

  6. influxDB1.6版安装与配置(windows环境)、Jmeter+influxDB+Grafana性能监控

    influxDB1.6版安装与配置(windows环境).Jmeter+influxDB+Grafana性能监控 来源:https://blog.csdn.net/SwTesting/article/ ...

  7. cAdvisor+InfluxDB+Grafana 监控Docker

    容器的监控方案其实有很多,有docker自身的docker stats命令.有Scout.有Data Dog等等,本文主要和大家分享一下比较经典的容器开源监控方案组合:cAdvisor+InfluxD ...

  8. 使用cAdvisor+Influxdb+Grafana监控系统

      今天准备开始研究研究当前非常流行的Grafana+Influxdb监控系统,两者都是非常轻量级的应用但是功能却异常强大,可以说Grafana在作图显示方面真的毫不逊色与Cacti. 组件介绍 cA ...

  9. influxdb + Grafana可视化监控平台

    在centos6.5上influxdb + Grafana监控平台配置: 1.RedHat and CentOS users can install the latest stable version ...

随机推荐

  1. Oracle中给用户赋予debug权限

    通过可视化工具(如PL/SQL Developer.Oracle SQL Developer)调试Oracle的存储过程时,如果遇到如下错误信息:...ORA-01031: insufficient ...

  2. ios button标记

    在写项目的时候,for循环创建多个button,在需要设置背景图片和,需要标记所选中的button的需求, 在这里提供两种方法: 一: 1:把for循环创建的button全部装到一个新建的数组中,把他 ...

  3. Spring学习笔记--构造器注入

    之前讲到的名为"duke"的bean有一个私有成员变量beanBags代表这个杂技师bean的一次性能够抛出的最多的数量,Juggler有一个构造函数,构造函数的第一个参数(这里只 ...

  4. ubuntu下Eclipse创建Django项目

    (注:部分过程可能需要FQ) Eclipse版本:Mars.x 点击help->Eclipse Marketplace,搜索“PyDev”并下载安装. 然后选择window->prefer ...

  5. 硝烟中的Scrum和XP-我们如何实施Scrum 12)发布计划 13)组合XP

    12 怎样制定发布计划, 处理固定价格的合同 一次只计划一个sprint的事情会显得提前量不足, 提前做计划是个好习惯; 尤其是签了固定价格的合同之后, 不得不预先计划好, 防止无法按期交付的危险情况 ...

  6. centos7 ubuntu14 添加sudo 权限 ,禁用每次sudo 需要输入密码

    安装完centos7后,默认没有启用sudo,首先应该是对sudo进行设置.sudo的作用就是使当前非root用户在使用没有权限的命令 时,直接在命令前加入sudo,在输入自己当前用户的密码就可以完成 ...

  7. Splay模板 1.0

    struct Splay{ int rt,sz; ///根节点,树节点总数 ],fa[N];///值,左右儿子,父亲 void spin(int t){ ///旋转操作 ]==t; son[x][y] ...

  8. sencha touch 入门系列 (一)sencha touch 简介

    参考链接:http://mobile.51cto.com/others-278381.htm Sencha touch 是基于JavaScript编写的Ajax框架ExtJS,将现有的ExtJS整合J ...

  9. DNS隧道通信的检测

    DNS隧道通信的检测 DNS 隧道通信 DNS 隧道通信是C&C常用的通信方式,一般常用的编码方式Base64,Binary编码,NetBios编码等,Hex编码等.且请求的Type一般都是t ...

  10. git add -A和git add . 的区别

    git add -A和 git add . git add -u在功能上看似很相近,但还是有所差别. git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容 ...