我正在尝试将Azure App insights service集成到service fabric App中,用于日志记录和检测。我正在本地VM上运行fabric代码。我完全遵循了这里的文档[场景2]。docs.microsoft.com上的其他资源似乎也指明了相同的步骤。[例如:https://docs.microsoft.com/en-us/Azure/service-fabric/service-fabric-diagnostics-event-aggregation-eventflow出于某种原因,我在App Insights中看不到任何事件条目。执行此操作时,代码中没有错误:
ServiceEventSource.Current.ProcessedCountMetric("synced",sw.ElapsedMilliseconds, crc.DataTable.Rows.Count);
EventFlowConfig.json内容
{ "inputs": [ { "type": "EventSource", "sources": [ { "providerName": "Microsoft-ServiceFabric-Services" }, { "providerName": "Microsoft-ServiceFabric-Actors" }, { "providerName": "mystatefulservice" } ] } ], "filters": [ { "type": "drop", "include": "Level == Verbose" } ], "outputs": [ { "type": "ApplicationInsights", // (replace the following value with your AI resource's instrumentation key) "instrumentationKey": "XXXXXXXXXXXXXXXXXXXXXX", "filters": [ { "type": "metadata", "metadata": "metric", "include": "ProviderName == mystatefulservice && EventName == ProcessedCountMetric", "operationProperty": "operation", "elapsedMilliSecondsProperty": "elapsedMilliSeconds", "recordCountProperty": "recordCount" } ] } ], "schemaVersion": "2016-08-11" }
在ServiceEventSource.cs中
[Event(ProcessedCountMetricEventId, Level = EventLevel.Informational)]
public void ProcessedCountMetric(string operation, long elapsedMilliSeconds, int recordCount)
{
if (IsEnabled())
WriteEvent(ProcessedCountMetricEventId, operation, elapsedMilliSeconds, recordCount);
}
编辑从“Program.cs in fabric stateful service”添加诊断管道代码
using (var diagnosticsPipeline =
ServiceFabricDiagnosticPipelineFactory.CreatePipeline($"{ServiceFabricGlobalConstants.AppName}-mystatefulservice-DiagnosticsPipeline")
)
{
ServiceRuntime.RegisterServiceAsync("mystatefulserviceType",
context => new mystatefulservice(context)).GetAwaiter().GetResult();
ServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id,
typeof(mystatefulservice).Name);
// Prevents this host process from terminating so services keep running.
Thread.Sleep(Timeout.Infinite);
}
事件源是一个棘手的技术,我已经使用它一段时间了,总是有问题。配置看起来不错,没有访问环境就很难调查,所以我会提出我的建议。
你必须注意以下几点:
>
如果您正在侦听来自其他进程的etw事件,则您的进程必须使用具有“性能日志用户”权限的用户运行。检查您的服务在哪个标识上运行,以及如果它是性能日志用户的一部分,则检查谁有权创建事件会话以侦听这些事件。
是否有写入此事件日志的方法: 或者至少是其他一些Windows默认日志,在那里我不必注册事件源?
Azure应用程序洞察或日志分析的用例是什么? 我正在使用APIM和Azure函数,并希望对请求执行日志记录。应用洞察和日志分析哪一个最合适? https://docs.microsoft.com/en-gb/Azure/Azure-monitor/overview 更新 特别是关于APIM使用的Azure应用程序洞察与日志分析的任何信息?
我想有一个共享的应用程序insights实例,将保存来自不同微服务运行的所有日志。 或者说,共享应用程序insights实例并将所有日志和遥测都放在一堆中是不是一个坏主意?
我有一个java web应用程序(springboot应用程序),我想在其中将日志推送到Azure中的应用程序insights。我使用logback作为我的日志框架,因为它是由SpringBoot本地支持的。我关注了下面的博客,以便为我的web应用程序集成applicationInsights。 https://github.com/azurecat-gsi/devcamp/tree/master
在Azure Portal上,在我的App Insights/Logs视图中,我可以这样查询App数据: 函数在文章app()expression in Azure Monitor Query中进行了描述。 kusto.explorer不理解函数,这似乎是因为它是Azure Monitor中的附加操作符之一。 我如何用kusto.explorer查询我的应用程序洞察/日志?我不能使用,因为它是Az
唯一可以解决这一问题的方法是在startup.configure()中添加下面一行代码: 上面的解决方案是不可取的,因为我们希望根据环境不同地配置日志级别,因此基于配置的解决方案将是首选的。此外,我猜测问题是配置相关的,因为它在本地运行良好。在Azure中没有特殊的配置。 下面是整个startup.configure():