CentOS8上使用docker构建容器监控系统实战

大家好,我是SuieKa。一个在学计算机网络方面的小白,也是在校大二学生,学以致用,实操记载,博文若有毛病,请一定留言哟

本博文讲讲容器的监控系统怎么搭建与使用,上手前先了解三个容器镜像,我主要以这三个构建监控平台系统。

目录

  • 一、什么是InfluxDB?
  • 二、什么是cAdvisor?
  • 三、什么是Grafana?
    • 四、使用docker安装构建监控系统及使用

CentOS8上使用docker构建容器监控系统实战_第1张图片

一、什么是InfluxDB?

1、InfluxDB
官网:https://www.influxdata.com/
CentOS8上使用docker构建容器监控系统实战_第2张图片
InfluxDB是一个分布式的时间序列数据库,它由Go写成,用来存储cAdvisor收集的系统资源数据(IOE)
InfluxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。

对常见关系型数据库(MySQL)的基础概念对比

概念 MySQL InfluxDB
数据库(同) database database
表(不同) table measurement
列(不同) column tag(带索引的,非必须)、field(不带索引)、timestemp(唯一主键)

tag set:不同的每组tag key和tag value的集合;
field set:每组field key和field value的集合;
retention policy:数据存储策略(默认策略为autogen)InfluxDB没有删除数据操作,规定数据的保留时间达到清除数据的目的;
series:共同retention policy,measurement和tag set的集合。

二、什么是cAdvisor?

2、cAdvisor
官网:https://axibase.com/
CentOS8上使用docker构建容器监控系统实战_第3张图片
cAdvisor(Container Advisor)为容器用户提供了对其运行容器的资源使用和性能特征的理解。 它是一个运行守护程序,用于收集,聚合,处理和导出有关正在运行的容器的信息。 具体而言,对于每个容器,它保留资源隔离参数,历史资源使用和完整历史资源使用的直方图。 此数据按容器和机器范围导出。
cAdvisor是Google开源的工具,用于监控Docker主机和容器系统资源,通过图形页面实时显示数据,但不存储;它通过宿主机/proc、/sys、/var/lib/docker等目录下文件获取宿主机和容器运行信息。
cadvisor不仅可以搜集一台机器上所有运行的容器信息,还提供基础查询界面和http接口,方便其他组件如Prometheus进行数据抓取,或者cadvisor + influxdb + grafna搭配使用。
cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况
Cadvisor使用Go语言开发,利用Linux的cgroups获取容器的资源使用信息,在K8S中集成在Kubelet里作为默认启动项,官方标配。

三、什么是Grafana?

3、Grafana
官网:https://grafana.com/
CentOS8上使用docker构建容器监控系统实战_第4张图片
同样,Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。目前使用grafana的公司有很多,如paypal、ebay、intel等。
Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。 官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。
每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。

CentOS8上使用docker构建容器监控系统实战_第5张图片
Grafana的7大特点:

1、可视化:快速和灵活的客户端图形具有多种选项。面板插件为许多不同的方式可视化指标和日志。
2、报警:可视化地为最重要的指标定义警报规则。Grafana将持续评估它们,并发送通知。
3、通知:警报更改状态时,它会发出通知。接收电子邮件通知。
4、动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部。
5、混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源。这甚至适用于自定义数据源。
6、注释:注释来自不同数据源图表。将鼠标悬停在事件上可以显示完整的事件元数据和标记。
7、过滤器:过滤器允许您动态创建新的键/值过滤器,这些过滤器将自动应用于使用该数据源的所有查询。

它们之间关系:
cAdvisor容器数据采集->InfluxDB容器数据存储->Grafana可视化展示

好了。我们就来构建这样的监控平台

四、使用docker安装构建监控系统及使用

1、操作系统版本和docker版本

[21:21:40 root@wang-tuxing ~]#cat /etc/redhat-release 
CentOS Linux release 8.1.1911 (Core) 
[21:21:54 root@wang-tuxing ~]#docker -v
Docker version 19.03.8, build afacb8b

2、搭建influxdb (使用docker一条命令解决战斗)
使用docker直接拉取安装镜像
先检查两个端口是否被占用,因为需要使用,也可指其他端口

[08:35:42 root@wang-tuxing ~]#netstat -nltup | grep 8083
[08:35:55 root@wang-tuxing ~]#netstat -nltup | grep 8086
[08:45:55 root@wang-tuxing ~]#netstat -nltup | grep 8081
[21:36:33 root@wang-tuxing ~]#docker run -d -p 8083:8083 -p 8086:8086 --name influxdb tutum/influxdb
Unable to find image 'tutum/influxdb:latest' locally
latest: Pulling from tutum/influxdb
a3ed95caeb02: Pull complete 
23efb549476f: Pull complete 
aa2f8df21433: Pull complete 
ef072d3c9b41: Pull complete 
c9f371853f28: Pull complete 
a248b0871c3c: Pull complete 
749db6d368d0: Pull complete 
db2492acfcc3: Pull complete 
b7e7d2e12d53: Pull complete 
4272a53eef10: Pull complete 
9b2fefdb5321: Pull complete 
Digest: sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b
Status: Downloaded newer image for tutum/influxdb:latest
d4652e3f491d10eef3636c7e8bb8f06b6448b0be090d6531d3158be6c0e4587e

查看进程是否跑起来

[22:00:15 root@wang-tuxing ~]#docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
d4652e3f491d        tutum/influxdb      "/run.sh"           14 seconds ago      Up 13 seconds       0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp   influxdb

客户端访问influxDB:http://192.168.1.102:8083/
若不能正常访问请关闭防火墙,或者放行8083端口
CentOS8上使用docker构建容器监控系统实战_第6张图片
可以创建一个名叫cadvisor的数据库
CentOS8上使用docker构建容器监控系统实战_第7张图片
CentOS8上使用docker构建容器监控系统实战_第8张图片
直接回车就创建了

可以创建一个名叫cadvisor的用户及密码
.CentOS8上使用docker构建容器监控系统实战_第9张图片
写好后直接回车就创建好了

Show Databases				显示数据库
Create Database				创建数据库
Drop Database				删除数据库
Show Measurements			显示测量
Show Tag Keys				显示标签键
Show Tag Values				显示标签值
Show Retention Policies		显示保留政策
Create Retention Policy		创建保留政策
Drop Retention Policy		删除保留政策
Show Continuous Queries		显示连续查询
Create Continuous Query		创建连续查询
Drop Continuous Query		删除连续查询
Show Users					显示用户
Create User					创建用户
Create Admin User			创建管理员用户
Drop User					删除用户
Show Stats					显示统计
Show Diagnostics			显示诊断

3、搭建cadvisor

[08:38:08 root@wang-tuxing ~]#docker run -d \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--link influxdb:influxdb \
-p 8081:8080 \
--volume=/:/rootfs:ro \
 --volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
 --volume=/var/lib/docker/:/var/lib/docker:ro \
 --link influxdb:influxdb \
 -p 8081:8080 \
 --name=cadvisor \
 google/cadvisor:latest \
 -storage_driver=influxdb \
 -storage_driver_db=cadvisor \
 -storage_driver_host=influxdb:8086
Unable to find image 'google/cadvisor:latest' locally
latest: Pulling from google/cadvisor
ff3a5c916c92: Pull complete
44a45bb65cdf: Pull complete
0bbe1a2fe2a6: Pull complete
Digest: sha256:815386ebbe9a3490f38785ab11bda34ec8dacf4634af77b8912832d4f85dca04
Status: Downloaded newer image for google/cadvisor:latest
c6b52ac4b39a4d547278d3949e5ace77d55d2415fce70ad9f3bbd8a4fcd47b6f


[08:49:03 root@wang-tuxing ~]#docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                            NAMES
c6b52ac4b39a        google/cadvisor:latest   "/usr/bin/cadvisor -…"   9 minutes ago       Up 9 minutes        0.0.0.0:8081->8080/tcp                           cadvisor

–link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量。
–volume 数据持久化 数据卷 或挂载

直接客户端访问:http://192.168.1.102:8081/
CentOS8上使用docker构建容器监控系统实战_第10张图片
总使用量
CentOS8上使用docker构建容器监控系统实战_第11张图片
每个核心的使用量
CentOS8上使用docker构建容器监控系统实战_第12张图片
使用分类
CentOS8上使用docker构建容器监控系统实战_第13张图片
不多说,可以看到当打开时,以下有的是动态图,很清晰
这里还可以监控网卡
CentOS8上使用docker构建容器监控系统实战_第14张图片
查看宿主机的容器(点击Docker Containers
CentOS8上使用docker构建容器监控系统实战_第15张图片
这是刚刚pull的镜像
查询单个容器就直接点击容器查询
CentOS8上使用docker构建容器监控系统实战_第16张图片
下面就会有监控内容

3、安装grafana

[09:06:49 root@wang-tuxing ~]#docker run -d \
 -p 3000:3000 \
 -e INFLUXDB_HOST=influxdb \
 -e INFLUXDB_PORT=8086 \
 -e INFLUXDB_NAME=cadvisor \
 -e INFLUXDB_USER=cadvisor \			####INFLUXDB创建的用户
 -e INFLUXDB_PASS=password \			####INFLUXDB创建用户的密码
 --link influxdb:influxsrv \
 --name grafana \
 grafana/grafana
a36d42eaecd1c7a2ae9b120a751200f6b7813448b028ef278e04ea8e66f265e2

[09:07:24 root@wang-tuxing ~]#docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                            NAMES
a36d42eaecd1        grafana/grafana          "/run.sh"                20 seconds ago      Up 18 seconds       0.0.0.0:3000->3000/tcp                           grafana

-e的作用是指定容器内的环境变量
客户端访问:http://192.168.1.102:3000/
初始用户admin,密码admin
CentOS8上使用docker构建容器监控系统实战_第17张图片
会有提醒修改密码
CentOS8上使用docker构建容器监控系统实战_第18张图片
添加数据源
CentOS8上使用docker构建容器监控系统实战_第19张图片
像前面提到过,数据源支持有很多,我在这里使用InfluxDB
CentOS8上使用docker构建容器监控系统实战_第20张图片
CentOS8上使用docker构建容器监控系统实战_第21张图片
CentOS8上使用docker构建容器监控系统实战_第22张图片
最后点击保存和测试
在这里插入图片描述
添加图表
CentOS8上使用docker构建容器监控系统实战_第23张图片
选择 visualization 直观的、形象显示
CentOS8上使用docker构建容器监控系统实战_第24张图片
里面有很多图表选择,比如选择第一个
CentOS8上使用docker构建容器监控系统实战_第25张图片
设置 title为容器内存
CentOS8上使用docker构建容器监控系统实战_第26张图片
influxDB数据库中查询到的内容 cpu 内存 流量
CentOS8上使用docker构建容器监控系统实战_第27张图片
选择 default----memory_usage
CentOS8上使用docker构建容器监控系统实战_第28张图片
监控出图
可以根据筛选容器,来监控具体的项目

新增查询内容
CentOS8上使用docker构建容器监控系统实战_第29张图片
CentOS8上使用docker构建容器监控系统实战_第30张图片
出图:
CentOS8上使用docker构建容器监控系统实战_第31张图片
监控另存保存
CentOS8上使用docker构建容器监控系统实战_第32张图片
CentOS8上使用docker构建容器监控系统实战_第33张图片
可以收集主机上的数据

这里可以摸索的设置项还有很多,比如一些坐标自定义、显示策略自定义,甚至我们还可以自定义报警策略等等

你可能感兴趣的:(linux实战)