构建Docker容器监控系统(cadvisor+influxDB+grafana)

目录

一、部署

1、安装docker-cd

2、阿里云镜像加速

3、下载组件镜像

4、创建自定义网络

5、创建influxdb容器

[6、创建Cadvisor 容器](#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

参数说明:

  1. -d :后台运行此容器;
  2. --name :启运容器分配名字influxdb;
  3. --net : 把容器加入到新的网络monitor;
  4. -p :映射端口,8083端口为infuxdb后台控制端口,8086端口是infuxdb的数据端口;
  5. 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

参数说明:

  1. -d:后台运行此容器;
  2. --name:启运容器分配名字Cadvisor ;
  3. --net:把容器加入到新的网络monitor;
  4. -p:映射端口8080;
  5. --mout:把宿主机的相文目录绑定到容器中,这些目录都是Cadvisor 需要采集的目录文件和监控内容;
  6. -storage_driver:需要指定Cadvisor 的存储驱动、数据库主机、数据库名;
  7. 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的监控项配置不重点介绍。大家如果感兴趣可以参考一些官方资料都是图形化的界面操作。

相关推荐
南猿北者3 小时前
docker容器
docker·容器
二十雨辰3 小时前
[linux]docker基础
linux·运维·docker
time never ceases4 小时前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle
YCyjs4 小时前
K8S群集调度二
云原生·容器·kubernetes
Hoxy.R4 小时前
K8s小白入门
云原生·容器·kubernetes
MonkeyKing_sunyuhua6 小时前
ubuntu22.04 docker-compose安装postgresql数据库
数据库·docker·postgresql
追风林6 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
€☞扫地僧☜€7 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
茶馆大橘7 小时前
微服务系列六:分布式事务与seata
分布式·docker·微服务·nacos·seata·springcloud
全能全知者9 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器