[置顶] cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台
通过cadvisor+influxdb+grafana三者有机结合,打造跨主机容器监控。
优点
1、跨主机监控,可扩展
2、容器自发现
3、历史数据长期保存
4、自定义配置程度高
缺点
1、不能自动隐藏已停止的容器
2、无法实现故障告警
组件
数据采集–cAdvisor
cAdvisor为Docker容器用户提供了了解运行时容器资源使用和性能特征的工具。
cAdvisor是单机版容器监控系统,通过收集宿主机的cgroup统计信息,经过加工处理后通过图展示在页面上。
这些信息包括宿主机、容器的CPU、内存、网络流量、磁盘空间等资源隔离和运行数据。
工作流程大致:
1)、收集、聚集、处理宿主机的cgroup统计数据
2)、写入后端基于事件序列的数据库(本文使用InfluxDB)
3)、展示时读取基于事件序列的数据库
优势:
部署、维护简单:通过容器形式部署,“开箱即用”,无需配置即可使用
监控容器和宿主机
通过图展示,比较美观
支持多种基于事件序列的数据库,写入和读取快
不足之处:
只能看到2分钟的监控数据
消耗的内存较高,通常几百M
页面加载较慢
数据存储–InfluxDB
InfluxDB是一个开源分布式时序、事件和指标数据库。
influxdb使用Go语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
其主要特色功能
基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)
可度量性:可以实时对大量数据进行计算
基于事件:支持任意的事件数据
InfluxDB的主要特点
无结构(无模式):可以是任意数量的列
可拓展的
支持min, max, sum, count, mean, median 等一系列函数,方便统计
原生的HTTP支持,内置HTTP API
强大的类SQL语法
自带管理界面,方便使用
在使用过程中发现influxdb缺点:
在select查询时,字段必须是time或者value,不能为其他字段
例如:select container_name from "cpu_usage_user" limit 100无结果
监控配置和展示–Grafana
Grafana是一款开源的监控绘图工具。
可以实时收集、存储、显示时间序列类型的数据(time series data)。
特性:
用于可视化大型测量数据的开源程序,提供了强大和优雅的方式去创建、共享、浏览数据。
dashboard中展示不同metric数据源中的数据。
常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。
有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、Cloudwatch、Prometheus、InfluxDB、Elasticsearch。
自定义配置灵活,支持模板、展示数据内容配置等等。
支持告警
部署
运行环境
宿主机:CentOS7 7.3.1611
docker版本为1.12.6
通过docker容器方式部署。部署情况
cadvisor influxdb grafana
docker1 192.168.20.128 部署 部署 部署
docker2 192.168.20.129 部署 / /
docker3 192.168.20.130 部署 / /
influxdb
创建容器
docker create -p 8083:8083 -p 8086:8086 -v /opt/influxdb:/var/lib/influxdb --name=influxdb --hostname=influxdb tutum/influxdb
docker start influxdb
8086用于Influxdb数据读写,8083用于数据库管理界面
InfluxDB容器创建成功后,可以通过http://192.168.20.128:8083/打开管理界面。
创建用户
点击页面右上角的设置图标,数据账号和密码,点击save
创建数据库
创建cadvisor数据库,用于收集存储Docker的性能数据,在输入框输入CREATE DATABASE “cadvisor”然后按回车,执行命令。
在输入框输入SHOW DATABASES,可以看到刚才创建的数据库
cadvisor
创建cAdvisor容器
docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --hostname=cadvisor --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_host=192.168.20.128:8086 -storage_driver_db=cadvisor -storage_driver_user=root -storage_driver_password=1qaz2wsx
-storage_driver=influxdb 指定存储驱动,使cadvisor将数据存储到数据库中,更多存储插件
-storage_driver_host=influxdb:8086 InfluxDB数据库的地址
-storage_driver_db=cadvisor 数据库名称
如果要指定用户名可以用-storage_driver_user参数,默认是root
如果要指定密码可以用-storage_driver_password参数,默认是root
cAdvisor运行以后,可以通过http://宿主机IP:8080/查看到Docker运行的机器和容器情况。
验证cAdvisor是否已经向InfluxDB存入数据
打开http://192.168.20.128:8083/的InfluxDB管理界面
点击右上角Database切换到cadvisor数据库
然后在输入框输入SHOW MEASUREMENTS可以看到已经创建了很多个表
grafana
部署容器
docker create -p 3000:3000 --hostname grafana --name grafana grafana/grafana
默认admin的用户名和密码是admin/admin
配置
添加数据库
配置模板
[置顶] cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台的更多相关文章
- .Net Core 2.*+ InfluxDB+Grafana+App Metrics实时性能监控
前言 .net core 2.* 实施性能监控 这个工具其实给运维 大大们用起来是更爽的.但是Grafana现在还没有找到中文版. 本文需要了解的相关技术与内容: InfluxDb(分布式时序数据库, ...
- cAdvisor0.24.1+InfluxDB0.13+Grafana4.0.2搭建Docker1.12.3 Swarm集群性能监控平台
目录 [TOC] 1.基本概念 既然是对Docker的容器进行监控,我们就不自己单独搭建cAdvisor.InfluxDB.Grarana了,本文中这三个实例,主要以Docker容器方式运行. 本 ...
- 7、Docker监控方案(cAdvisor+InfluxDB+Grafana)
一.组件介绍 我们采用现在比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控. 1.cAdvisor(数据采集) 开源软件cAdvisor(Container Adv ...
- (原)ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers
ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers(运行在主机上) 适用于类ubuntu系统.amd64. 1. in ...
- Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(一)
在做性能测试的时候,重点关注点是各项性能指标,用Jmeter工具,查看指标数据,就是借助于聚合报告,但查看时也并不方便.那如何能更直观的查看各项数据呢?可以通过InfluxDB+Grafana+Jme ...
- Telegraf+InfluxDB+Grafana搭建服务器监控平台
Telegraf+InfluxDB+Grafana搭建服务器监控平台 tags:网站 个人网站:https://wanghualong.cn/ 效果展示 本站服务器状态监控:https://statu ...
- docker容器监控:cadvisor+influxdb+grafana
cadvisor+influxdb+grafana可以实现容器信息获取.存储.显示等容器监控功能,是目前流行的docker监控开源方案. 方案介绍 cadvisor Google开源的用于监控基础设施 ...
- docker监控方案实践(cadvisor+influxdb+grafana)
一.概要 1.1 背景 虚拟化技术如今已经非常热门,如果你不知道什么是虚拟化,那你应该了解虚拟机.虚拟化技术如同虚拟机一样,用于将某些硬件通过软件方式实现"复制",虚拟出" ...
- Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(二)
在上一篇博文中,主要是讲了InfluxDB的配置,博文链接:https://www.cnblogs.com/hong-fithing/p/14453695.html,今天来分享下Jmeter的配置. ...
随机推荐
- Asp.net WebApi添加帮助文档
一.创建一个空的WebApi站点 二.新增一个名为Test的API控制器,实现部分方法(方法和类要添加文档说明注释) 1. 添加一个用户数据模型UserInfo.cs,代码如下: /// <su ...
- 第八篇:python基础_8 面向对象与网络编程
本篇内容 接口与归一化设计 多态与多态性 封装 面向对象高级 异常处理 网络编程 一. 接口与归一化设计 1.定义 (1)归一化让使用者无需关心对象的类是什么,只需要知道这些对象都具备某些功能就可以了 ...
- KNN算法在保险业精准营销中的应用
版权所有,可以转载,禁止修改.转载请注明作者以及原文链接. 一.KNN算法概述 KNN是Machine Learning领域一个简单又实用的算法,与之前讨论过的算法主要存在两点不同: 它是一种非参方法 ...
- 公共文件js加载
头部:例如 <header id="header" class="clearfix"> <a class="col-xs-9&quo ...
- vue的过渡效果
https://segmentfault.com/a/1190000007738518
- poj 2186 强连通入门题目
每头牛的梦想就是成为牛群中最受欢迎的牛. 在一群N(1 <= N <= 10,000)母牛中, 你可以得到M(1 <= M <= 50,000)有序的形式对(A,B),告诉你母 ...
- 转:用VMProtect和ASProtect 的SDK加密应用程序
最近想用VMProtect和ASProtect 的SDK加密一个程序,结果搞了半天没搞成,网上没看到在VC中如何使用VMProtect的SDK加密,于是琢磨了一下,总算成功了,最后有一点点心得,与大家 ...
- GDI+ 双缓存 和 刷新桌面(F5)
GDI+双缓存 POINT currentPoint; GetCursorPos(¤tPoint); HWND hWnd = ::GetDesktopWindow(); int n ...
- python 读取数据库时,datetime类型无法被json序列化--解决方案
新增针对datetime的jsonencode: # -*- coding: utf-8 -*- import json from datetime import date, datetime cla ...
- mysql 查询结果创建表
用 SELECT 的结果创建表 关系数据库的一个重要概念是,任何数据都表示为行和列组成的表,而每条 SELECT 语句的结果也都是一个行和列组成的表.在许多情况下,来自 SELECT 的“表”仅是一个 ...