.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 2.*+ InfluxDB+Grafana+App Metrics实时性能监控的更多相关文章
- 使用App Metrics实现性能监控
App Metrics监控需要安装InfluxDB时序数据库和Grafana可视化分析工具 1.安装InfluxDB 下载地址:https://portal.influxdata.com/downlo ...
- .Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控
最近这段时间一直在忙,没时间写博客,负责了一个项目,从前端到后端一直忙,同时还有其他第几个项目的系统架构要处理. 去年就开始关注net core了,只是平时写写demo,没用在项目中,正好这次机会就用 ...
- 基于 Njmon + InfluxDB + Grafana 实现性能指标实时可视监控
引言 最近逛 nmon 官网时,发现了一个新工具 njmon,功能与 nmon 类似,但输出为 JSON 格式,可以用于服务器性能统计. 可以使用 njmon 来向 InfluxDB 存储服务器性能统 ...
- 【jmeter】基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示
本文主要讲述如何利用JMeter监听器Backend Listener,配合使用InfluxDB+Grafana展示实时性能测试数据 关于JMeter实时测试数据 JMeter从2.11版本开始,命令 ...
- jmeter --- 基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示
转自:https://blog.csdn.net/RickyOne_RR/article/details/50637839 本文主要讲述如何利用JMeter监听器Backend Listener,配合 ...
- 转:基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示
本文主要讲述如何利用JMeter监听器Backend Listener,配合使用InfluxDB+Grafana展示实时性能测试数据 关于JMeter实时测试数据 JMeter从2.11版本开始,命令 ...
- .NetCore使用skywalking实现实时性能监控
一.简介 很久之前写了一篇 <.Net Core 2.0+ InfluxDB+Grafana+App Metrics 实现跨平台的实时性能监控>关于NetCore性能监控的文章,使用Inf ...
- [#] - .Net平台的实时性能监控
App Metricshttps://www.app-metrics.io ASP.NET Core之跨平台的实时性能监控http://www.cnblogs.com/GuZhenYin/p/7170 ...
- 搭建jmeter+influxdb+grafana压测实时监控平台(超详细,小白适用)
1.前言 在使用jmeter做性能测试的时候,监控系统性能的时候,无论是使用插件还是报告生成,都没法实现实时监控.使用JMeter+Influxdb+Grafana可以实现实时监控. 本次环境搭建各软 ...
随机推荐
- Redis长短链接的区别
本文介绍了phpredis中与redis建立连接的两种方式:connect(短连接)和pconnect(长连接)的区别. 问题背景: 项目采用LNMP架构,考虑到数据访问性能问题,因此使用redis来 ...
- Eclipse创建Servers没有Apache选项
help->install new software加入网址是http://download.eclipse.org/releases/Neon,最后一个是你eclipse的版本.得到一系列的插 ...
- LVM卷管理
一.LVM是做什么的 LVM ( Logical Volume Manager ,逻辑卷管理器)LVM 是建立在磁盘和分区之上的一个逻辑层,用来提高磁盘分区管理的灵活性.LVM 可以对磁盘分区按照组的 ...
- P5074 Eat the Trees
思路 同样是插头DP,但是这题因为可以形成多个回路,所以左右括号是没有区别的,只需要01就可以表示了 注意if的嵌套关系 注意全零矩阵也要输出1 代码 #include <cstdio> ...
- kudu_CM安装准备工作
Cloudera Manager简介: hadoop: https://yq.aliyun.com/articles/60759 ----------------------------------- ...
- PHP流协议
目前对PHP流协议的定义是数据传输过程中,不同数据类型采用不同处理函数的技术规范(个人理解)这一规范比起传统文件处理函数来的更规范(诸如fget,fwrite,fopen,fclose等) $opts ...
- i3wm脚本
exec 执行命令 --no-startup-id 有些脚本或者程序不支持启动通知,不加命令,鼠标会长时间空转,60秒左右 exec_always 每次重启i3,使用该命令启动的程序都会重新执行一次, ...
- [Sdwc] 线段
线段有如下两类特点:1 x y, 表示第 x 条线段和第 y 条线段相交 (相交在这里指至少有一个公共点)2 x y,表示第 x 条线段在第 y 条线段的左边,且它们不相交.共有 m 个特点,每个特点 ...
- List,Set,Map在java.util包下都是接口 List有两个实现类:ArrayList和LinkedList Set有两个实现类:HashSet和LinkedHashSet AbstractSet实现了Set
List,Set,Map在java.util包下都是接口 List有两个实现类:ArrayList和LinkedListSet有两个实现类:HashSet和LinkedHashSetAbstractS ...
- 使用horovod构建分布式深度学习框架
最近两周一直在尝试着分布式深度学习的架构,主要的原因一方面是几台机子全是1060卡,利用深度网络在较大数据样本上训练的效率极其低下,所以尝试着将几台机子做成分布式,看看能否提高训练效率:第二方面是有人 ...