Docker之容器监控部署

一、搭建

1. 创建虚拟网卡(可选)

为了网络环境隔离,同时把后期创建的cAdvisor+InfluxDB+Grafana这三个容器都加入自己定义的网络,便于理解和管理

:容器启动可以设置使用改网卡 即使用 --net 网卡名指定 若不指定则默认使用docker主机默认网卡docker0

//创建一个名为 zcoder-monitor 的docker网络环境
# docker network create zcoder-monitor
6e7653302309a5b80917334104250bdfc9d3a03c92f1af3d9089bf3d0e59db78

//查看 zcoder-monitor 网络环境的信息
# docker network inspect zcoder-monitor
[
    {
        "Name": "zcoder-monitor",
        "Id": "6e7653302309a5b80917334104250bdfc9d3a03c92f1af3d9089bf3d0e59db78",
        "Created": "2019-09-26T00:26:25.88034987-04:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

2. 部署influxdb

influxdb中文文档:https://jasper-zhang1.gitbooks.io/influxdb/content/  

InfluxDB是一个用于存储和分析时间序列数据的开源数据库。

主要特性有:

  • 内置HTTP接口,使用方便
  • 数据可以打标记,查让查询可以很灵活
  • 类SQL的查询语句
  • 安装管理很简单,并且读写数据很高效
  • 能够实时查询,数据在写入时被索引后就能够被立即查出
  • ……
# docker run -d --net zcoder-monitor -p 8083:8083 -p 8086:8086 --expose 8011 --expose 8012 -e PRE_CREATE_DB=cadvisor --name influxsrv tutum/influxdb:0.8.8
9cf2bcc3131722619a176be2c47f111147fbcfabcfc6484ad80fc631fa40091d

docker -p 宿主机端口:容器端口   

访问 http://docker主机的ip:映射端口8083     

// 创建管理员角色 cadvisor 密码 123456 以连接cadvisor数据库
CREATE USER "cadvisor" WITH PASSWORD '123456' WITH ALL PRIVILEGES 

// 创建数据库 cadvisor 用于接收cadvisor的数据
CREATE DATABASE "cadvisor"

3. 部署cadvisor

# docker run -d \
  --privileged=true --net zcoder-monitor \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8013:8080 \
  --link=influxsrv:influxsrv  \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:0.14.0 \
  -storage_driver=influxdb \
  -storage_driver_db=cadvisor \
  -storage_driver_host=influxsrv:8086

//若启动失败,启动cAdvisor报错:/sys/fs/cgroup/cpuacct,cpu: no such file or directory
//则执行以下命令
# sudo mount -o remount,rw '/sys/fs/cgroup'
# sudo ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu

参数解释:

--privileged=true           :设置挂载目录权限为最大 否则挂载出错
--net docker-monitor        :设置加入docker-monitor网络
--volume=/:/rootfs:ro       :将容器/rootfs目录挂载到docker /
--volume=/var/run:/var/run:rw :将容器/var/run 挂载到docker /var/run
--volume=/sys:/sys:ro         :rw表示读写  ro表示只读
--volume=/var/lib/docker:/var/lib/docker:ro 
--volume=/sys/fs/cgroup:/sys/fs/cgroup:ro 
-p 8013:8080                  :设置cadvisor端口映射  由于8080端口被使用  我分配8013
--detach=true                 :是否后台运行容器服务
--name=cadvisor google/cadvisor :容器服务名 为cadvisor  从docker默认仓库 下载google/cadvisor镜像
-storage_driver=influxdb        :绑定存储驱动 为 influxdb
-storage_driver_db=cadvisor     :数据库为  cadvisor  请对应
-storage_driver_host=influxdb:8086 :绑定数据库的管理地址  容器名:容器端口

访问 http://docker主机的ip:映射端口8013     本来为8080 修改为8013

初始登录名:root  密码:root

4. 部署grafana

grafana官方文档 https://grafana.com/docs/

Grafana允许查询,可视化,警报和了解指标

可视化:从热图到直方图,图形到地理地图,Grafana有大量可视化选项,可帮助客户精美地理解数据。

警报:在数据中时,在有意义的地方无缝定义警报。可视地定义阈值,并通过Slack,PagerDuty等获得通知。

开源:由一个充满活力的社区提供支持,可轻松安装在任何平台上。

延伸:在官方库中有数百个仪表盘和插件。

# docker run -d -p 3000:3000 \
  --name grafana --net zcoder-monitor \
  -e HTTP_USER=admin \
  -e HTTP_PASS=admin \
  -e INFLUXDB_HOST=localhost \
  -e INFLUXDB_PORT=8086 \
  -e INFLUXDB_NAME=cadvisor \
  -e INFLUXDB_USER=root \
  -e INFLUXDB_PASS=123456 \
  --link=influxsrv:influxsrv  \
  grafana/grafana:2.0.2

访问 http://docker主机的ip:映射端口3000  默认帐号admin admin

二、简单使用Grafana

备注:数据源有多种,influxdbd对实时时序数据有良好的存储方案。你也可以随业务场景切换安装其他数据源

点击图标回到首页,添加仪表盘

相关资料:

How to setup Docker Monitoring

docker:快速构建容器监控系统cAdvisor+InfluxDB+Grafana

docker监控方案的最佳实践(cadvisor+influxdb+grafana)

Docker monitoring with cAdvisor, InfluxDB and Grafana

发布了83 篇原创文章 · 获赞 188 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_40791253/article/details/101672137