热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Marathon上部署cAdvisor+InfluxDB+GrafanaDocker监控

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

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


推荐阅读
author-avatar
兴桂秀寧29
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有