docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战

原创 2018年04月17日 19:20:18

      docker swarm集群的监控方案很多,cAdvisor+InfluxDB+Grafana方案功能强大灵活。最重要的是这个方案开源、免费、易用,是不花钱版监控方案。参考文档:https://botleg.com/stories/monitoring-docker-swarm-with-cadvisor-influxdb-and-grafana/

  • 组件说明

  1. cAdvisor:数据收集模块,需要部署在集群中的每一个节点上,当然前提条件是节点接受task。在本次实验中,共有三个节点,因为其中一个节点做过drain,不接受任何task调度,所以最后结果是部署在两个节点上。
  2. InfluxDB:数据存储模块。
  3. Grafana:数据展示模块

  •  环境准备

    docker版本:18.04.0 CE。

    参考https://blog.csdn.net/dkfajsldfsdfsd/article/details/79923218 创建包含三个节点的docker swarm集群。

  • 创建docker compose文件

     在manager结点上创建文件,并输入如下内容:

version: '3'

services:
  influx:
    image: influxdb
    volumes:
      - influx:/var/lib/influxdb
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager

  grafana:
    image: grafana/grafana
    ports:
      - 0.0.0.0:80:3000
    volumes:
      - grafana:/var/lib/grafana
    depends_on:
      - influx
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager

  cadvisor:
    image: google/cadvisor
    hostname: '{{.Node.Hostname}}'
    command: -logtostderr -docker_only -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influx:8086
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    depends_on:
      - influx
    deploy:
      mode: global

volumes:
  influx:
    driver: local
  grafana:
    driver: local
  • 部署容器栈

    在manager节点上执行如下命令:

docker stack deploy -c docker-stack.yml monitor

    命令返回以后并不代表task已经完成部署,需要花一些时间,运行如下命令监控容器栈的部署状态:

docker stack services monitor

    如下图所示:

        

当红框中的数字前后匹配时,代表容器栈完成部署,再执行后序步骤。

  • 创建名称为cadvisor数据库存储数据

    执行如下命令,确认monitor_cadvisor服务运行的node:

docker service ps monitor_influx

    结果如下图红框所示:


    登录worker2结点,执行事下指令创建数据库:

docker exec `docker ps | grep -i influx | awk '{print $1}'` influx -execute 'CREATE DATABASE cadvisor'

  • 设置Grafana

   因为Grafana被部署在了worker1节点上,在浏览器中访问http://192.168.56.104:80,使用默认的用户名\密码:admin\admin,如下图:


点击"Add data source"添加数据源。如下图所示,按图中红框填写,其它项忽略:



    点击"Save &Test",如果出现"Data source is working"表示数据源添加成功。

    增加Dashboard配置。首先从https://github.com/botleg/swarm-monitoring/blob/master/dashboard.json下载示例配置文件,如下图所示,按提示上传配置文件:


        操作完成以后,结果如下图:


    至此,docker swarm集群监控系统部署完成,可以实现对宿主机及其上运行的容器的监控。在此基础上可实验其它一些功能,如自义Dashboard、自定义告警规则等。由本示例可以看出,这个方案的关键点是Dashboard配置,配置的好的话显示效果就好,非常灵活。

版权声明:本文为博主原创,未经本人许可,请勿转载 https://blog.csdn.net/dkfajsldfsdfsd/article/details/79977693

可扩展客户信息语言 (xCIL) 简介

可扩展客户信息语言 (xCIL) 简介              flyspace(王金辉) 粗译       参考原文:http://www.oasis-open.orgxCIL xCIL定义了可以...
  • FlySpace
  • FlySpace
  • 2003-08-11 11:33:00
  • 8678

搭建Docker Swarm集群实战(三)(swarm mode)

前言docker在1.12版本之后,把swarm的功能内置到docker engine本身,因此之前使用consul等第三方服务发现和键值服务的方法就可以作古了。这篇就是用docker自带的swarm...
  • leon_wzm
  • leon_wzm
  • 2017-10-07 19:45:49
  • 565

cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台

通过cadvisor+influxdb+grafana三者有机结合,打造跨主机容器监控。优点1、跨主机监控,可扩展 2、容器自发现 3、历史数据长期保存 4、自定义配置程度高 5、采集间隔很短,达到秒...
  • liyingke112
  • liyingke112
  • 2017-07-10 14:54:16
  • 981

Docker 1.12 Swarm集群实战(第五章)

补充一些遗漏的问题. 本章主要内容: 使用 constraints 指定 service 约束.service 挂载使用本地volume.ELK日志平台使用GELF日志驱动收集日志. ...
  • weiguang1017
  • weiguang1017
  • 2017-03-15 18:44:27
  • 1121

Docker学习笔记(七)-如何创建docker swarm

创建docker swarm 此处总结官网的文档,但是官网的这一小节,写得不完善,官网没有介绍如何创建节点的machine,需要查找以前的文档才方便学习,官网最好在文档中给出相关的链接,但没有,此...
  • Chenming_Hnu
  • Chenming_Hnu
  • 2017-02-08 11:02:24
  • 547

Jenkins+docker-compose+swarm 构建持续集成及一键式部署

  • 2017年08月25日 15:36
  • 93.31MB
  • 下载

docker集群监控方案cAdvisor+InfluxDB+Grafana搭建步骤

docker监控 快速安装最新版本的docker curl -sSL https://get.daocloud.io/docker | sh Docker集群监控平台 cAdvisor-Influ...
  • learner198461
  • learner198461
  • 2018-01-25 19:20:36
  • 93

Docker Swarm搭建生产环境的集群

以AWS为例介绍Docker Swarm的搭建过程,并简单测试Swarm manager的高可靠性。
  • gezhonglei2007
  • gezhonglei2007
  • 2016-06-05 10:33:51
  • 3058

docker-swarm架构与组成

swarm号称docker三剑客之一,用来实现docker的集群服务。docker swarm对于docker来说是一个本地化集群,它把多个的docker hosts聚集在一起,对外只提供一个虚拟化的...
  • rain082900
  • rain082900
  • 2016-01-19 13:42:55
  • 1498

Swarm创建docker集群:服务发现-etcd

不详细介绍swarm、docker的原理、架构 通过Docker + Etcd 术语本文中用到的术语书名 docker节点(docker node):docker的运行环境,通常为物理机...
  • K_Zombie
  • K_Zombie
  • 2016-01-19 13:12:05
  • 3308
收藏助手
不良信息举报
您举报文章:docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战
举报原因:
原因补充:

(最多只允许输入30个字)