前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第六章 Docker实践 构建容器监控系统

第六章 Docker实践 构建容器监控系统

原创
作者头像
Librant
修改2018-12-23 22:15:16
9960
修改2018-12-23 22:15:16
举报
文章被收录于专栏:跟我一起学 K8s跟我一起学 K8s

部署Docker的主机和容器日益增多,对主机和容器的监控显得越来越重要了。本章的Docker的实践就是快速构建一个容器的监控系统,通过界面直观反应应用性能和监控能力,对系统中存在的性能问题能做到一目了然,帮助提升系统的可靠性。

6.1 cAdvisor

6.1.1 cAdvisor 简介

cAdvisor(container advisor)是google公司开发的容器监控工具,作为k8s生态中默认部署的容器监控工具。cAdvisor可以监控当前host主机和容器上的CPU、内存、网络,磁盘等资源的使用情况,作为数据搜集的工具还是有着不错的表现,但是在界面显示方便就表现的不足。

cAdvisor在github上的路径为:https://github.com/google/cadvisor

git clone的地址为:https://github.com/google/cadvisor.git

6.1.2 cAdvisor 安装

cAdvisor使用容器的方式安装,首先查找cadvisor镜像:

root@ubuntu:~# docker search google/cadvisor

这里需要注意下,直接搜索cadvisor的话,可能报:

“Error response from daemon: Get https://index.docker.io/v1/search?q=cadvisor&n=25: net/http: TLS handshake timeou” 的错误。

拉取cadvisor的镜像:

root@ubuntu:~# docker pull google/cadvisor

Status: Downloaded newer image for google/cadvisor:latest

下载的镜像信息:

google/cadvisor latest 75f88e3ec333 12 months ago 62.2MB

6.1.3 cAdvisor 运行

运行cAdvisor容器:

root@ubuntu:~# docker run -d --name=cadvisor --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker:/var/lib/docker:ro -p 8080:8080 google/cadvisor

4f8de43c6dd898f7ade138dbd22f232a9f36b94990d474e953716ccfb6bb9962

查看容器运行情况:

root@ubuntu:~# docker ps

4f8de43c6dd8 google/cadvisor "/usr/bin/cadvisor -…" 3 minutes ago Up 3 minutes 0.0.0.0:8080->8080/tcp cadvisor

成功运行容器后,可以通过浏览器访问web访问cadvisor的界面:

http://192.168.131.129:8080/

cAdvisor的界面如下所示:

6.1.4 cAdvisor 使用

6.2 InfluxDB

6.2.1 InfluxDB 简介

InfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统。

6.2.2 InfluxDB 安装

influxdb采用容器安装的方式,首先查找influxdb的镜像:

root@ubuntu:~# docker search tutum/influxdb

直接拉取最新的镜像即可:

root@ubuntu:~# docker pull tutum/influxdb

Status: Downloaded newer image for tutum/influxdb:latest

6.2.3 InfluxDB 运行

运行influxdb容器:

root@ubuntu:~# docker run -d --name influxdb -p 8083:8083 -p 8086:8086 tutum/influxdb

fad5d38c897bc49aea888126fee24dda4370df3c43bd739738922a06f2d9c275

查看容器运行情况:

root@ubuntu:~# docker ps

1ae8d94981be tutum/influxdb "/run.sh" 21 minutes ago Up 17 minutes 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb

运行成功后,influxdb自带web页面,可以很直观在浏览器的页面进行相关的操作,只需要访问主机IP:8083端口即可。

http://192.168.131.129:8083/

成功访问influxdb的页面如图6-2-1所示:

图 6-2-1 influxdb访问页面
图 6-2-1 influxdb访问页面

创建用户:

创建数据库:

6.2.4 InfluxDB 操作

数据库操作:

1)显示数据库

> show databases

2)新建数据库

> create database test

3)删除数据库

> drop database test

4)使用数据库

> use xk_name

数据表操作:

1)显示所有表

> SHOW MEASUREMENTS

2)新建表

insert disk_free, hostname=server01 value=442221834240i 1435362189575692182

从表中查询字段

> select * from disk_free

3)删除表

> drop measurement disk_free

数据操作:

增加数据采用insert的方式,要注意的是 InfluxDB的insert中,表名与数据之间用逗号(,)分隔,tag和field之间用 空格分隔,多个tag或者多个field之间用逗号(,)分隔。

> insert disk_free, hostname=server01 value=442221834240i 1435362189575692182

> select * from disk_free

界面操作:

Influxdb界面操作
Influxdb界面操作

6.3 Grafana

6.3.1 Grafana 简介

Grafana是一个开源的度量分析与可视化套件。经常被用作基础设施的时间序列数据和应用程序分析的可视化,它在其他领域也被广泛的使用包括工业传感器、家庭自动化、天气和过程控制等。

6.3.2 Grafana 安装

Grafana采用容器的方式进行安装,搜索对应的官方镜像:

root@ubuntu:~# docker search grafana/grafana

直接拉取最新的镜像:

root@ubuntu:~# docker pull grafana/grafana

Status: Downloaded newer image for grafana/grafana:latest

6.3.3 Grafana 运行

运行grafana容器:

root@ubuntu:~# docker run -d --name grafana -p 3000:3000 grafana/grafana

78011134844f69c8671d13cd1a0124105087d69fab2a51fb999152878efac138

查看容器运行情况:

root@ubuntu:~# docker ps

78011134844f grafana/grafana "/run.sh" 48 seconds ago Up 46 seconds 0.0.0.0:3000->3000/tcp grafana

通过浏览器访问grafana的界面:

http://192.168.131.129:3000/

初始默认的用户和密码是:admin/admin

6.3.3 Grafana 配置

配置influxdb数据源

点击“Add data source”配置数据源:

测试连接的连通性:

配置Dashboard

网络流量统计

创建graph,切换编辑模式“Toggle Edit Mode”, 然后输入自定义SQL查询

SELECT derivative("value") AS "value" FROM "interface_rx" WHERE "host" = 'k8sslave04' AND "type" = 'if_octets' AND "instance" = 'eno16777984'

系统负载

SELECT mean("value") FROM "load_longterm" WHERE "host" = 'k8sslave04' AND $timeFilter GROUP BY time($interval) fill(null)

SELECT mean("value") FROM "load_midterm" WHERE "host" = 'k8sslave04' AND $timeFilter GROUP BY time($interval) fill(null)

SELECT mean("value") FROM "load_shortterm" WHERE "host" = 'k8sslave04' AND $timeFilter GROUP BY time($interval) fill(null)

内存用量

SELECT mean("value") FROM "memory_value" WHERE "type_instance" = 'used' AND $timeFilter GROUP BY time($interval) fill(null)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 6.1 cAdvisor
    • 6.1.1 cAdvisor 简介
      • 6.1.2 cAdvisor 安装
        • 6.1.3 cAdvisor 运行
          • 6.1.4 cAdvisor 使用
          • 6.2 InfluxDB
          • 6.2.1 InfluxDB 简介
            • 6.2.2 InfluxDB 安装
              • 6.2.3 InfluxDB 运行
                • 6.2.4 InfluxDB 操作
                • 6.3 Grafana
                  • 6.3.1 Grafana 简介
                    • 6.3.2 Grafana 安装
                      • 6.3.3 Grafana 运行
                        • 6.3.3 Grafana 配置
                        相关产品与服务
                        容器镜像服务
                        容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                        http://www.vxiaotou.com