详解Docker容器可视化监控中心搭建

概述

一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据,本文将实操 如何搭建一个可视化的监控中心 来收集这些承载着具体应用的容器的时序信息并可视化分析与展示!

动手了,动手了...

准备镜像

  1. adviser:负责收集容器的随时间变化的数据
  2. influxdb:负责存储时序数据
  3. grafana:负责分析和展示时序数据

部署Influxdb服务

可以将其视为一个数据库服务,其确实用于存储数据。之所以选用该数据库,原因正如官网所说:

Open Source Time Series DB Platform for Metrics & Events (Time Series Data)

下面我们将该服务部署起来

docker run -d -p 8086:8086 \
-v ~/influxdb:/var/lib/influxdb \
--name influxdb tutum/influxdb

进入influxdb容器内部,并执行influx命令:

docker exec -it influxdb influx

创建数据库test和root用户用于本次试验测试

CREATE DATABASE "test"
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES

部署cAdvisor服务

谷歌的cadvisor可以用于收集Docker容器的时序信息,包括容器运行过程中的资源使用情况和性能数据。

运行cadvisor服务

docker run -d \
-v /:/rootfs -v /var/run:/var/run -v /sys:/sys \
-v /var/lib/docker:/var/lib/docker \
--link=influxdb:influxdb --name cadvisor google/cadvisor:v0.27.3 \
--storage_driver=influxdb \
--storage_driver_host=influxdb:8086 \
--storage_driver_db=test \
--storage_driver_user=root \
--storage_driver_password=root

特别注意项:

在运行上述docker时,这里有可能两个其他配置项需要添加(CentOS, RHEL需要):

--privileged=true

设置为true之后,容器内的root才拥有真正的root权限,可以看到host上的设备,并且可以执行mount;否者容器内的root只是外部的一个普通用户权限。由于cadvisor需要通过socket访问docker守护进程,在CentOs和RHEL系统中需要这个这个选项。

--volume=/cgroup:/cgroup:ro

对于CentOS和RHEL系统的某些版本(比如CentOS6),cgroup的层级挂在/cgroup目录,所以运行cadvisor时需要额外添加–volume=/cgroup:/cgroup:ro选项。

部署Grafana服务

grafana则是一款开源的时序数据分析工具,而且界面专业易用,等下等部署好了,大家就能感受到:

docker run -d -p 5000:3000 \
-v ~/grafana:/var/lib/grafana \
--link=influxdb:influxdb \
--name grafana grafana/grafana

至此3个容器都已经启动了:

下面开始具体实验了

实战

访问grafana服务

打开localhost:5000来访问grafana的web服务,此时提示你需要登录,注意用户名和密码都是admin

登录后可以看到grafana的主页面:

看的很明显,在Grafana上有好几个步骤需要做,这里Install Grafana已经完成了,接下来我们需要:

  1. Add data source
  2. Create dashboard
  3. …...

Add Data Source

点击Add data source进入

然后主要是Setting选项卡设置

我们需要根据实际情况来填写各项内容:

Data source添加成功会予以提示

数据源添加完成以后,我们需要添加仪表盘(Dashboard)

Add Dashboard

点击Add dashboard进入

这里有很多类型的仪表盘供选择,我们选用最常用的Graph就好

进入之后,点击Panel Title下拉列表,再选择Edit进行编辑即可

在Edit里面主要的就是需要添加查询的条件,继续看下文

Add Query Editor

查询条件中我们可以选择要监控的指标:

这里选一个memory usage好了,然后要监控的容器选择grafana自身好了。

当然这里不止可以监控一个指标,也不止可以监控一个容器,更多组合我们只需要在下面并列着一个一个添加query条目就好!
最后我添加了三个监控条件,分别用于监控grafana、influxdb和cadvisor三个容器的memory usage指标,并将其同时显示于图中,怎么样是不是很直观!

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • docker cgroup 资源监控的详解
  • 使用Grafana 展示Docker容器的监控图表并设置邮件报警规则(图解)
  • 在Ubuntu上使用Grafana监控Docker的方法
  • Docker 容器内存监控原理及应用
  • python脚本监控docker容器
(0)

相关推荐

  • Docker 容器内存监控原理及应用

    Docker 容器内存监控 linux内存监控 要明白docker容器内存是如何计算的,首先要明白linux中内存的相关概念. 使用free命令可以查看当前内存使用情况. [root@localhost ~]$ free total used free shared buffers cached Mem: 264420684 213853512 50567172 71822688 2095364 175733516 -/+ buffers/cache: 36024632 228396052 Sw

  • python脚本监控docker容器

    本文实例为大家分享了python脚本监控docker容器的方法,供大家参考,具体内容如下 脚本功能: 1.监控CPU使用率 2.监控内存使用状况 3.监控网络流量 具体代码: #!/usr/bin/env python # --*-- coding:UTF-8 --*-- import sys import tab import re import os import time from docker import Client import commands keys_container_st

  • 在Ubuntu上使用Grafana监控Docker的方法

    前言 Grafana 是一个有着丰富指标的开源控制面板.在可视化大规模测量数据的时候是非常有用的.根据不同的指标数据,它提供了一个强大.优雅的来创建.分享和浏览数据的方式. 它提供了丰富多样.灵活的图形选项.此外,针对数据源(Data Source),它支持许多不同的存储后端.每个数据源都有针对特定数据源的特性和功能所定制的查询编辑器.Grafana 提供了对下述数据源的正式支持:Graphite.InfluxDB.OpenTSDB. Prometheus.Elasticsearch 和 Clo

  • docker cgroup 资源监控的详解

    docker cgroup 资源监控的详解 1.cgroup术语解析: blkio: 这个subsystem可以为块设备设定输入/输出限制,比如物理驱动设备(包括磁盘.固态硬盘.USB等). cpu: 这个subsystem使用调度程序控制task对CPU的使用. cpuacct: 这个subsystem自动生成cgroup中task对CPU资源使用情况的报告. cpuset: 这个subsystem可以为cgroup中的task分配独立的CPU(此处针对多处理器系统)和内存. devices

  • 使用Grafana 展示Docker容器的监控图表并设置邮件报警规则(图解)

    一.Docker 容器监控报警方式 接着上篇文章的记录,看到grafana的版本已经更新到4.2了,并且在4.0以后的版本中,加入了Alert Notifications 功能,这样在对容器 监控完,可以加入报警规则.根据官网介绍,报警方式也有很多种,常见的Email.Slack即时通讯.webhook等. 本篇记录的是邮件的报警设置.环境和上篇基本一致,都是在Docker 平台测试环境下,另外本篇使用的grafana容器的版本是用的 dockerhub上最新版本,该版本为grafana/gra

  • 详解Docker容器可视化监控中心搭建

    概述 一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率.内存占用.网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据,本文将实操 如何搭建一个可视化的监控中心 来收集这些承载着具体应用的容器的时序信息并可视化分析与展示! 动手了,动手了... 准备镜像 adviser:负责收集容器的随时间变化的数据 influxdb:负责存储时序数据 grafana:负责分析和展示时序数据 部署Influxdb服务 可以将

  • 详解docker容器的层的概念

    今天我们看看容器的层的概念. 上一节中,我们知道了,容器是一个进程,在这个进程的基础上,添加了下面3个部分: 1.启动Linux Namespace的配置实现与物理机的隔离. 2.设置Cgroups参数限制容器的资源. 3.生成系统文件目录,也就是rootfs文件,也叫镜像文件 这里需要备注的是:rootfs只是容器需要使用的基本文件的组合,并不包括操作系统内核,容器的操作系统内核依旧是使用宿主机的内核.当然,rootfs的存在,并不是没有意义,它的存在,使得容器拥有了一个最主要的性能:一致性.

  • 详解Docker 容器使用 cgroups 限制资源使用

    上一篇文章将到 Docker 容器使用 linux namespace 来隔离其运行环境,使得容器中的进程看起来就像爱一个独立环境中运行一样.但是,光有运行环境隔离还不够,因为这些进程还是可以不受限制地使用系统资源,比如网络.磁盘.CPU以及内存 等.为了让容器中的进程更加可控,Docker 使用 Linux cgroups 来限制容器中的进程允许使用的系统资源. 1. 基础知识:Linux control groups 1.1 概念 Linux Cgroup 可​​​让​​​您​​​为​​​系

  • 详解docker容器分配静态IP

    最近因为工作要求需要用学习使用docker,最后卡在了网络配置这一块.默认情况下启动容器的时候,docker容器使用的是bridge策略比如: docker run -ti ubuntu:latest /bin/bash 等效于 docker run -ti --net=bridge ubuntu:latest /bin/bash bridge策略下,docker容器自动为我们分配了一个IP地址,并连接到docker0的网桥上.但这里有一个问题,这个IP地址并不是静态分配的,这对我们的对容器的实

  • 详解Docker 容器互联方法

    Docker容器都是独立的,互相隔离的环境.然而,它们通常只有互相通信时才能发挥作用. 虽然有许多方法可以连接容器们,可是我将并不会试着去将其全部讨论在内.但是在这一系列的方法中,我们将看看那些常用的做法. 虽然看起来是很浅显,但是这对于与Docker成天打交道的朋友来说,理解这些技术及底层的设计理念就显得非常地重要了. 理解这些主题将会: 帮助开发和运维人员探索广泛的容器部署的选择. 让开发和运维人员更自信的着手于微服务microservice架构设计. 让开发和运维人员可以较好的编排更复杂的

  • 详解Docker容器跨主机通信的方法

    默认情况下Docker容器需要跨主机通信两个主机节点都需要在同一个网段下,这时只要两个Docker容器的宿主机能相互通信并且该容器使用net网络模式,改实现方式为网桥模式通信: 除此之外我们还可以通过使用第三方工具为不同主机间创建一个覆盖网络,使之能够 跨节点通信 ,这里将使用Flanneld实现: 安装etcd 创建 cat /etc/etcd/etcd.conf文件 # [member] ETCD_NAME=infra1 ETCD_DATA_DIR="/var/lib/etcd"

  • 详解docker 容器不自动退出结束运行的方法

    本文主要简单介绍 docker 容器与前置进程的关系,以及如何编写 Dockerfile/docker-compose.yml 优雅的让容器可以常驻运行. docker 容器的生命周期是同容器中的前置进程相关在一起的,这也是我们平时可能会遇到一些容器只是运行几秒便自动结束的原因:因为容器中没有一个常驻的前置进程,前置进程运行结束后,容器便自动退出了. 比如 docker hello-world # 一闪而过 输出一堆东西 docker run --name hello-world hello-w

  • 详解Docker 容器跨主机多网段通信解决方案

    一.MacVlan 实现Docker的跨主机网络通信的方案有很多,如之前博文中写到的通过部署 Consul服务实现Docker容器跨主机通信 Macvlan工作原理: Macvlan是Linux内核支持的网络接口.要求的Linux内部版本是v3.9–3.19和4.0+: 通过为物理网卡创建Macvlan子接口,允许一块物理网卡拥有多个独立的MAC地址和IP地址.虚拟出来的子接口将直接暴露在相邻物理网络中.从外部看来,就像是把网线隔开多股,分别接受了不同的主机上一样: 物理网卡收到包后,会根据收到

  • 详解Docker容器数据卷

    是什么 先来看看Docker的理念: 将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的容器之间希望有可能共享数据 Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了. 为了能保存数据在docker中我们使用卷. 一句话:有点类似我们Redis里面的RDB和AOF 能干嘛 卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系

  • 详解Docker学习笔记之搭建一个JAVA Tomcat运行环境

    前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常方便.因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法.更多的玩法还有大规模 web 应用.数据库部署.持续部署.集群.测试环境.面向服务的云计算.虚拟桌面 VDI 等等. 主观的印象:Docker 使用 Go 语言编写,用 cgroup 实现

随机推荐