编程知识 购物 网址 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> C# -> Ocelot监控 -> 正文阅读

[C#]Ocelot监控

网关的作用之一,就是有统一的数据出入口,基于这个功能,我们可以在网关上配置监控,从而把所有web服务的请求应答基本数据捕获并展显出来。
关于web的监控,一般的做法是采集数据并保存,然后通过图表的方式展示出来,所使用的数据库一般是时序数据库Graphite,InfluxDB(https://portal.influxdata.com/downloads),OpenDSDB等,本文使用的是InfluxDB,展示数据一般采用一个图形化框架,本文用的是Grafana(https://grafana.com/get)
首先按上面链接下载InfluxDB和Grafana
InfluxDB下载后如下图


关于InfluxDB的操作,有相应的命令,可以参考官方文档,这里不赘述,我们只在这里创建一个数据库MetricsDB即可
Grafana下载后,在Bin目录下grafana-server.exe为启动程序,启动即可
在浏览器里输入http://localhost:3000,用户名和密码都是admin(进入后可修改)
添加DataSource


添加Dashboards,可以使用导入https://grafana.com/dashboards/2125




点击Import即可进行图形视图面板
我们使用的是App.Metrics(https://www.app-metrics.io)的包来实现监控
在OcelotGateway项目中,添加引用下面五个Nuget包
App.Metrics主包
App.Metrics.AspNetCore.Endpoints
App.Metrics.AspNetCore.Reporting
App.Metrics.AspNetCore.Tracking
App.Metrics.Reporting.InfluxDB
Startup.cs




 1 using Microsoft.AspNetCore.Builder;
 2 using Microsoft.AspNetCore.Hosting;
 3 using Microsoft.Extensions.Configuration;
 4 using Microsoft.Extensions.DependencyInjection;
 5 using Ocelot.DependencyInjection;
 6 using Ocelot.Middleware;
 7 using Ocelot.JWTAuthorizePolicy;
 8 using App.Metrics;
 9 using System;
10 
11 namespace OcelotGateway
12 {
13 public class Startup
14 {
15 public Startup(IConfiguration configuration)
16 {
17 Configuration = configuration;
18 }
19 public IConfiguration Configuration { get; }
20 public void ConfigureServices(IServiceCollection services)
21 {
22 #region 注放Metrics 
23 var metrics = AppMetrics.CreateDefaultBuilder()
24 .Configuration.Configure(
25 options =>
26 {
27 options.AddAppTag("RepairApp");
28 options.AddEnvTag("stage");
29 })
30 .Report.ToInfluxDb(
31 options =>
32 {
33 options.InfluxDb.BaseUri = new Uri("http://127.0.0.1:8086");
34 options.InfluxDb.Database = "AppMetricsDemo";
35 options.InfluxDb.UserName = "admin";
36 options.InfluxDb.Password = "123456";
37 options.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30);
38 options.HttpPolicy.FailuresBeforeBackoff = 5;
39 options.HttpPolicy.Timeout = TimeSpan.FromSeconds(10);
40 options.FlushInterval = TimeSpan.FromSeconds(5);
41 })
42 .Build();
43 services.AddMetrics(metrics);
44 services.AddMetricsReportScheduler();
45 services.AddMetricsTrackingMiddleware();
46 services.AddMetricsEndpoints();
47 #endregion
48 
49 #region 注放JWT
50 var audienceConfig = Configuration.GetSection("Audience");
51 //注入OcelotJwtBearer
52 services.AddOcelotJwtBearer(audienceConfig["Issuer"], audienceConfig["Issuer"], audienceConfig["Secret"], "GSWBearer");
53 #endregion
54 //注入配置文件,AddOcelot要求参数是IConfigurationRoot类型,所以要作个转换
55 services.AddOcelot(Configuration as ConfigurationRoot);
56 }
57 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
58 {
59 #region Metrics中间件
60 app.UseMetricsAllMiddleware();
61 app.UseMetricsAllEndpoints();
62 #endregion
63 app.UseOcelot().Wait();
64 }
65 }
66 }

View Code
接下来启动AuthenticationAPI,DemoAAPI,DemoBAPI,OcelotGateway,TestClient,请求几次后,查看localhost:3000的监控页面如下:


  C# 最新文章
字符串阵列分别输出元素的索引,原值和长度
格式化你的字符串
C#宣告一个变量
C#中级
拆分一个字符串并把每个字符单独输出
通过手机号定位归属地
C# DBNULL与NULL之间的区别【转】
Xamarin
List,DataTable实现行转列的通用方案
C# 语音识别
上一篇文章      下一篇文章      查看所有文章
加:2017-12-08 23:22:03  更:2017-12-08 23:22:13 
 
360图书馆 软件开发 购物精选 智慧山 阅读网 日历 万年历 2021年3日历
2021/3/6 21:42:13
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识