在Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控

关于 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

时间: 2024-11-02 21:03:47

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

[经验交流] 在 Mesos Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控

关于 Docker 容器的监控,google cAdvisor 是个很好的工具,但是它默认只显示实时数据,不储存历史数据.为了存储和显示历史数据.自定义展示图,可以把将cAdvisor与InfluxDB.Grafana 集成起来,国外的专家 Brian Christner 写了一篇文章”How to setup Docker Monitoring“,描述了部署方法. Brian 的方法是手动运行 docker run 命令进行部署,为了能在 Mesos Marathon 平台上自动部署,我对他的

docker:十分钟构建容器监控系统cAdvisor+InfluxDB+Grafana

1.概念 cAdvisor:用于数据采集InfluxDB:用于数据存储Grafana:用于数据展示 1.1 cAdvisor 它是Google用来监测单节点的资源信息的监控工具.Cadvisor提供了一目了然的单节点多容器的资源监控功能.Google的Kubernetes中也缺省地将其作为单节点的资源监控工具,各个节点缺省会被安装上Cadvisor.总结起来主要两点: 展示 Host 和容器两个层次的监控数据. 展示历史变化数据. ?由于 cAdvisor 提供的操作界面略显简陋,而且需要在不同

docker swarm cAdvisor+InfluxDB+Grafana 监控

docker swarm集群的监控方案很多,cAdvisor+InfluxDB+Grafana方案功能强大灵活.最重要的是这个方案开源.免费.易用,是不花钱版监控方案.参考文档:https://botleg.com/stories/monitoring-docker-swarm-with-cadvisor-influxdb-and-grafana/ 组件说明 cAdvisor:数据收集模块,需要部署在集群中的每一个节点上,当然前提条件是节点接受task.在本次实验中,共有三个节点,因为其中一个节

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

ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers(运行在主机上) 适用于类ubuntu系统.amd64. 1. influxdb: (以后考虑把influxdb换成prometheus) https://influxdb.com/docs/v0.8/introduction/installation.html#ubuntu-debian(只能先选择deb安装的方式了..没办法 代码编译方式是不行了 go发展尚未成

jmeter+influxdb+grafana性能测试监控

背景: 话说Jmeter原生的监控确实太丑了,听大佬们在讨论Jmeter+InfluxDb+Grafana的监控,于是,为了有一个漂亮的测试报告,就手动开始进行部署. 安装步骤: 1.influxdb下载安装: [[email protected] ~]# wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.0.x86_64.rpm --no-check-certificate [[email protected] ~]#

prometheus+grafana+docker 监控tomcat jvm

说明:基于环境mesos+marathon+docker+prometheus+grafana监控tomcat一.配置环境(1)dockerfile from tomcat COPY tomcat-users.xml /usr/local/tomcat/conf/ COPY server.xml /usr/local/tomcat/conf/ COPY context.xml /usr/local/tomcat/webapps/manager/META-INF/ COPY catalina.sh

Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台

完成一套精准,漂亮图形化监控系统从这里开始第一步 Telegraf是收集和报告指标和数据的代理 它是TICK堆栈的一部分,是一个用于收集和报告指标的插件驱动的服务器代理.Telegraf拥有插件或集成功能,可直接从运行的系统获取各种指标,从第三方API获取指标,甚至通过StatsD和Kafka消费者服务来收听指标.它还具有输出插件,可将指标发送到各种其他数据存储,服务和消息队列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ

Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台之应用数据分析

本节将引入完美的granafa仪表板,在上节的基础上,并提出自己的一些监控数据的总结和看法 你可以有一个类似于这个的Dashboard,会引入监控Zimbra协作 本节环境采用的是centos7系统,配置跟上节介绍的一样,但是Telegraf是企业级监控加入很多可靠的监控插件,非常有用的一些参数,随之也给自 己的监控数据分析带来了复杂度. Telegraf:它负责收集我们通过配置文件传递的所有数据,Telegraf收集我们配置的输出结果,例如CPU / RAM / LOAD或Nginx,Mari

14、Docker监控方案(Prometheus+cAdvisor+Grafana)

上一篇文章我们已经学习了比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控.这节课来学习Prometheus+cAdvisor+Grafana组合. cAdvisor是专门用来采集数据的工具,也是google公司的一款开源产品,Grafana则是前端展示,支持多种数据源,定制非常灵活.而prometheus则作为数据源. 整体架构图如下: 一.prometheus 1.Prometheus介绍 Prometheus(普罗米修斯)是一个最初在SoundCloud上