From 56e68c0f1b9ff192e61357ef7208b42da5d6de71 Mon Sep 17 00:00:00 2001 From: Nizar Qamar Date: Wed, 10 May 2017 03:30:51 -0700 Subject: [PATCH] Adding content to the readme file --- README.md | 156 ++++++++++++++++++- media/readme/context-for-containers.png | Bin 0 -> 21810 bytes media/readme/context-for-native-services.png | Bin 0 -> 37031 bytes 3 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 media/readme/context-for-containers.png create mode 100644 media/readme/context-for-native-services.png diff --git a/README.md b/README.md index 8624b3d..a5765ea 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,155 @@ -# Contributing +[context-screenshot-for-containers]: ./media/readme/context-for-containers.png +[context-screenshot-for-native-services]: ./media/readme/context-for-native-services.png -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. +# Microsoft Application Insights for Service Fabric +This repository hosts code for functionality that augments Application Insights telemetry experience for Service Fabric. + +## Problem Statement +[Application Insights](http://azure.microsoft.com/services/application-insights/) is a service that lets you monitor your live application's performance and usage. ApplicationInsight SDKs is a family of nuget packages that lets you collect and send telemetry from your applications. Information about SDKs for different platforms and languages is available at the [Application Insights SDK page](https://github.com/Microsoft/ApplicationInsights-home). + +When the above mentioned SDKs collect application telemetry, they do not assume and record an application specific context because the context is environment specific. For microservices running inside service fabric, it is important to be able to recognize what service context the telemetry is generated in. For example request or dependency telemetry would not make sense without context information like service name, service type, instance / replica ids etc. + +## Solving the context problem +This repo provides code for a telemetry initializer (and some associated utility classes), shipped as nuget packages, specifically designed for Service Fabric. The initializer when used as described in the following sections, automatically augments telemetry collected by the different application insights SDKs that might be added to a service. For general information on Application Insights Telemetry Initializers follow this [blog entry](http://www.apmtips.com/blog/2014/12/01/telemetry-initializers/). + +## Nuget Packages +This repository produces the following two nuget packages: +* [**Microsoft.ApplicationInsights.ServiceFabric.Native**](https://www.nuget.org/packages/Microsoft.ApplicationInsights.ServiceFabric.Native/1.0.0-beta2) - For use with Service Fabric's [native reliable services](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-introduction). +* [**Microsoft.ApplicationInsights.ServiceFabric**](https://www.nuget.org/packages/Microsoft.ApplicationInsights.ServiceFabric/1.0.0-beta2) - For use with [Guest Executable](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-deploy-existing-app) and [Guest container](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-containers-overview) services (lift and shift scenarios). + +## Scope +* This repository and the associated nuget packages, for now, only deals with `.Net Framework` and `.Net Core` applications. +* The nuget packages does **not** auto-collect or generate any telemetry. It merely adds-to the telemetry generated by other sources - such as [.Net Web SDK](https://github.com/Microsoft/ApplicationInsights-dotnet-server/) etc. or generated by the user directly. + +## `Microsoft.ApplicationInsights.ServiceFabric`- For Service Fabric Lift and Shift Scenarios +You can deploy almost any existing application to Service Fabric as either a guest executable or guest container service. These are also sometimes referred to as lift and shift applications. Add the `Microsoft.ApplciationInsights.ServiceFabric` nuget to your guest executable / container services. + +### .Net Framework +For.Net applications, applying the nuget package will automatically add the telemetry initializer to the `ApplicationInsights.config` file. The following sample shows the new entry added in context of other entries added by other AI SDK nugets. + +``` + + + ... + + + + + + + + + + + + +``` + +### .Net Core +The AI .Net Core SDK's configuration model is quite different from .Net framework's AI SDK. Almost all configuration for .NET Core is done in code. For example the AI SDK for ASP.net Core provides UseApplicationInsights() utility method that lets you set things up in code. When using the service fabric specific nuget package, simply make sure to register the ServiceFabricTelemetryInitializer through dependency injection before calling UseApplicationInsights() method as shown below: + +``` +public static void Main(string[] args) +{ + var host = new WebHostBuilder() + .UseKestrel() + + // Adding Service Fabric Telemetry Initializer + .ConfigureServices(services => services.AddSingleton((serviceProvider) => new FabricTelemetryInitializer())) + + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseIISIntegration() + .UseStartup() + + // Configuring Applciation Insights + .UseApplicationInsights() + + .Build(); + + host.Run(); +} + +``` + +The nuget package reads the context from environment variables provided to the guest executable / guest container. The context added looks like the following: + +![Context fields for guest containers as shown on application insights portal][context-screenshot-for-containers] + +## `Microsoft.ApplicationInsights.ServiceFabric.Native` - For Service Fabric Reliable Services +Using reliable services framework can give the user, among other things, super high resources density, where a single process may host multiple microservices or even multiple instances of a single service. This is different from lift and shift scenarios where likely a single container instance is running an instance of a single microservice. `Microsoft.ApplciationInsights.ServiceFabric.Native` relies on `Microsoft.ApplicationInsights.ServiceFabric` nuget but provides additional utility methods that let you propagate the context from the [ServiceContext](https://docs.microsoft.com/en-us/dotnet/api/system.fabric.servicecontext?view=servicefabric-5.5.216) object to the telemetry initializer. + +### .Net Framework +Because `Microsoft.ApplicationInsights.ServiceFabric.Native` package installs the `Microsoft.ApplicationInsights.ServiceFabric` package as dependency, the telemetry initializer would already to registered in the ApplicationInsights.config file as described in the section for `Microsoft.ApplicationInsights.ServiceFabric` package above. In your service entry points, you should use the `FabricTelemetryInitializerExtension.SetServiceCallContext(ServiceContext)` provided by `Microsoft.ApplicationInsights.ServiceFabric.Native` package. This will make sure that desired context is retrieved from the `ServiceContext` object is propagated through all threads spawned from the service entry-point forth and is added to the outgoing telemetry. + +``` +protected override IEnumerable CreateServiceInstanceListeners() +{ + FabricTelemetryInitializerExtension.SetServiceCallContext(this.Context); + + return new ServiceInstanceListener[] + { + new ServiceInstanceListener(serviceContext => new OwinCommunicationListener(Startup.ConfigureApp, serviceContext, ServiceEventSource.Current, "ServiceEndpoint")) + }; +} +``` + +-OR- + +``` +protected override Task RunAsync(CancellationToken cancellationToken) +{ + FabricTelemetryInitializerExtension.SetServiceCallContext(this.Context); + + return base.RunAsync(cancellationToken); +} +``` + +### .Net Core +For .net Core, simply create the telemetry initializer using the `FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(ServiceContext)`and register it as an `ITelemetyInitializer` for dependency injection before any calls that configure the applciation insights pipeline. + +``` +protected override IEnumerable CreateServiceInstanceListeners() +{ + return new ServiceInstanceListener[] + { + new ServiceInstanceListener(serviceContext => + new WebListenerCommunicationListener(serviceContext, "ServiceEndpoint", url => + { + ServiceEventSource.Current.ServiceMessage(serviceContext, $"Starting WebListener on {url}"); + + return new WebHostBuilder().UseWebListener() + .ConfigureServices( + services => services + .AddSingleton(serviceContext) + .AddSingleton((serviceProvider) => FabricTelemetryInitializerExtension.CreateFabricTelemetryInitializer(serviceContext))) + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseStartup() + .UseApplicationInsights() + .UseUrls(url) + .Build(); + })) + }; + +} + +``` +The context added looks like: +![Context fields for reliable services as shown on application insights portal][context-screenshot-for-native-services] + +**Note:** `Cloud role name` and `Cloud role instance` shown in the screenshot above, represent service and service instance respectively, and are special fields in Application Insights schema that are used as aggregation units to power certain experiences like Application map. + + +## Customizing Context: +< to be added > + +## Branches +* `master` contains the latest published release located on NuGet. +* `develop` contains code for the next release. + +## Contributing +### Report Issues +Please file bugs, discussion or any other interesting topics in [issues](https://github.com/Microsoft/ApplicationInsights-servicefabric/issues). + +### Developing +We strongly encourage contributions. +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. \ No newline at end of file diff --git a/media/readme/context-for-containers.png b/media/readme/context-for-containers.png new file mode 100644 index 0000000000000000000000000000000000000000..eacad0a63b60d5de3410fd70008d62697b1f872c GIT binary patch literal 21810 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 literal 0 HcmV?d00001 diff --git a/media/readme/context-for-native-services.png b/media/readme/context-for-native-services.png new file mode 100644 index 0000000000000000000000000000000000000000..52e50d6b903bdca4116beed232c940d7c2b16562 GIT binary patch literal 37031 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 TP{;!g?Qr74GS7