zoukankan      html  css  js  c++  java
  • 在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

  • 相关阅读:
    【微信公众平台开发】公布动态新闻好帮手UEditor富文本
    Software Development and Newton's Laws of Motion
    组队赛第二场:字符串哈希+DP
    [ACM] hdu 4418 Time travel (高斯消元求期望)
    解决IE11无法下载文件的问题
    LeetCode :: Binary Tree Zigzag Level Order Traversal [tree, BFS]
    用Stack实现对多线程的管理范例
    同事的Excel中的图片突然不能选择
    HDU 1272 小希的迷宫 并查集
    将Datagridview中的数据导出至Excel中
  • 原文地址:https://www.cnblogs.com/zhangmingcheng/p/6710609.html
Copyright © 2011-2022 走看看