asp.net core api网关 实时性能监控

asp.net core api网关 实时性能监控

使用InfluxDB、Grafana

Dockerfile 运行 InfluxDB、Grafana

influxdb:
image: influxdb
  ports:
    - "8086:8086"
    - "8083:8083"
  environment:
    - INFLUXDB_DB=TogetherAppMetricsDB
    - INFLUXDB_ADMIN_ENABLED=true
    - INFLUXDB_ADMIN_USER=admin
    - INFLUXDB_ADMIN_PASSWORD=admin
grafana:
  image: grafana/grafana
  ports:
    - "3000:3000"

配置 Grafana

  1. 浏览器打开 <本地ip>:3000,使用默认账号登录
  2. 添加数据源

    在Configuration中点击Add data source按钮,输入你安装的InfluxDB数据库信息

  3. 点击仪表板设置模板

在API网关中App.Metrics

  1. 安装必要的nuget包
> App.Metrics
> App.Metrics.AspNetCore.Endpoints
> App.Metrics.AspNetCore.Reporting
> App.Metrics.AspNetCore.Tracking
> App.Metrics.Reporting.InfluxDB
  1. ConfigureServices 配置

StartUp.cs

public void ConfigureServices(IServiceCollection services)
{
      ...

      services.AddOptions();
      services.Configure<AppMetricsOptions>(Configuration.GetSection("AppMetrics"));

      services.AddAppMetrics(Configuration);
      services.AddOcelot(Configuration);
}

 public void Configure(ILoggerFactory loggerFactory, IApplicationBuilder app, IHostingEnvironment env)
 {

      app.UseMetricsAllEndpoints();
      app.UseMetricsAllMiddleware();

      app.UseOcelot();
 }

ServiceCollectionExtensions.cs

public static class ServiceCollectionExtensions
{
    public static IServiceCollection AddAppMetrics(this IServiceCollection services, IConfiguration configuration)
    {
        var options = services.BuildServiceProvider()
            .GetRequiredService<IOptions<AppMetricsOptions>>()?.Value;
        if (options?.IsOpen == true)
        {
            var uri = new Uri(options.ConnectionString);
            var metrics = AppMetrics.CreateDefaultBuilder().Configuration.Configure(opt =>
            {
                opt.AddAppTag(options.App);
                opt.AddEnvTag(options.Env);
            }).Report.ToInfluxDb(opt =>
            {
                opt.InfluxDb.BaseUri = uri;
                opt.InfluxDb.Database = options.DatabaseName;
                opt.InfluxDb.UserName = options.UserName;
                opt.InfluxDb.Password = options.Password;
                opt.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30);
                opt.HttpPolicy.FailuresBeforeBackoff = 5;
                opt.HttpPolicy.Timeout = TimeSpan.FromSeconds(10);
                opt.FlushInterval = TimeSpan.FromSeconds(5);
            }).Build();

            services.AddMetrics(metrics);
            services.AddMetricsReportScheduler();
            services.AddMetricsTrackingMiddleware();
            services.AddMetricsEndpoints();
        }
        return services;
    }
}

public class AppMetricsOptions
{
    public bool IsOpen { get; set; }
    public string DatabaseName { get; set; }
    public string ConnectionString { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public string App { get; set; }
    public string Env { get; set; }
}

最终效果

参考文章

  1. .NET Core微服务之基于App.Metrics+InfluxDB+Grafana实现统一性能监控
  2. ASP.NET Core Real-time Performance Monitoring
  3. influxdb docker 文档
  4. grafana 官方文档

原文地址:https://www.cnblogs.com/zengande/p/9444284.html

时间: 2024-11-05 18:46:06

asp.net core api网关 实时性能监控的相关文章

ASP.NET Core之跨平台的实时性能监控(2.健康检查)

前言 上篇我们讲了如何使用App Metrics 做一个简单的APM监控,最后提到过健康检查这个东西. 这篇主要就是讲解健康检查的内容. 没看过上篇的,请移步:ASP.NET Core之跨平台的实时性能监控 首先我们来了解一下什么是健康检查(health checks)? 1.什么是健康检查? 健康检查,其实这个名称已经很明确了,它是检查你的应用程序是否健康运行的一种方式.随着当前各类项目越来越多的应用程序正在转向微服务式架构,健康检查就变得尤为关键.虽然微服务体系结构具有许多好处,但其中一个缺

ASP.NET CORE API Swagger+IdentityServer4授权验证

简介 本来不想写这篇博文,但在网上找到的文章博客都没有完整配置信息,所以这里记录下. 不了解IdentityServer4的可以看看我之前写的入门博文 Swagger 官方演示地址 源码地址 配置IdentityServer4服务端 首先创建一个新的ASP.NET Core项目. 这里选择空白项,新建空白项目 等待创建完成后,右键单击项目中的依赖项选择管理NuGet程序包,搜索IdentityServer4并安装: 等待安装完成后,下载官方提供的UI文件,并拖放到项目中.下载地址:https:/

ASP.NET Core API 接收参数去掉烦人的 [FromBody]

在测试ASP.NET Core API 项目的时候,发现后台接口参数为类型对象,对于PostMan和Ajax的Post方法传Json数据都获取不到相应的值,后来在类型参数前面加了一个[FromBody]属性才获取到.但是我看微软官方文档演示代码中并没有添加[FromBody],难道是微软官方文档写错了,按道理应该不会.Google里看到一片篇文章里的一个细节,又追回微软官方文档发现可行,于是记下去掉这个烦人的[FromBody]过程 修改之前测试 后台通过Visual Studio生成ASP.N

详解ASP.NET Core API 的Get和Post请求使用方式

原文:详解ASP.NET Core API 的Get和Post请求使用方式 上一篇文章帮助大家解决问题不彻底导致博友使用的时候还是遇到一些问题,欢迎一起讨论.所以下面重点详细讲解我们常用的Get和Post请求( 以.net core2.2的Http[Verb]为方向 ,推荐该属性路由),如果想验证,直接利用VS2017创建ASP.NET Core API (.net core 2.2),在DefaultController里面操作.文中有些关键字,我是加了粗的,请注意一下. 帮助回忆,Get和P

ASP.NET Core API总结(一)

ASP.NET Core API 问题:当应用收到一个http请求之后,API应用程序是怎么一步步执行的. 注册服务——构造容器——使用服务——创建对象 1.         创建一个新的API之后,properties下面会自动生成这个json文件. 2.         第一步:应用启动的时候,在program.cs文件中执行main函数,进行创建主机.(加载配置文件)——指定Startup类(1.配置应用服务.2.创建请求处理管道) 3.         第二步:执行到Startup类的时

ASP.NET Core API ——Dapper的使用

ASP.NET Core API ——Dapper的使用 简介:Dapper是一个ORM框架,负责数据库和程序语言之间的映射. 使用步骤: l  创建一个IDBConnection的接口对象 l  编写Sql语句的增删改查 l  执行Execute方法 1.       提供一个IDBConnection接口对象 2.       在DB仓库中继承抽象类从而获取IDBConnection对象.继承了抽象类,所以抽象类中的属性可以在子类中使用. 3.       编写Sql语句,使用dapper的

ASP.NET Core之跨平台的实时性能监控

应用程序的8个关键性能指标以及测量方法 最后卖了个小关子,是关于如何监控ASP.NET Core的. 今天我们就来讲讲如何监控它,下面上效果图: 阅读本文需要了解的相关技术与内容: InfluxDb(分布式时序数据库,开源)(注:分布式部分已商业化最新的分布式版本已不在开源,单例的继续开源) Grafana(开源的,功能齐全的度量仪表盘和图形编辑器) App Metrics(主角,开源的支持.NET Core的监控插件,采用管道注入的方式,对代码的入侵性极小) 本文测试环境为Windows64位

【转】ASP.NET Core API 版本控制

几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些data.length操作,以获得items count用于分页逻辑.为了减少HTTP请求的负荷,我们决定在后端(服务器端分页)实现逻辑.在我们这样的情况下,这是没有任何问题的,因为我们在客户端能快速实现.我们在客户端和服务端修改了所有逻辑,并且快速完成所有功能. 但是,您可能会有其他客户端在使用,因为只

MySQL 的实时性能监控利器【转】

操作系统及MySQL数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或MySQL数据库的性能瓶颈,就像你在Linux系统上使用「top,sar,iostat」等命令工具一样,可以立刻定位OS的性能瓶颈是在IO还是CPU上,所以收集/展示这些性能数据就更为重要,那都有哪些重要的实时性能状态指标可以反应出系统和MySQL数据库的性能负载呢? 目前在Linux跑MySQL是大多数互联网公司的标配,以上图片的性能数据指标项是我认为在Linux,MySQ