我想知道是否有办法看到我的服务架构应用程序发出的所有请求已经在azure服务器上发布,或者至少捕获所有请求并将它们保存在某个地方,我需要像source这样的信息和身体。
提前致谢!
答案 0 :(得分:3)
要查看所有请求和响应,首先需要将它们记录在某个地方。以下是可用的方法:
您可以使用ServiceEventSource记录有价值的信息 然后,您将能够通过附加到SF群集来查看它 VS中的CloudExplorer您可以在这里找到更多信息 - http://bugs.python.org/issue30537。
您可以将VM上载日志安装到Azure存储的WAD扩展,还可以选择将日志发送到Azure Application Insights或Event Hub。查看Debug your Service Fabric application by using Visual Studio。
使用Event aggregation and collection using Windows Azure Diagnostics,您可以让服务将其日志直接发送到分析和可视化平台,和/或存储。其他库(ILogger,Serilog等)可能用于相同的目的,但EventFlow的优点是专为进程内日志收集而设计,并支持Service Fabric服务。
配置OMS后,您将可以访问特定的OMS工作区,从中可以在仪表板中查询或显示数据。 在Log Analytics收到数据后,OMS拥有多个管理解决方案,这些解决方案是预先打包的解决方案,用于监控传入数据,并根据多种方案进行定制。其中包括Service Fabric Analytics解决方案和Containers解决方案,它们是使用Service Fabric群集时诊断和监控的两个最相关的解决方案。在EventFlow和Event analysis and visualization with OMS上找到更多信息。
您可以通过多种方式捕获源和身体,或者您需要的任何东西。您可以在下面找到一些:
如果不这样,请在控制器类上应用ActionFilterAttribute 拥有一个,并在OnActionExecuted方法
在Startup类中添加中间件 -
public static void ConfigureApp(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.Use(async (IOwinContext context, Func<Task> next) =>
{
await next.Invoke();
// log anything you want here
ServiceEventSource.Current.Message($"Response status code = {context.Response.StatusCode}");
});
appBuilder.UseWebApi(config);
}