在这篇文章中,我们将带领您了解cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台的全貌,包括docker监控软件cadvisor的主要功能的相关情况。同时,我们还将
在这篇文章中,我们将带领您了解cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台的全貌,包括docker监控软件cadvisor的主要功能的相关情况。同时,我们还将为您介绍有关.Net Core 2.*+ InfluxDB+Grafana+App Metrics实时性能监控、.Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控、7、Docker监控方案(cAdvisor+InfluxDB+Grafana)、CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统的知识,以帮助您更好地理解这个主题。
本文目录一览:- cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台(docker监控软件cadvisor的主要功能)
- .Net Core 2.*+ InfluxDB+Grafana+App Metrics实时性能监控
- .Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控
- 7、Docker监控方案(cAdvisor+InfluxDB+Grafana)
- CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统
cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台(docker监控软件cadvisor的主要功能)
通过cadvisor+influxdb+grafana三者有机结合,打造跨主机容器监控。
优点
1、跨主机监控,可扩展
2、容器自发现
3、历史数据长期保存
4、自定义配置程度高
5、采集间隔很短,达到秒级
6、多种方式告警
缺点
1、不能自动隐藏已停止的容器
2、grafana会展现所有的数据,导致展示长时间的数据时,各个数据点重叠。
组件
数据采集–cAdvisor
cAdvisor为Docker容器用户提供了了解运行时容器资源使用和性能特征的工具。
cAdvisor是单机版容器监控系统,通过收集宿主机的cgroup统计信息,经过加工处理后通过图展示在页面上。
这些信息包括宿主机、容器的CPU、内存、网络流量、磁盘空间等资源隔离和运行数据。
工作流程大致:
1)、收集、聚集、处理宿主机的cgroup统计数据
2)、写入后端基于事件序列的数据库(本文使用InfluxDB)
3)、展示时读取基于事件序列的数据库
优势:
部署、维护简单:通过容器形式部署,“开箱即用”,无需配置即可使用
监控容器和宿主机
通过图展示,比较美观
支持多种基于事件序列的数据库,写入和读取快
不足之处:
只能看到2-3分钟的监控数据
消耗的内存较高,通常几百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是一款开源的监控绘图工具。
对收集来的数据进行展示和分析。
特性:
用于可视化大型测量数据的开源程序,提供了强大和优雅的方式去创建、共享、浏览数据。
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
添加数据库
配置模板
.Net Core 2.*+ InfluxDB+Grafana+App Metrics实时性能监控
前言
.net core 2.* 实施性能监控
这个工具其实给运维 大大们用起来是更爽的。但是Grafana现在还没有找到中文版。
本文需要了解的相关技术与内容:
InfluxDb(分布式时序数据库,开源)(注:分布式部分已商业化最新的分布式版本已不在开源,单例的继续开源)
Grafana(开源的,功能齐全的度量仪表盘和图形编辑器)
App Metrics(主角,开源的支持.NET Core的监控插件,采用管道注入的方式,对代码的入侵性极小)
效果图
安装influxdb
influxdb在1.*版本之后就不再有网页版本了。
所以大家选择版本的时候一定要注意这个事情免得找不到influxdb 的 admin控制台
下载地址
https://dl.influxdata.com/influxdb/releases/influxdb-1.6.3_windows_amd64.zip
我这里选择的是1.6.3版本
解压文件夹之后进行如下配置,打开config中的配置文件
修改如下几项目
[meta]
# Where the metadata/raft database is stored
dir = "D:/influxdb/meta"
[data]
# The directory where the TSM storage engine stores TSM files.
dir = "D:/influxdb/data"
# The directory where the TSM storage engine stores WAL files.
wal-dir = "D:/influxdb/wal"
如果使用的是1.*之前的版本就可以打开admin控制台
配置是这样的
[admin]
# Determines whether the admin service is enabled.
enabled = true
# The default bind address used by the admin service.
bind-address = ":8083"
然后运行influxdb
influxd -config influxdb.conf
运行起来之后就是这个样子
好多 人都使用了1.*之后的版本,没有admin控制台给大家 推荐一个工具
InfluxDBStudio-0.1.0 用这个货创建一个数据库就可以了
配置Grafana
下载地址:
https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.3.1.windows-amd64.zip
解压之后 在文件夹之后直接运行这个程序
grafana-server.exe
Grafana默认会监听3000的端口,所以我们进入
http://127.0.0.1:3000,
默认账号密码:admin admin
就是这样的效果啦
安装默认的模板
地址如下:https://grafana.com/dashboards/2125
这里选择刚才我们下载的json文件就可以,或者直接输入2125都可以
添加数据库配置文件
配置好了之后就会出现这个样子了
在.net core配置
先把这些DLL引用了吧。项目右键编辑帖进去 重新生成一下就可以了。
<PackageReference Include="App.Metrics" Version="2.1.0" />
<PackageReference Include="App.Metrics.AspNetCore.Endpoints" Version="2.0.0" />
<PackageReference Include="App.Metrics.AspNetCore.Reporting" Version="2.0.0" />
<PackageReference Include="App.Metrics.AspNetCore.Tracking" Version="2.0.0" />
<PackageReference Include="App.Metrics.Extensions.Reporting.InfluxDB" Version="1.2.0" />
<PackageReference Include="App.Metrics.Formatters.Json" Version="2.1.0" />
<PackageReference Include="App.Metrics.Reporting.InfluxDB" Version="2.0.0" />
修改appsettings.json配置文件
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"InfluxDB": {
"IsOpen": true,
"DataBaseName": "LogDb",
"ConnectionString": "http://127.0.0.1:8086",
"username": "admin",
"password": "xxxxxxxxxx",
"app": "LogDbDemo",
"env": "stage"
}
}
修改startup进行管道接管
ConfigureServices添加 如下
#region Metrics监控配置
string IsOpen = Configuration.GetSection("InfluxDB")["IsOpen"].ToLower();
if (IsOpen == "true")
{
string database = Configuration.GetSection("InfluxDB")["DataBaseName"];
string InfluxDBConStr = Configuration.GetSection("InfluxDB")["ConnectionString"];
string app = Configuration.GetSection("InfluxDB")["app"];
string env = Configuration.GetSection("InfluxDB")["env"];
string username = Configuration.GetSection("InfluxDB")["username"];
string password = Configuration.GetSection("InfluxDB")["password"];
var uri = new Uri(InfluxDBConStr);
var metrics = AppMetrics.CreateDefaultBuilder()
.Configuration.Configure(
options =>
{
options.AddAppTag(app);
options.AddEnvTag(env);
})
.Report.ToInfluxDb(
options =>
{
options.InfluxDb.BaseUri = uri;
options.InfluxDb.Database = database;
options.InfluxDb.UserName = username;
options.InfluxDb.Password = password;
options.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30);
options.HttpPolicy.FailuresBeforeBackoff = 5;
options.HttpPolicy.Timeout = TimeSpan.FromSeconds(10);
options.FlushInterval = TimeSpan.FromSeconds(5);
})
.Build();
services.AddMetrics(metrics);
services.AddMetricsReportScheduler();
services.AddMetricsTrackingMiddleware();
services.AddMetricsEndpoints();
}
#endregion
Configure添加这些东西
#region 注入Metrics
string IsOpen = Configuration.GetSection("InfluxDB")["IsOpen"].ToLower();
if (IsOpen == "true")
{
app.UseMetricsAllMiddleware();
// Or to cherry-pick the tracking of interest
app.UseMetricsActiveRequestMiddleware();
app.UseMetricsErrorTrackingMiddleware();
app.UseMetricsPostAndPutSizeTrackingMiddleware();
app.UseMetricsRequestTrackingMiddleware();
app.UseMetricsOAuth2TrackingMiddleware();
app.UseMetricsApdexTrackingMiddleware();
app.UseMetricsAllEndpoints();
// Or to cherry-pick endpoint of interest
app.UseMetricsEndpoint();
app.UseMetricsTextEndpoint();
app.UseEnvInfoEndpoint();
}
#endregion
运行项目跑一圈之后 返回Grafana就出现了这样的图例
后续
刚刚创建了一个.net core的群欢迎大家进入:
点击链接加入群聊【.Net Core研究团】:https://jq.qq.com/?_wv=1027&k=5IEolkJ
如果我的文章对您有帮助,希望您可以点个赞。最近打算申请mvp。希望大家帮忙。
特别感谢
狮子 :https://www.cnblogs.com/GuZhenYin/
.Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控
最近这段时间一直在忙,没时间写博客,负责了一个项目,从前端到后端一直忙,同时还有其他第几个项目的系统架构要处理。
去年就开始关注net core了,只是平时写写demo,没用在项目中,正好这次机会就用了net core,具体是什么时候开始的不太记得了,总之刚开始是用core 1.0开发,然后在开发的时候突然想到,平时我们的项目中都没有做过项目的实时监控,为什么这次不试试看呢,而且还能知道每天什么时段的流量走向,系统吞吐量等。记得之前去北京总公司的时候,看到java开发部那边有一个大屏幕,实时的显示项目的吞吐量、请求量等信息,感觉非常酷,我们net应该可以可以实现吧。
抱着这总心态就去找了一些相关资料,也就在项目用了起来。
项目部署在windows环境下,Influxdb的介绍这里不再赘述。
1、首先安装InfluxDB时序数据库,地址如下:https://portal.influxdata.com/downloads#influxdb ,这里我就下载Windows Binaries (64-bit),具体的写一下配置文件和安装过程。
解压后打开influxdb.conf,因为influxdb的默认配置全是针对linux配置的,所以我们需要修改一下配置文件。
修改下面3个liunx的路径,改为winodws路径如下:
[meta]
# Where the metadata/raft database is stored
dir = "influxdb/meta"
[data]
# The directory where the TSM storage engine stores TSM files.
dir = "influxdb/data"
# The directory where the TSM storage engine stores WAL files.
wal-dir = "influxdb/wal"
我将influxdb的文件都放在了influxdb目录下,可以用相对位置,也可以用绝对位置,这个可以根据个人需要修改。
这里提一下,Influxdb v1.2.4之后好像网页图形化管理界面就去掉了,1.2.4之前的是有网页图形化管理界面的,influxdb.conf文件之前还有
[admin]
# Determines whether the admin service is enabled.
enabled = true
# The default bind address used by the admin service.
bind-address = ":8083"
不过后面的版本,conf文件里就没有这个了,所以大家要注意一下。后面版本没办法用网页图形化管理,如果要连接Influxdb的话可以在目录下以cmd运行influx.exe,如果不想所有人都可以访问你的InfluxDB,那么你可以在conf文件里配置认证信息
# Determines whether HTTP endpoint is enabled.
enabled = true
# The bind address used by the HTTP service.
bind-address = ":8086"
# Determines whether user authentication is enabled over HTTP/HTTPS.
auth-enabled = true
最后cmd运行,进入到你的解压目录,执行命令:
influxd -config influxdb.conf
这里说一下,使用influx.exe登录时,输入以下命令:influx -host 127.0.0.1 -port 8086 -username "admin" -password "123456",这样就连上InfluxDB了。然后创建数据库:CREATE DATABASE "AppMetricsDemo"。
如果你觉得这样比较麻烦,可以安装两个influxDB,一个是V1.2.4版的,一个是最新版的,这是需要修改配置文件的端口,将两个influxDB的端口修改成不一样的就好,然后用1.2.4版本的连接最新版的即可,如图,点击右上角的齿轮图标即可出现连接表单,
(安装好influxDB后,记得在influxDB中创建Demo需要的数据库“AppMetricsDemo”)
2、安装Grafana,下载地址:https://grafana.com/get,我们解压后进入bin目录,如图:
直接运行grafana-server.exe即可。
Grafana默认会监听3000的端口,所以我们进入http://localhost:3000,
会让你登陆,直接输入本地的管理员帐户即可,帐户:admin 密码:admin,进入后如图:
安装完成之后,我们下载相关仪表模版的Json文件。
地址如下:https://grafana.com/dashboards/2125
然后我们导入我们的仪表:如图操作即可
添加我们上面的数据源,如图:
选择Add DataSource,然后操作如下:
这样,我们就完成了Grafana的安装配置和添加数据源。
由于实际项目中,我们不可能在服务器上运行个控制台去开启这些服务,所以我们需要将influxDB和Grafana发布成服务的形式运行在服务器上,这里我们可以使用nssm工具将InfluxDB和Grafana封装成服务运行。
下载地址如下:http://www.nssm.cc/download
解压后进入到对应系统版本文件夹中,里面有个32位和64位的文件,根据自己的实际情况选择,如图:
我们选择win64,进入文件夹后运行cmd,输入nssm install InfluxDB 运行后出现如下界面:
重点说一下参数这一栏,Argument里输入:-config influxdb.conf,类似上面在cmd中输入Influxd -config influxdb.conf
安装好后运行起来就好,Grafana的安装类似上面的操作,只是Argument这一栏不需要输入任何东西。
3、.netCore 中使用AppMetrics,新建一个名为Demo 的api,然后编辑右键编辑 Demo.csproj文件,在ItemGroup节点下新增以下Package
<PackageReference Include="App.Metrics" Version="2.0.0-alpha" />
<PackageReference Include="App.Metrics.AspNetCore.Endpoints" Version="2.0.0-alpha" />
<PackageReference Include="App.Metrics.AspNetCore.Reporting" Version="2.0.0-alpha" />
<PackageReference Include="App.Metrics.AspNetCore.Tracking" Version="2.0.0-alpha" />
<PackageReference Include="App.Metrics.Extensions.Reporting.InfluxDB" Version="1.2.0" />
<PackageReference Include="App.Metrics.Formatters.Json" Version="2.0.0-alpha" />
<PackageReference Include="App.Metrics.Reporting.InfluxDB" Version="2.0.0-alpha" />
保存后,项目就引用了AppMetrics相关类库
然后修改appsettings.json文件。添加如下代码
ConfigureServices方法,如下:
代码这一块基本上完成了。
接下来运行项目,访问以下,然后看看Grafana中的仪表盘看看
附上demo地址:https://github.com/landonzeng/AppMetricsDemo
相关文章:
听云支持.NET Core的应用性能监控
下一个计划 : .NET/.NET Core应用性能管理
ASP.NET Core之跨平台的实时性能监控
ASP.NET Core之跨平台的实时性能监控(2.健康检查)
应用程序的8个关键性能指标以及测量方法
使用Metrics监控应用程序的性能
原文:http://www.cnblogs.com/landonzeng/p/7904402.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
本文分享自微信公众号 - dotNET跨平台(opendotnet)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
7、Docker监控方案(cAdvisor+InfluxDB+Grafana)
一、组件介绍
我们采用现在比较流行的cAdvisor+InfluxDB+Grafana组合进行Docker监控。
1、cAdvisor(数据采集)
开源软件cAdvisor(Container Advisor)是用于监控容器运行状态的利器之一,该项目主页为https://github.com/google/cadvisor,它被用于多个与docker相关的开源项目中。实际上在Kubernetes系统中,cAdvisor已经被默认集成到了kubelet组件内。cAdvisor提供了web界面可供浏览器访问,在接下来的环境中我们会部署CAdvisor来收集数据信息。
2、Influxdb(数据存储)
Influxdb是用Go语言编写的一个开源的分布式时序、事件和指标数据库,不需要外部依赖,该项目的主页为https://www.influxdata.com。
它有三大特性:
- 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等)。
- 度量(Metrics):对实时大量数据进行计算。
- 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。
同时,它还有以下几大特点:
- schemaless(无结构),可以是任意数量的列;
- min, max, sum, count, mean, median 一系列函数,方便统计;
- Native HTTP API, 内置http支持,使用http读写;
- Powerful Query Language 类似sql;
- Built-in Explorer 自带管理工具。
3、Grafana(数据展示)
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。其项目官方地址为https://grafana.com。
二、组件安装
1、安装流程
- 创建自定义网络monitor(自定义网络名称),确保各容器都处于monitor网络;
- 创建Influxdb容器,创建数据用户grafana:grafana、数据库:vadvisor;
- 创建cAdvisor容器;
- 创建Grafana容器,配置grafana;
2、安装部署
a、创建网络
[root@localhost ~]# docker network create monitor
46d9e7c32080ac35e1d3034ecf4edf2af804de9352eca37373f7437e37b1368d
b、创建influxdb容器
[root@localhost ~]# docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb
a0fdc618d380ece7dabd7f1f802935502d0c6ae3f606216afed5dafc43ea8da5
c、访问influxdb
通过容器的8083端口访问web页面。
d、创建数据库cadvisor和用户
cadvisor数据库用于存储数据,用户用于grafana上进行连接,后续会用到此用户。
e、创建cadvisor容器
$docker run -d \
--name=cadvisor \
--net monitor \
-p 8080:8080 \
--mount type=bind,src=/,dst=/rootfs,ro \
--mount type=bind,src=/var/run,dst=/var/run \
--mount type=bind,src=/sys,dst=/sys,ro \
--mount type=bind,src=/var/lib/docker/,dst=/var/lib/docker,ro \
google/cadvisor \
-storage_driver=influxdb \
-storage_driver_db=cadvisor \
-storage_driver_host=influxdb:8086
查看容器是否创建成功:
访问cadvisor
通过8081端口访问cadvisor:
f、安装grafana容器
docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
g、访问grafana
3、容器监控
a、添加数据源
b、制作dashboard
新建dashboard,选择类型为Graph:
c、添加监控指标
d、制作模板
按照c步骤中添加各个指标,然后做成模板,后续你想监控哪个容器就直接替换container_name即可,是不是棒棒哒?
到这里cAdvisor+InfluxDB+Grafana容器监控系统就部署完成了,是不是非常简单?
但是,要做好容器的监控,知道这些还远远不行,我们不希望每次都手动去添加吧?如果有成千上万个容器,到那个时候该怎么监控呢?肯定是一种自动添加方式了,而不是原始的手工操作哦。
CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统
CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
利用docker compose组合应用并利用scale可以快速对容器进行扩充,而docker compose启动的服务容器都在同一台宿主机上,对于一个宿主机上运行多个容器应用时,容器的运行情况,如:cpu使用率,内存使用率,网络状态,磁盘空间等一系列随时间变化的时序数据信息,都需要进行了解,因此监控是必须的。
容器监控方案选择
对于容器的监控方案可谓多种多样,除了docker本身自带的 docker stats 命令,还有Scout,Data Dog,Sysdig Cloud,Sensu Monitoring Framework,CAdvisor等都可以对容器进行监控。
通过 docker stats 命令可以很方便的看到当前宿主机上所有容器的cpu,内存,以及网络流量等数据。但 docker stats 命令的缺点是只是统计当前宿主机的所有容器,获取的数据是实时的,没有地方存储,也没有报警功能。
而Scout,Data Dog,Sysdig Cloud虽然都提供了较完善的服务,但是它们都是托管的服务且都是收费的,Sensu Monitoring Framework集成度较高,也免费,但是部署过于复杂,综合考虑选择CAdvisor做监控工具。
CAdvisor出自Google,优点是开源产品,监控指标齐全,部署方便,而且有官方的docker镜像。缺点是集成度不高,默认只在本地保存2分钟数据。不过,可以加上InfluxDB存储数据,对接Grafana展示图表,比较便利搭建容器监控系统,数据收集和图表展示效果良好,对系统性能也几乎没什么影响。
CAdvisor + InfluxDB + Grafana搭建容器监控系统
CAdvisor
CAdvisor是一个容器资源监控工具,包括容器的内存,cpu,网络IO,磁盘IO等,同时提供了一个WEB页面用于查看容器的实时运行状态。CAdvisor默认存储2分钟的数据,而且只是针对单物理机,不过,CAdvisor提供了很多数据集成接口,支持InfluxDB,Redis,Kafka,Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存储起来。
CAdvisor功能主要有两点,展示Host,容器两个层次的监控数据和展示历史变化
InfluxDB
InfluxDB是用Go语言编写的一个开源分布式时序,事件和指标数据库,无需外部依赖。
由于CAdvisor默认只在本地保存最近2分钟的数据,为了持久化数据和统一收集展示监控数据,需要将数据存储到InfluxDB中。InfluxDB是一个时序数据库,专门用于存储时序相关数据,很适合存储CAdvisor数据,而且CAdvisor本身提供了InfluxDB集成的方法,在启动容器时指定配置即可。
InfluxDB主要功能:
基于时间序列,支持与时间有关的相关函数
可度量性,可以实时对大量数据进行计算
基于事件,支持任意的事件数据
InfluxDB主要特点:
无结构
可以是任意数量的列
可拓展
支持min,max等一系列的函数,方便统计
原生的HTTP支持,内置HTTP API
强大的类sql语法
Granfana
Grafana是一个开源的数据监控分析可视化平台,支持多种数据源配置(如InfluxDB,MySQL,Elasticserach,OpenTSDB,Graphite等)和丰富的插件及模板功能,支持图表权限控制和报警。
Grafana主要特点
灵活丰富的图形化选项
可以混合多种风格
支持白天和夜间模式
多数据源
CAdvisor负责收集容器随时间变化的数据
InfluxDB负责存储时序数据
Grafana负责分析和展示时序数据
安装部署
部署InfluxDB服务
启动InfluxDB的服务容器:
docker run -d --name influxdb -p 8086:8086 \
-v /data/influxdb:/var/lib/influxdb \
--hostname influexdb \
influxdb
在容器中创建test数据库和root用户
docker exec -it influxdb influx
> CREATE DATABASE "test"
> CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
部署CAdvisor
启动CAdvisor的服务容器:
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest \
-storage_driver=influxdb \
-storage_driver_host=influxdb:8086 \
-storage_driver_db=test \
-storage_driver_user=root \
-storage_driver_password=root
服务容器起来后可通过浏览器访问 http:///ip:8080
部署Grafana
启动Grafana服务容器:
docker run -d -p 3000:3000 \
-v /data/grafana:/var/lib/grafana \
--link=influxdb:influxdb \
--name grafana grafana/grafana
直接运行该命令后有可能会发现容器并没有启起来,通过 docker logs 命令会发现”mkdir: can’t create directory ‘/var/lib/grafana/plugins’: Permission denied“的错误,其实就是没有 数据卷对应的主机上 /data/grafana 的权限,可以在运行启动命令前先创建 /data/grafana 目录并给定权限777,或者通过”docker run —entrypoint “id” grafana/grafana“ 查看uid,gid,groups (默认为472),然后通过”chown -R 472:472 /data/grafana“修改权限。
Grafana正常启动后就可以 http://ip:3000 访问,出现以下的登录页面,初次访问需要修改密码,默认用户名密码为:admin/admin
Docker Compose集成部署
准备docker-compose.yml文件
version: '3.1'
volumes:
grafana_data: {}
services:
influxdb:
image: influxdb
restart: always
environment:
- PRE_CREATE_DB=cadvisor
ports:
- "8086:8086"
expose:
- "8090"
- "8099"
volumes:
- ./data/influxdb:/data
cadvisor:
image: google/cadvisor
links:
- influxdb:influxdb-host
command: -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb-host:8086
restart: always
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
grafana:
user: "104"
image: grafana/grafana
restart: always
links:
- influxdb:influxdb-host
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/data
environment:
- HTTP_USER=admin
- HTTP_PASS=admin
- INFLUXDB_HOST=influxdb-host
- INFLUXDB_PORT=8086
- INFLUXDB_NAME=cadvisor
- INFLUXDB_USER=root
- INFLUXDB_PASS=root
在docker-compose.yml文件目录运行以下命令启动服务:
docker-compose up -d
-d指定在后台启动,初次启动可以不加可以在控制台查看启动日志,当然后台启动也可以通过“docker-compose logs”进行查看启动日志。
服务正常启动后就可以 http://ip:3000 访问Granafa,在Home Dashboard页面点击添加data source
配置InfluxDB连接信息,当然在配置连接信息前需要进入InfluxDB容器创建相应的cadvisor数据库和用户root/root
在容器中创建cadvisor数据库和root用户
docker exec -it influxdb-contianer-id influx
> CREATE DATABASE "cadvisor"
> CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
配置连接InfluxDB连接:
数据源配好之后可以回到Home Dashboard添加添加dashboard图表展示监控信息,Grafana提供了丰富的图片模板对监控数据进行展示。
添加dashboard:
可选模板:
编辑图表:
配置监控cadvisor容器的内存使用情况的图表展示,配置好之后点击保存就可以了。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注小编行业资讯频道,感谢您对小编的支持。
今天关于cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台和docker监控软件cadvisor的主要功能的分享就到这里,希望大家有所收获,若想了解更多关于.Net Core 2.*+ InfluxDB+Grafana+App Metrics实时性能监控、.Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控、7、Docker监控方案(cAdvisor+InfluxDB+Grafana)、CAdvisor + InfluxDB + Grafana是怎么搭建Docker容器监控系统等相关知识,可以在本站进行查询。
本文标签: