docker监控方案实践(cadvisor+influxdb+grafana)
一、概要
1.1 背景
虚拟化技术如今已经非常热门,如果你不知道什么是虚拟化,那你应该了解虚拟机。虚拟化技术如同虚拟机一样,用于将某些硬件通过软件方式实现"复制",虚拟出"硬件系统" 并且能够对该虚拟的硬件系统实现一系列骚操作。
docker作为出色的虚拟化技术,其技术发展壮大的同时,使用docker部署主机和服务的情况越来越多。可虚拟化终究是虚拟化,它需要依托与真实的主机之上,所以面对日益庞大的docker服务群应用,需要做好有效的监控。
本文对docker不做详细介绍,主要讲解使用cadvisor+influxdb+grafana三大开源框架组成的docker服务群监控方案。
1.2 主流监控方案
1、使用docker自带的命令docker stats(有局限性)
2、cadvisor(开源)
3、Data Dog(它是这几个中最好的,但是收费)
4、Sensu Monitoring Framework(Sensu集群复杂,不易于部署)
5、Scout(收费)
1.3 软件简介
cadvisor:
Google开源的用于监控基础设施应用的工具,可以零配置运行在docker主机上来监控Docker主机以及Docker容器。其为但节点监控,只能监控一个主机。多节点监控可参考Google的Kubernetes。作为docker服务的监控数据收集器,提供给influxdb。
influxdb:
InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖、提供管理界面。提供基于时间序列,基于事件的可度量的实时计算功能。作为数据存储器以及分析函数支持,与elk中elasticsearch作用类似,但此数据库偏向存储实时数据。
grafana:
Grafana可视化大型测量数据的开源程序,有灵活丰富的图形化选项,可以混合多种风格,多个数据源例如Graphite、zabbix、InfluxDB、Prometheus、mysql和OpenTSDB 详见配置页面。作为数据分析的可视化展示,与influxdb配合实现监控目的。与elk中kibana类似,但此可视化偏向实时监控数据展示。
1.4 架构原理图

数据流向: docker主机+docker容器-->cadvisor-->influxdb-->granfana-->web页面
二、准备
2.1 环境准备
安装docker环境 :centos7下安装docker及配置docker
2.2 拉取镜像
docker pull tutum/influxdb:latest
docker pull grafana/grafana:latest
docker pull google/cadvisor:latest
2.3 创建虚拟网卡(网络环境隔离)
docker network create docker-monitor
备注:docker 要使用该网卡,需要docker --net docker-monitor指定。
三、部署服务
3.1 部署influxdb
docker run --name influxdb -d --net docker-monitor -p : -p : tutum/influxdb:latest
备注:8083为infuxdb后台控制端口,8086是infuxdb的数据端口
通过web访问:http://10.0.0.110:8083
添加管理员角色,创建数据库(作为后续存储)
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES ##创建管理员角色 root 密码 root 供使用
CREATE DATABASE "cadvisor" ##创建数据库 cadvisor 用于接收cadvisor的监控数据

3.2 部署cadvisor
docker run -d --name=cadvisor --net docker-monitor \
-p : -v/:/rootfs,ro -v /var/run:/var/run \
-v /sys:/sys,ro -v /var/lib/docker:/var/lib/docker,ro \
google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor \
-storage_driver_host=influxdb:
备注:
--privileged=true :设置挂载目录权限为最大 否则挂载出错
--volume=/sys:/sys:ro :rw表示读写 ro表示只读
--name=cadvisor google/cadvisor :pull会从docker默认仓库下载google/cadvisor镜像
-storage_driver=influxdb :绑定存储驱动 为 influxdb
-storage_driver_db=cadvisor :数据库为 cadvisor
-storage_driver_host=influxdb: :绑定数据库管理地址 容器名:容器端口
通过web访问: http://10.0.0.110:8080

3.3 部署grafana
docker run --name grafana -d -p : --net docker-monitor grafana/grafana
通过web访问:http://10.0.0.110:3000 默认帐号admin admin

四、简单使用
以记录本教程三大框架的内存实时监控数据展示为例
4.1 登录grafana
4.2 设置数据源

home主页
左到右分别是
安装grafana 添加数据源 添加面板 设置用户权限 安装插件

备注:数据源有多种,influxdbd对实时时序数据有良好的存储方案。可以根据业务场景切换
4.3 设置添加面板
回到主页进行添加

备注:grafana新建面板类似与一个图表的展示页面 其图表需要进行添加和编辑

新建了一个监控项之后,回来HOME,可以发现刚才创建的项目:

五、 总结
1、使用docker进行部署服务,省去了大量操作,且docker还有dockerfile等技术可以对环境部署进行批量化操作
2、对应docker监考,本架构可以满足基本的监控。因为influxdb为设计用于时序以及注重实时,其存储持久性有所取舍。
3、cadvisor监控与docker融合好,但是其为单节点监控,占据一定的docker主机空间。
docker监控方案实践(cadvisor+influxdb+grafana)的更多相关文章
- 7、Docker监控方案(cAdvisor+InfluxDB+Grafana)
一.组件介绍 我们采用现在比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控. 1.cAdvisor(数据采集) 开源软件cAdvisor(Container Adv ...
- docker容器监控:cadvisor+influxdb+grafana
cadvisor+influxdb+grafana可以实现容器信息获取.存储.显示等容器监控功能,是目前流行的docker监控开源方案. 方案介绍 cadvisor Google开源的用于监控基础设施 ...
- cAdvisor+InfluxDB+Grafana 监控Docker
容器的监控方案其实有很多,有docker自身的docker stats命令.有Scout.有Data Dog等等,本文主要和大家分享一下比较经典的容器开源监控方案组合:cAdvisor+InfluxD ...
- 14、Docker监控方案(Prometheus+cAdvisor+Grafana)
上一篇文章我们已经学习了比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控.这节课来学习Prometheus+cAdvisor+Grafana组合. cAdvisor ...
- (原)ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers
ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers(运行在主机上) 适用于类ubuntu系统.amd64. 1. in ...
- 【Docker】性能测试监控平台搭建:InfluxDB+Grafana+Jmeter+cAdvisor
前言 在做性能测试时,如果有一个性能测试结果实时展示的页面,可以极大的提高我们对系统性能表现的掌握程度,进而提高我们的测试效率.但是我们每次打开Jmeter都会有几个硕大的字提示别用GUI模式进行负载 ...
- 在Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控
关于 Docker 容器的监控,google cAdvisor 是个很好的工具,但是它默认只显示实时数据,不储存历史数据.为了存储和显示历史数据.自定义展示图,可以把将cAdvisor与InfluxD ...
- docker stack 部署容器监控方案(cAdvisor、Prometheus、Grafana)
=============================================== 2018/7/8_第1次修改 ccb_warlock === ...
- 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)
前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...
随机推荐
- 【Java】SpringBoot 佛祖保佑banner.txt
最新写代码有点多,拜拜佛祖,代码不出bug. 在springboot项目的resources文件夹下面创建一个banner.txt文件,springboot启动的时候默认会加载这个文件 ${AnsiC ...
- 前端每日实战:103# 视频演示如何用纯 CSS 创作一只监视眼
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/GBzLdy 可交互视频 此视频是可 ...
- selenium2-java 浏览器不同窗口切换
1,获取浏览器的单个窗口: String parentWindowid = driver.getWindowHandle(); System.out.println( ...
- git配置密钥(私钥、ssh、公钥)
参照: https://blog.csdn.net/weixin_42063071/article/details/80999690 经常帮人配置git的私钥,来总结一下简单的流程真心希望对大家有所帮 ...
- appium常见问题07_appium输入中文无效
前几天在appium android自动化测试过程中,使用send_keys()输入中文,发现只能输入字母和数字,输入中文无反应. 大家是否同样遇到过该问题,当大家同样遇到该问题时,在配置参数desi ...
- Linux对用户态的动态内存管理
Linux对内核态内存分配请求与用户态内存分配请求处理上分别对待 Linux本身信任自己,因此Linux内核请求分配多少内存,就会马上分配相同数量的内存出来. 但内核本身不相信应用程序,而且通常应用程 ...
- md5加密报错解决方法(TypeError: Unicode-objects must be encoded before hashing)
update()必须指定要加密的字符串的字符编码
- 开发 MFC 应用的一般过程
1.创建用户接口一般使用 Visual C++内置的资源编辑器创建用户接口,用户接口主要包括菜单.加速键.对话框.位图.图标.光标.工具栏以及其他资源等.通常,应用向导创建的资源文件包含了工程所需要的 ...
- 如何在嵌套的app中运用vue去写单页面H5
本文主要介绍移动端.为了避免移动端兼容出现各种奇奇怪怪的bug,所以秉承着能不用复杂的语法就不用,尽量用最基础的语法. 可用惯了各种ES6语法的童鞋们,写原生真是头疼,再加上各种领导催工期,肯定是内心 ...
- rpm相关
rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采用.RPM ...
