服务架构和应用洞察

Div*_*a S 4 azure-application-insights azure-service-fabric

我是服务Fabric的新手,并尝试将我的Windows服务应用程序集成到服务结构中.对于日志记录信息,我们计划使用Application Insights.但如果我通过我的SF应用程序发送事件,则不会记录事件.同时,通过普通的控制台/ Windows应用程序,我可以将消息记录到applicationinsights,并可以从那里查看.

然后我尝试在azure环境中创建一个VM,并在那里创建SF应用程序并将日志信息发送给AI,并且它成功运行.我将相同的代码库复制到我的本地机器并运行它,它无法正常工作.我不确定它是否与任何防火墙或代理设置有关.任何人都可以帮忙吗?

我已经使用nuget包在我的机器上安装了Microsoft.ApplicationInsights dll.我使用的版本是2.2.0.我正在使用.Net framework 4.6.1

yoa*_*ape 6

您可以查看EventFlow以帮助您从SF服务捕获Service Fabric ETW事件并将它们发送到Application Insights.

设置起来非常简单,只需将Microsoft.Diagnostics.EventFlow.ServiceFabricNuGet 添加到Service Fabric服务项目中,然后设置pipline即可

public static void Main(string[] args)
{
    try
    {
        using (var diagnosticsPipeline = ServiceFabricDiagnosticPipelineFactory.CreatePipeline("MyApplication-MyService-DiagnosticsPipeline"))
        {
            ServiceRuntime.RegisterServiceAsync("MyServiceType", ctx => new MyService(ctx)).Wait();

            ServiceEventSource.Current.ServiceTypeRegistered(Process.GetCurrentProcess().Id, typeof(MyService).Name);

            Thread.Sleep(Timeout.Infinite);
        }
    }
    catch (Exception e)
    {
        ServiceEventSource.Current.ServiceHostInitializationFailed(e.ToString());
        throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

在你的eventflow.config,你可以再安装应用程序洞察为输出:

{
    "inputs": [
        {
            "type": "EventSource",
            "sources": [
                 { "providerName": "Your-Service-EventSource" }
           ]
        },
    ],
    "filters": [
        {
            "type": "drop",
            "include": "Level == Verbose"
        }
    ],
    "outputs": [
        // Please update the instrumentationKey.
        {
            "type": "ApplicationInsights",
            "instrumentationKey": "00000000-0000-0000-0000-000000000000"
        }
    ],
    "schemaVersion": "2016-08-11",
    "extensions": []
}
Run Code Online (Sandbox Code Playgroud)