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

      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

    如下图所示:

docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战_第1张图片        

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

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

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

docker service ps monitor_influx

    结果如下图红框所示:

docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战_第2张图片

    登录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,如下图:

docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战_第3张图片

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

docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战_第4张图片

docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战_第5张图片

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

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

docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战_第6张图片

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

docker swarm集群监控方案cAdvisor+InfluxDB+Grafana实战_第7张图片

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

你可能感兴趣的:(Docker)