Winning with Application Insights Logging

Winning with Application Insights Logging

Introduction

This article will focus on using Azure Application Insights to monitor the real-world business apps. Azure Application Insights is an Application Performance Management (APM) service for developers and DevOps professionals. It is used to monitor an app that is live in real-time.

It supports a variety of platforms including .NET, Node.js, Java, and Python hosted on-premises, hybrid, or any public cloud. Application Insights can be used in two ways to monitor your Application. They are,

  1. Codeless Monitoring
  2. Code-based Monitoring

What can be monitored?

Azure Application insights is ideal for developers to monitor how an application works in real-time from performance to error logs. As an APM tool, it can monitor

  1. Request rates, response times, and failure rates
  2. Exceptions
  3. Pageviews and load performance
  4. Diagnostic trace logs
  5. Custom events and metrics and many more

User can achieve all the above-mentioned monitoring goals with the help of tools in Application insights like Application Map, Live Metrics, Dashboards, etc.,

Codeless Monitoring

In Codeless Monitoring, Users can get to monitor the Application without any modification to the code, provided the application is hosted in an Azure Service like Azure Web App or Azure Virtual Machine. These resources are natively integrated with the Application Insights that can be enabled from the Azure portal itself. Now let us see how to enable Azure Application insights for an Azure Web App

  1. Go to your Azure Web App -> Application Insights
  2. Click Turn on Application insights.
  3. Codeless Monitoring

  4. You can either choose the existing Application Insights instance or create a new one by providing the Name and Location. And Click on Apply to turn on the Application Insights for this Web-App.
  5. Azure Application Insights logging

The Web app will now be enabled with the Application Insights and the user can achieve monitoring goals like live monitoring and failure detection.

Code-based Monitoring

Codeless Application monitoring will be very useful if the application is hosted in Azure Resources like VMs and App Services. Whereas, if the Application is hosted in any other Cloud Service provider or hosting service, then code-based monitoring will be the go-to option. With this monitoring solution, it is possible to monitor the applications or APIs built using

  1. NET Core
  2. NET Framework
  3. JAVA
  4. Python
  5. JS runtime

It is also possible to monitor background services and Client-side JavaScript with the help of Application Insights. Now let us take a .NET Core application and see how to integrate Application Insights.

  1. Create an Azure Application Insights instance in Azure Portal. To create it, click on Create a Resource menu in the left Navigation and Type Application Insights in the Search box.
  2. application insights logging .net core

  3. Now, Give the Name and other details like Resource Group Name, etc., Click Create
  4. Once the Application Insights instance is created, go to Properties in the left side navigation bar to get the Instrumentation key that will be required for our Application to establish the connection
  5. Create Application Insights

  6. Open your .NET Core Application and install the library “ApplicationInsights.AspNetCore” from NuGet Package.
  7. Add AddApplicationInsightsTelemetry(); to the ConfigureServices() method in your Startup class
  8. // This method gets invoked by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // The following line enables Application Insights telemetry collection.
            services.AddApplicationInsightsTelemetry();
    
            // This code adds other services for your application.
            services.AddMvc();
        }
    
  9. To establish a connection between the Application and the Azure Application Insights, we need to provide the Instrumentation key in json as an Environment variable as below
  10. {
          "ApplicationInsights": {
            "InstrumentationKey": ""
          },
          "Logging": {
            "LogLevel": {
              "Default": "Warning"
            }
          }
        }
    
  11. Now, run the Application. Go to the Application Insights instance that was created in the Azure Portal. Go to Live Metrics in the Left Navigation bar.
  12. Run Application Insights

  13. Live Monitoring is on, and you can infer the Application performance from the widgets on key performance indices.
  14. Application Insights Logging

With the help of Live Monitoring, it is possible to monitor a variety of Metrics like Request rate, Request Failure rate, Outgoing requests, Failed Requests, and many more.

Application Insights Logging

By configuring the Application as mentioned above, the user can monitor all the requests and insights sent to Azure Application insights. But when the need is to monitor only the insights which are in the Warning or Error state, it can be achieved by filtering the Log information based on Severity as mentioned below

To filter the logging data, the user must create a builder in the CreateWebHosting() method and add a filter as below code:

//Program.cs
public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
      WebHost.CreateDefaultBuilder(args)
        .UseStartup()
      .ConfigureLogging(
            builder =>
            {
                builder.AddApplicationInsights("ikey");        
        builder.AddFilter
                                 ("", LogLevel.Warning);
            }
        );
}

Once the filtering has been set, the user can log the necessary information from the Controller as below
//ValuesController.cs
public class ValuesController : ControllerBase
{
    private readonly ILogger _logger;

    public ValuesController(ILogger logger)
    {
        _logger = logger;
    }

    // GET api/values
    [HttpGet]
    public ActionResult> Get()
    {
        using (_logger.BeginScope(new Dictionary { { "MyKey", "MyValue" } }))
            {
                _logger.LogWarning("An example of a Warning trace..");
                _logger.LogError("An example of an Error level message");
            }
        return new string[] { "value1", "value2" };
    }
} 

It is also possible to log the data from our logging services by providing the necessary information. This Azure Application Insights Logging can be useful when the need is to monitor the performance of an Application. But When the Application comprises of a variety of Azure Resources and the need is to monitor the whole Application along with Azure resources, Application Insights cannot be the right solution for this scenario.

Here comes the Business activity monitoring in Serverless360 to perform end to end tracking on Azure Serverless Applications.

Business Activity Monitoring

Business Activity Monitoring in Serverless360 is a tool to perform end to end tracking of the Azure Serverless applications. Serverless360 BAM can be instrumented in your business application using the Exposed APIs also available as .Net SDK and Logic App Connector.  Implementing BAM can provide visibility on the messages flowing through the components of the business application like never.

Business Transactions

Every Transaction of an Application will be tracked in a separate section where the status of the transactions can be viewed along with the status of each stage in a transaction.

Business Transactions

It is also possible to view the data flowing through every stage along with the tracking of key business properties.

Analytics & Monitoring

BAM in Serverless360 also offers the capability to monitor the transactions when there is a failure or exception. Users will be notified through the configured Notification channels whenever there is an exception in any of the transactions. Calendric view in Business process monitor helps to understand transaction monitoring history.

application insights exception logging

When there is a need to analyze how the application is performing based on the custom property tracked. The Dashboard in Serverless360 helps the user to create widgets and analyze transactions in a graphical view. User can give the input as a BAM query and get the data as advanced graphical widgets as below

Application Insights Logging

Summary

Application Insights is the best tool for live monitoring of Applications much needed for developers, whereas it is too complex for an operation or support user. Their need would be a tool like Serverless360 to monitor and track the whole Serverless Application with better monitoring and management capabilities. To know more about Serverless360 on how it is better compared with other monitoring solutions offered by Azure, Follow the Links below

  1. Azure Application Insights vs Serverless360
  2. Azure Monitor Vs Serverless360
  3. Service Bus explorer Vs Serveless360

The post Winning with Application Insights Logging appeared first on Serverless360.

Close Menu