通过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
配置
访问http://192.168.20.128:3000
添加数据库
配置模板
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
docker-statsd-influxdb-grafana, 带有 Telegraf ( StatsD ),InfluxDB和Grafana的Docker 映像 带有 Telegraf ( StatsD ),InfluxDB和Grafana的 Docker 映像
docker-monitoring:基于Cadvisor,InfluxDB和Grafana的Docker-Monitoring
使用docker pull 拉下的镜像并使用docker save保存的,可以使用docker load -i导入
软件介绍: 如果你从官方下载软件比较慢,可以使用这个docker1.12离线安装包docker-engine_1.12.3-0-xenial_amd64.deblibltdl7_2.4.6-1_amd64.deb
带有InfluxDB和Grafana的Docker映像 这是一个Docker镜像,基于。 该图像的主要区别在于: 通过将卷安装到Docker容器来支持持久性Grafana会将其数据存储在SQLite文件中,而不是在容器上MySQL表中,因此未安装MySQL ...
虚拟机Centos系统使用Docker部署TDengine和influxdb、GRafana;通过TDengine和influxdb两种方式显示数据在Grafana上。菜鸟教程,每一步都有截图,适合懒人使用。
生产环境中监控容器的运行状况十分重要,通过监控我们可以随时掌握容器的运行状态,做到线上隐患和问题早发现,早解决。...Docker 容器的监控方案有很多,除了 Docker 自带的docker stats命令,还有很多开源的解决
docker-engine_1.12.3-0-xenial_amd64.deb libltdl7_2.4.6-1_amd64.deb
主要介绍了使用Grafana 展示Docker容器的监控图表并设置邮件报警规则的图文教程,非常不错,具有参考借鉴价值,需要的朋友参考下吧
使用 MQTT、InfluxDB 和 Grafana 监控家庭传感器数据 项目 01-mosquitto: Mosquitto Docker 容器配置文件 02-bridge:接收 MQTT 数据并将其持久化到 InfluxDB 的 Python 脚本 03-bme280_mqtt:用于将传感器数据发布...
标题中的“docker-statsd-influxdb-grafana”是一个集成解决方案,它利用Docker容器技术,结合了四个关键组件:Telegraf、StatsD、InfluxDB和Grafana,用于实时监控和分析系统性能数据。这个项目的目标是提供一个...
离线部署grafana 10.4.2所需的镜像包
1、下载influxdb镜像:docker pull tutum/influxdb 1)超时报错: 2)解决办法:vim /etc/docker/daemon.json(应该只有一个key.json文件而没有daemon.json文件,如果没有daemon.json文件就直接新建就好了...
现在网上有很多关于监控平台,不过大部分开源平台不够开放,想要汉化和自定义监控平台随意添加仪表板的话还是首选prometheus+grafana,汉化在本资源主要介绍的前端vue的汉化,prometheus主要用于采集微服务数据或者...
docker-k6-grafana-influxdb 演示如何使用K6,Grafana和InfluxDB的容器化实例运行负载测试。文章这是以下文章的随附源代码。 请阅读有关代码的详细分类以及使用Docker Compose如何将K6,Grafana和InfluxDB一起使用的...
示例项目展示了如何使用k6加载测试一个简单的api , influxdb作为时间序列数据目标和grafana进行可视化。 相关性: docker-compose-> sudo apt-get install docker-compose 去 k6- 如果您已经安装了10+版本,则非常...
docker-grafana-influxdb-cloudwatch 源自 ,此映像包含InfluxDB和Grafana的合理默认配置,但还包含: 基于而不是现有的Ubuntu 捆绑通过cron运行的 ,用于从AWS CloudWatch获取指标启用InfluxDB的Graphite输入插件...
Grafana Docker 镜像此图像提供了依赖于 Grafite 和 Elasticsearch 的 grafana 安装。 Grafana 我由 nginx 提供支持。环境变量此图像需要用于 elasticsearch(用于存储仪表板)和石墨(用作数据源)的环境变量。 ...
使用docker pull 拉下的镜像并使用docker save保存的,可以使用docker load -i导入