97 lines
3.4 KiB
Markdown
97 lines
3.4 KiB
Markdown
# Getting Started with OpenTelemetry .NET Metrics in 5 Minutes - ASP.NET Core Application
|
|
|
|
First, download and install the [.NET
|
|
SDK](https://dotnet.microsoft.com/download) on your computer.
|
|
|
|
Create a new web application:
|
|
|
|
```sh
|
|
dotnet new web -o aspnetcoreapp
|
|
cd aspnetcoreapp
|
|
```
|
|
|
|
Install the
|
|
[OpenTelemetry.Exporter.Console](../../../src/OpenTelemetry.Exporter.Console/README.md),
|
|
[OpenTelemetry.Extensions.Hosting](../../../src/OpenTelemetry.Extensions.Hosting/README.md),
|
|
and
|
|
[OpenTelemetry.Instrumentation.AspNetCore](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/tree/main/src/OpenTelemetry.Instrumentation.AspNetCore/README.md)
|
|
packages:
|
|
|
|
```sh
|
|
dotnet add package OpenTelemetry.Exporter.Console
|
|
dotnet add package OpenTelemetry.Extensions.Hosting
|
|
dotnet add package OpenTelemetry.Instrumentation.AspNetCore
|
|
```
|
|
|
|
Update the `Program.cs` file with the code from [Program.cs](./Program.cs).
|
|
|
|
Run the application again (using `dotnet run`) and then browse to the url shown
|
|
in the console for your application (ex `http://localhost:5154`). You should see
|
|
the metrics output from the console.
|
|
|
|
```text
|
|
Export http.server.duration, Measures the duration of inbound HTTP requests., Unit: ms, Meter: OpenTelemetry.Instrumentation.AspNetCore/1.0.0.0
|
|
(2023-04-11T21:49:43.6915232Z, 2023-04-11T21:50:50.6564690Z] http.flavor: 1.1 http.method: GET http.route: / http.scheme: http http.status_code: 200 net.host.name: localhost net.host.port: 5000 Histogram
|
|
Value: Sum: 3.5967 Count: 11 Min: 0.073 Max: 2.5539
|
|
(-Infinity,0]:0
|
|
(0,5]:11
|
|
(5,10]:0
|
|
(10,25]:0
|
|
(25,50]:0
|
|
(50,75]:0
|
|
(75,100]:0
|
|
(100,250]:0
|
|
(250,500]:0
|
|
(500,750]:0
|
|
(750,1000]:0
|
|
(1000,2500]:0
|
|
(2500,5000]:0
|
|
(5000,7500]:0
|
|
(7500,10000]:0
|
|
(10000,+Infinity]:0
|
|
```
|
|
|
|
Congratulations! You are now collecting metrics using OpenTelemetry.
|
|
|
|
What does the above program do?
|
|
|
|
The program uses the
|
|
[OpenTelemetry.Instrumentation.AspNetCore](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/tree/main/src/OpenTelemetry.Instrumentation.AspNetCore/README.md)
|
|
package to automatically create metrics for incoming ASP.NET Core requests, uses
|
|
the
|
|
[OpenTelemetry.Exporter.Console](../../../src/OpenTelemetry.Exporter.Console/README.md)
|
|
package to write metrics to the console every 1000 milliseconds. This is done by
|
|
configuring an OpenTelemetry
|
|
[MeterProvider](../customizing-the-sdk/README.MD#meterprovider) using extension
|
|
methods and setting it to auto-start when the host is started:
|
|
|
|
```csharp
|
|
appBuilder.Services.AddOpenTelemetry()
|
|
.ConfigureResource(builder => builder
|
|
.AddService(serviceName: "OTel.NET Getting Started"))
|
|
.WithMetrics(builder => builder
|
|
.AddAspNetCoreInstrumentation()
|
|
.AddConsoleExporter((exporterOptions, metricReaderOptions) =>
|
|
{
|
|
metricReaderOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 1000;
|
|
})
|
|
);
|
|
```
|
|
|
|
> [!NOTE]
|
|
> The `AddOpenTelemetry` extension is part of the
|
|
[OpenTelemetry.Extensions.Hosting](../../../src/OpenTelemetry.Extensions.Hosting/README.md)
|
|
package.
|
|
|
|
The index route ("/") is set up to write out a greeting message on the response:
|
|
|
|
```csharp
|
|
app.MapGet("/", () => $"Hello from OpenTelemetry Metrics!");
|
|
```
|
|
|
|
## Learn more
|
|
|
|
* [Getting Started with Prometheus and Grafana](../getting-started-prometheus-grafana/README.md)
|
|
* [Customizing OpenTelemetry .NET SDK](../customizing-the-sdk/README.md)
|
|
* [Extending the OpenTelemetry .NET SDK](../extending-the-sdk/README.md)
|