随着我们运行Docker的服务器和容器数量的增加,对这些docker运行环境进行监控变得越来越有必要。本文将介绍通过几个监控工具来配置一个docker运行环境的监控系统。

Docker监控系统的组件

在开始介绍之前,我们假定环境中已经安装并配置好了Docker,并且确认可以通过web浏览器来访问该环境(本地访问或者公网IP)。

  • cAdvisor - Goolge使用容器技术并创建了cAdvisor工具来帮助监控他们的基础设施。cAdvisor本身已经是一个很强大的监控工具了,它不仅仅能监控docker容器,还能监控运行docker的host环境。查看cAdvisor on GitHub获取更多API和配置选项的文档。

  • InfluxDB - InfluxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库。由于cAdvisor只显示实时信息而不存储度量(metric)信息,我们需要使用InfluxDB来存储这些数据以用来展示不同时间点的信息数据。

  • Grafana - Grafana Dahboard将以上这些信息进行汇总,并进行可视化展示。

配置Docker监控系统

我们首先说明step by step配置的步骤,然后介绍使用docker-compose或者在Docker Cloud安装配置的方法。

1. Step by Step

1) 配置InfluxDB。使用以下命令来启动一个InfluxDB实例,命名为influxdb,之后我们会用来link其他的container。

docker run -d \
-p 8083:8083 \
-p 8086:8086 \
--name influxdb \
tutum/influxdb:latest

启动后,测试InfluxDB是否创建成功。在浏览器中打开http://DockerIP:8083, 并使用以下信息登录。

用户名:root

密码:root

pic1

然后,创建一个database: cadvisor。

pic2

2) 创建cAdvisor容器,并链接到刚创建的InfluxDB的容器。

docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--link influxdb:influxdb \
--name=cadvisor \
google/cadvisor:latest \
-storage_driver=influxdb \
-storage_driver_db=cadvisor \
-storage_driver_host=influxdb:8086

启动后,在浏览器中打开http://DockerIP:8080, 就可以看到cAdvisor的界面。

pic3

pic4

3) 创建Grafana容器,并链接到InfluxDB的容器。

docker run -d \
-p 3000:3000 \
-e INFLUXDB_HOST=localhost \
-e INFLUXDB_PORT=8086 \
-e INFLUXDB_NAME=cadvisor \
-e INFLUXDB_USER=root \
-e INFLUXDB_PASS=root \
--link influxdb:influxdb \
--name grafana \
grafana/grafana

启动后,在浏览器中打开http://DockerIP:3000, 就可以登录到Grafana,使用以下用户名密码莱登陆。

用户名:admin

密码:admin

4) 在Grafana中配置Data Source。

点击左上角球形的logo,在下拉菜单中选择Data Source。然后点击“Add data source”,并填入以下信息:

Name: influxdb

Type: InfluxDB 0.8.x

Http settings

Url: http://influxdb:8086 (This is the name we specified when createing the link on the Grafana container)

Access: proxy

Basic Auth: Enabled

User: admin

Password: admin

InfluxDB Details Database: cadvisor User: root Password: root

pic5

2. 使用Docker Compose部署

docker-compose.yml文件如下。

version: '2'
services:
    influxdb:
        image: tutum/influxdb:latest
        ports:
            - "8083:8083"
            - "8086:8086"
        expose: 
            - "8086"
        volumes:
            - /home/lich/docker-runtime/influxdb/data:/var/lib/influxdb
        environment:
            - PRE_CREATE_DB=cadvisor
    cadvisor:
        image: google/cadvisor
        command: 
            -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
        ports:
            - "8080:8080"
        volumes:
            - /:/rootfs:ro
            - /var/run:/var/run:rw
            - /sys:/sys:ro
            - /var/lib/docker/:/var/lib/docker:ro
        links:
            - influxdb:influxdb
    grafana:
      image: grafana/grafana
      ports:
        - "3000:3000"
      links:
        - influxdb:influxdb
      environment:
        - INFLUXDB_HOST=localhost
        - INFLUXDB_PORT=8086
        - INFLUXDB_NAME=cadvisor
        - INFLUXDB_USER=root
        - INFLUXDB_PASS=root

创建应用:

docker-compose up -d

3. 使用Docker Cloud部署

在Docker Cloud中部署一个Stacks。Stacks配置文件docker-cloud.yml如下。

influxdb:
    image: tutum/influxdb:latest
    name: influxdb
    ports:
        - "8083:8083"
        - "8086:8086"
    expose: 
        - "8086"
    volumes:
        - /home/lich/docker-runtime/influxdb/data:/var/lib/influxdb
    environment:
        - PRE_CREATE_DB=cadvisor
cadvisor:
    image: google/cadvisor
    name: cadvisor
    command: 
        -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
    ports:
        - "8080:8080"
    volumes:
        - /:/rootfs:ro
        - /var/run:/var/run:rw
        - /sys:/sys:ro
        - /var/lib/docker/:/var/lib/docker:ro
    links:
        - influxdb:influxdb
grafana:
  image: grafana/grafana
  name: grafana
  ports:
    - "3000:3000"
  links:
    - influxdb:influxdb
  environment:
    - INFLUXDB_HOST=localhost
    - INFLUXDB_PORT=8086
    - INFLUXDB_NAME=cadvisor
    - INFLUXDB_USER=root
    - INFLUXDB_PASS=root

使用Grafana创建dashboard

以上我们已经成功的配置了docker监控系统的主要组件。下面来使用Grafana来创建一个dashboard,以监控Docker环境。

  1. 点击左上角球形的logo,在下拉菜单中选择Dashboards -> New

  2. 点击展开左上角绿色按钮,选择Add Panel -> Graph

    pic6

  3. 添加一个新的Query,在Metrics中填入以下参数,以CPU使用数据为例。

    pic7

  4. 可以根据需求来创建不同的可视化效果进行展示。编辑结束后,点击保存按钮保存dashboard。

总结

以上就是使用InfluxDB, cAdvisor, Grafana来监控Docker环境的基本步骤。

关于Grafana更多的教程和功能,查看Grafana Docs

pic8

本文链接: https://xzdbd.com/blog/how-to-setup-docker-monitoring参与评论»

–EOF–