目录
一、部署
1、安装docker-cd
2、阿里云镜像加速
3、下载组件镜像
4、创建自定义网络
5、创建influxdb容器
6、创建Cadvisor 容器
7、创建granafa容器
一、部署
1、安装docker-cd
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# yum -y install docker-ce
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
[root@localhost ~]# docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:25:41 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:24:18 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
2、阿里云镜像加速
[root@localhost ~]# cat << END > /etc/docker/daemon.json
{
"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
END
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
3、下载组件镜像
[root@localhost ~]# docker pull tutum/influxdb
[root@localhost ~]# docker pull google/cadvisor
[root@localhost ~]# docker pull grafana/grafana
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
grafana/grafana latest 9b957e098315 20 months ago 275MB
google/cadvisor latest eb1210707573 4 years ago 69.6MB
tutum/influxdb latest c061e5808198 6 years ago 290MB
4、创建自定义网络
为了把后期创建的Cadvisor+InfluxDB+Grafana这三个容器都加入自己定义的网络便于理解和管理,所以才新建一个自定义网络
[root@localhost ~]# docker network create monitor
18b6d5f890466b563c7f4aec62a208e65ced90ac01717550248fcda7c99de5eb
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
ff5212270fa2 bridge bridge local
e2de4f2fd93e host host local
18b6d5f89046 monitor bridge local
7212bc002123 none null local
5、创建influxdb容器
启动容器,tutum/influxdb镜像这里没有指定版本,默认会pull最新版本的influxdb:
[root@localhost ~]# docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
e729bfb694a1657178557eea325c0b3d6d497b91a700ba69eb55b9441a27bc84
参数说明:
- -d :后台运行此容器;
- --name :启运容器分配名字influxdb;
- --net : 把容器加入到新的网络monitor;
- -p :映射端口,8083端口为infuxdb后台控制端口,8086端口是infuxdb的数据端口;
- tutum/influxdb:通过这个容器来运行的,默认会在docker官方仓库pull下来;
查看influxdb容器是否启动:
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e729bfb694a1 tutum/influxdb "/run.sh" 32 seconds ago Up 31 seconds 0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp influxdb
从上图可以看到,在Query Templates选项中提供了常用的操作模板,可根据这些模版来管理influxdb,下面我们就来创建数据库和数据库用户。
CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES
创建Cadvisor 数据库cadvisor 、用户root,用户和数据库大家可以自行随意定义,用于后期grafana的配置:
CREATE DATABASE "cadvisor"
6、创建Cadvisor 容器
[root@localhost ~]# docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --net monitor --publish=8080:8080 --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
f70fa681a8ab62ef13281cc661d4526a4a9aa3af20281cb0804be04c8be25609
参数说明:
- -d:后台运行此容器;
- --name:启运容器分配名字Cadvisor ;
- --net:把容器加入到新的网络monitor;
- -p:映射端口8080;
- --mout:把宿主机的相文目录绑定到容器中,这些目录都是Cadvisor 需要采集的目录文件和监控内容;
- -storage_driver:需要指定Cadvisor 的存储驱动、数据库主机、数据库名;
- google/Cadvisor :通过Cadvisor 这个镜像来运行容器,默认会在docker官方仓库把镜像pull下来;
查看Cadvisor 容器:
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f70fa681a8ab google/cadvisor "/usr/bin/cadvisor -…" 26 seconds ago Up 25 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp cadvisor
第一次访问这个页面有点慢
从上图可以看到,其实Cadvisor 也有基础的图形展示功能,我们这里主要用它来做数据采集。
准备测试镜像
[root@localhost ~]# docker pull nginx
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@localhost ~]# docker run -itd --name nginx -p 8000:80 nginx
63844f017e3db7ecd04879384743fec427048e52e2a46a3440361fba1876c616
[root@localhost ~]# docker images nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 19 months ago 141MB
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63844f017e3d nginx "/docker-entrypoint.…" 8 minutes ago Up 7 minutes 0.0.0.0:8000->80/tcp, :::8000->80/tcp nginx
7、创建granafa容器
[root@localhost ~]# docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
11201213a39a45735822f693f49597e90d8ecf7be0ee74ad3683094e08a24e4f
[root@localhost ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11201213a39a grafana/grafana "/run.sh" 8 seconds ago Up 7 seconds 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp grafana
[root@localhos
访问granfana,通过http://192.168.147.139:3000端口的方式访问,默认账户密码(admin/admin),首次登陆需要更新密码。
添加数据源Add data source,如下图:
数据库:cadvisor 用户:root 密码:123456 然后save
新建 Dashboard,如下图:
可以看见已经创建成功,然后进入Dashboard
Add a new panel
可以查看我们之前建立的nginx,内存使用情况,在default里选择memory_usage里选择container_name里选择nginx
右上角保存
我们还可以多添加一个panel一起监控
到这里Cadvisor+InfluxDB+Grafana容器监控系统就部署完成了,至于其它grafana的监控项配置不重点介绍。大家如果感兴趣可以参考一些官方资料都是图形化的界面操作。