OpenTelemetry .NET SDK provides automatic instrumentation for various libraries and frameworks, including ASP.NET and ASP.NET Core. The configuration options for OpenTelemetry.NET components can be set through environment variables, configuration files, or code.
Environment Variables:
OpenTelemetry.NET can be configured using environment variables. Here are some examples:
OTEL_EXPORTER_OTLP_ENDPOINT
: The endpoint for the OTLP exporter. For example,OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
.OTEL_SERVICE_NAME
: The name of the service. For example,OTEL_SERVICE_NAME=my-service
.OTEL_LOG_LEVEL
: The log level for OpenTelemetry.NET. For example,OTEL_LOG_LEVEL=debug
.
Configuration Files:
OpenTelemetry.NET can also be configured using JSON or YAML configuration files. Here is an example of a JSON configuration file:
{
"exporter": {
"otlp": {
"endpoint": "http://localhost:4317",
"headers": {
"Authorization": "Bearer <token>"
}
}
},
"service": {
"name": "my-service",
"version": "1.0.0",
"resources": [
{
"key": "service.environment",
"value": "production"
}
]
}
}
Code:
OpenTelemetry.NET can be configured programmatically using code. Here is an example of configuring the OTLP exporter in C#:
using OpenTelemetry;
using OpenTelemetry.Exporter;
using OpenTelemetry.Trace;
var builder = Sdk.CreateBuilder();
builder.AddSource("MyCompany.MyProject");
var exporter = new OtlpExporter();
builder.AddExporter(exporter);
var tracerProvider = builder.Build();
For more information, see:
- https://opentelemetry.io/docs/instrumentation/net/automatic/
- https://opentelemetry.io/docs/instrumentation/net/getting-started/
- https://opentelemetry.io/docs/instrumentation/net/netframework/
- https://opentelemetry.io/docs/instrumentation/net/libraries/
- https://grafana.com/docs/opentelemetry/collector/how-to-scale/
- https://grafana.com/docs/opentelemetry/collector/send-logs-to-loki/loki-receiver/
- https://opentelemetry.io/docs/specs/semconv/resource/process/
- https://github.com/open-telemetry/opentelemetry-dotnet/issues/1281