Skip to content
Enabling getting telemetry data for .NET Core application running inside containers that managed by Kubernetes.
C# Other
  1. C# 99.2%
  2. Other 0.8%
Branch: develop
Clone or download

README.md

Microsoft Application Insights for Kubernetes

This repository has code for Application Insights for Kubernetes, which works on .NET Core applications within the containers, managed by Kubernetes, on Azure Container Service.

Note: Microsoft Application Insights for Kubernetes (this library) is an enhancement to the Microsoft Application Insights. You can choose to run Application Insights without this library in Kubernetes cluster too. However, when using Microsoft Application Insights for Kubernetes, you will see Kubernetes related properties like Pod-Name, Deployment ... on all your telemetry entries. Proper values will also be set to make use of the rich features like enabling the Application Map to show the multiple micro services on the same map.

Continuous Integration Status

Rolling Build Nightly Build
Rolling-Build Status Nightly-Build Status

Get Started

Prerequisite

Instrument an ASP.NET Core application

These are the basic steps to instrument an ASP.NET Core application to enable Application Insights for Kubernetes. You will need to run the application in containers managed by Kubernetes to see the change.

  1. Add reference to Application Insights SDK and Application Insights for Kubernetes:

    dotnet add package Microsoft.ApplicationInsights.AspNetCore
    dotnet add package Microsoft.ApplicationInsights.Kubernetes
  2. Enable Application Insights and Application Insights for Kubernetes Enricher in Startup.cs:

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddApplicationInsightsTelemetry("----Your Application Insights Instrumentation Key ----");
        services.AddApplicationInsightsKubernetesEnricher();
        services.AddMvc();
        ...
    }
  3. Build the application in containers, then deploy the container with Kubernetes.

Notes: Those steps are not considered the best practice to set the instrumentation key for application insights. Refer to Enable Application Insights server-side telemetry for various options. Also, consider deploy Kubernetes Secrets to secure it.

Walk-through

Both ASP.NET Core and .NET Core applications are supported.

  • For ASP.NET Core Application: Refer to Getting Started for a simple walk-through.

  • For .NET Core Application: Refer to Getting Started for a simple walk-through.

  • Follow this example for Role-based access control (RBAC) enabled Kubernetes clusters.

Configuration Details

Customize configurations are supported starting with version 1.0.2 of the ApplicationInsights.Kubernetes package. There are several ways to customize the settings. For example:

  1. Using code:

    services.AddApplicationInsightsKubernetesEnricher(option=> {
        option.InitializationTimeout = TimeSpan.FromSeconds(15);
    });
  2. Using appsettings.json:

    {
        "Logging": {
            // ...
        },
        // Adding the following section to set the timeout to 15 seconds
        "AppInsightsForKubernetes": {
            "InitializationTimeout": "00:00:15"
        }
    }
  3. Using environment variables:

    AppInsightsForKubernetes__InitializationTimeout=3.1:12:15.34

    All the related configurations have to be put in a section named AppInsightsForKubernetes. The supported keys/values are listed below:

    Key Value/Types Default Value Description
    InitializationTimeout TimeSpan 00:02:00 Maximum time to wait for spinning up the container. Accepted format: [d.]hh:mm:ss[.fffffff].

The configuration uses the ASP.NET Core conventions. Refer to Configuration in ASP.NET Core for more information.

Verify the cluster configuration (Linux Container only)

Use the troubleshooting image to verify the cluster is properly configured.

Learn more

Next step

Profile your application for performance improvement using Application Insights Profiler for Linux.

Contributing

Report issues

Please file bug, discussion or any other interesting topics in issues on GitHub.

Troubleshooting

When Microsoft.ApplicationInsights.Kubernetes doesn't work properly, you can turn on self-diagnostics to see the traces in Kubernetes' logs. Refer to How to enable self diagnostics for ApplicationInsights.Kubernetes for instructions.

Developing

Please refer the Develop Guide.


This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

You can’t perform that action at this time.