RU EN
May 23, 2022

OpenTelemetry with Jaeger in .NET Core

Автор:
Nitesh Singhal
Источник:
Просмотров:
6287
OpenTelemetry with Jaeger in .NET Core favorites 0

A step by step guide to integrate OpenTelemetry with ASP.Net core and visualize in Jaeger.

OpenTelemetry is a collection of tools, APIs, and SDKs. Use it to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) to help you analyze your software’s performance and behavior.

In this tutorial, we will look at how it can be integrated with ASP.NET core web project.

We will use Jaeger tool to analyze and visualize the telemetry data.

Let’s get started.

Project Setup

I have set up an API project and a Razor app.

Let’s setup API project first.


API Project

add the required nuget packages:

<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.2.0-rc3" />

<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.0.0-rc9" />

<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.0.0-rc9" />

Now open Program.cs and add the following code:

here we are setting up Jaeger’s URI as OLTP exporter endpoint.

Now let’s setup web app.


Web App Project

and also add required nuget packages:

<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.2.0-rc3" />

<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.0.0-rc9" />

<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.0.0-rc9" />

<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.0.0-rc9" />

Open Program.cs and add the following code:

we will need to make one more change, call the API and show the result on UI.

Open the Index.chtml.cs file and add the following code:


Index.chtml.cs

and open Index.html and add the following table:


Index.html

add the following code in Program.cs:


Program.cs

we are ready to run the app.

Build both project and make sure they build with any errors.

Now let’s setup Jaeger.

Jaeger Setup

I am using docker setup.

Use the following cmd to create a docker container running for Jaeger:

docker run --name jaeger -p 13133:13133 -p 16686:16686 -p 4317:4317 -d --restart=unless-stopped jaegertracing/opentelemetry-all-in-one

To verify if it running successfully, Go to browser and open UI at http://localhost:16686

Execution

Let’s run the API and WebApp.


Web App UI

We can see the list of weather forecast on UI. which is being fetched using API project and displayed on UI.

Now Let’s look at the Jaeger UI.


Jaeger UI

 

We can see both API and UI project is listed.

We can select operation from Operation drop down and Click on find trace.


Trace

We can see multiple trace result, we select one for further analysis:


Trace detail

We can see the whole trace chain from UI to API with duration and start time.

Demo code at Github

Summary

It is very easy to setup Opentelemetry in .NET application. although I have use jaeger tool for analysis but there are many other tools are available and if they all follow same standard then they can also be used without any other changes.

Hope is it helpful.

Happy coding and keep learning!

Похожее
Apr 11, 2024
Author: Jon Hilton
Sometimes you need to run scheduled tasks for your .NET web app. Automated report creation, status checks, routine admin tasks, that sort of thing. I spent the last few weeks migrating Practical ASP.NET to .NET 8 (static SSR). One requirement...
Jan 2, 2023
Author: Jaydeep Patil
In this article, we are going to discuss the working of CQRS and MediatR patterns and step-by-step implementation using .NET Core 6 Web API. Agenda Introduction of CQRS Pattern When to use CQRS MediatR Step-by-step Implementation Prerequisites Visual Studio 2022...
Jan 31, 2023
Author: Arkaprava Sinha
Today we will see, how to enable Logging directly to Loki via Serilog for a .NET Core Microservice and visualize the logs in Grafana.   Before we start, What is Loki? Loki is a horizontally scalable, highly available, multi-tenant log...
Nov 25, 2021
Author: Jay Krishna Reddy
Today, we are going to cover uploading and downloading multiple files using ASP.Net Core 5.0 Web API by a simple process. Note: This same technique works in .Net Core 3.1 and .Net Core 2.1 as well. Begin with creating an...
Написать сообщение
Тип
Почта
Имя
*Сообщение