!!! 本文已参与「新人创作礼」活动,一起开启掘金创作之路。更多干货文章,可以访问 菜鸟厚非
介绍
App.Metrics 是一款开源的支持 .NET Core 的监控插件,它还可以支持跑在 .NET Framework 上的应用程序(版本 >= 4.5.2)。
本篇介绍 App.Metrics + InfluxDB + Grafana,构建性能监控。
环境信息
本篇博客操作全部在Linux下部署
| 服务器 | 说明 |
|---|---|
| 192.168.200.123 | influxdb 服务器,存储数据 |
| 192.168.200.167 | grafana 服务器,展示数据 |
| 192.168.200.164 | .NetCore 3.1 + Metrics 4.2,收集数据 |
前置条件
influxdb 、grafana 部署请参照博主其他博客,本篇不做介绍
- influxdb(部署信息) UI:http://192.168.200.123:8083/ User:root root 数据端口:http://192.168.200.123:8086 DB:AppMetricsDB
- grafana(部署信息)
UI: http://192.168.200.167:3000/login
User:admin admin
部署
一、.Net Core API
- 安装 packge
App.Metrics 4.2 、App.Metrics.AspNetCore.All 4.2 、App.Metrics.Reporting.InfluxDB 4.2
- 配置信息
{
"AppMetrics": {
"IsOpen": true,
"DatabaseName": "AppMetricsDB",
"ConnectionString": "http://192.168.200.123:8086",
"UserName": "root",
"Password": "root",
"App": "ad-api",
"Env": "Development"
}
}
- 注册服务 在 starup 类中 ConfigureServices 方法注册
// AppMetrics
bool isOpenMetrics = Convert.ToBoolean(Configuration["AppMetrics:IsOpen"]);
if (isOpenMetrics)
{
string database = Configuration["AppMetrics:DatabaseName"];
string connStr = Configuration["AppMetrics:ConnectionString"];
string app = Configuration["AppMetrics:App"];
string env = Configuration["AppMetrics:Env"];
string username = Configuration["AppMetrics:UserName"];
string password = Configuration["AppMetrics:Password"];
var uri = new Uri(connStr);
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.AddMetricsReportingHostedService();
services.AddMetricsTrackingMiddleware();
services.AddMetricsEndpoints();
}
- 使用服务 在 starup 类中 Configure 方法启用
// AppMetrics
bool isOpenMetrics = Convert.ToBoolean(Configuration["AppMetrics:IsOpen"]);
if (isOpenMetrics)
{
app.UseMetricsAllEndpoints();
app.UseMetricsAllMiddleware();
}
- 启动程序 启动程序后,Metrics 会向 influxdb 实时写入程序运行资源信息。如果不知道是否写入成功,可以查看 influxdb log 进行查看。
二、添加面板
- 添加数据源,打开 grafana 进行数据源添加,配置 influxdb 信息,并测试是否成功
- 配置面板。添加Dashboards,可以使用导入 grafana.com/dashboards/… 。
官方有许多配置好的 Dashboards 可以直接拿来用
三、查看面板
对 API 项目进行访问或者压测模拟访问,可以根据指定条件查看指定程序信息