added quieter opentelemetry tracer

This commit is contained in:
2024-01-05 09:16:16 -07:00
parent eb313e37a2
commit cb78f6a2ec
6 changed files with 85 additions and 43 deletions

View File

@@ -0,0 +1,14 @@
public static class ConfigurationSetup
{
public static void Canvas(WebApplicationBuilder builder)
{
var canvas_token = builder.Configuration["CANVAS_TOKEN"] ?? throw new Exception("CANVAS_TOKEN is null");
var canvas_url = builder.Configuration["CANVAS_URL"];
if (canvas_url == null)
{
Console.WriteLine("CANVAS_URL is null, defaulting to https://snow.instructure.com");
builder.Configuration["CANVAS_URL"] = "https://snow.instructure.com";
}
}
}

View File

@@ -0,0 +1,20 @@
using System.Diagnostics;
using OpenTelemetry;
public class CustomConsoleExporter : BaseExporter<Activity>
{
public override ExportResult Export(in Batch<Activity> batch)
{
using var scope = SuppressInstrumentationScope.Begin();
foreach (var activity in batch)
{
string[] ignoreOperations = [
"Microsoft.AspNetCore.Hosting.HttpRequestIn",
];
if (!ignoreOperations.Contains(activity.OperationName))
Console.WriteLine($"{activity.OperationName}: {activity.DisplayName}");
}
return ExportResult.Success;
}
}

View File

@@ -18,37 +18,30 @@ using OpenTelemetry.Logs;
using OpenTelemetry.Metrics; using OpenTelemetry.Metrics;
using OpenTelemetry.Resources; using OpenTelemetry.Resources;
using OpenTelemetry.Trace; using OpenTelemetry.Trace;
using OpenTelemetry;
DotEnv.Load(); DotEnv.Load();
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
var canvas_token = builder.Configuration["CANVAS_TOKEN"]; ConfigurationSetup.Canvas(builder);
if (canvas_token == null)
throw new Exception("CANVAS_TOKEN is null");
var canvas_url = builder.Configuration["CANVAS_URL"];
if (canvas_url == null)
{
Console.WriteLine("CANVAS_URL is null, defaulting to https://snow.instructure.com");
builder.Configuration["CANVAS_URL"] = "https://snow.instructure.com";
}
const string serviceName = "canvas-management"; const string serviceName = "canvas-management";
// builder.Logging.AddOpenTelemetry(options => builder.Logging.AddOpenTelemetry(options =>
// { {
// options options
// .SetResourceBuilder( .SetResourceBuilder(
// ResourceBuilder ResourceBuilder
// .CreateDefault() .CreateDefault()
// .AddService(serviceName) .AddService(serviceName)
// ) )
// .AddOtlpExporter(o => .AddOtlpExporter(o =>
// { {
// o.Endpoint = new Uri("http://localhost:4317/"); o.Endpoint = new Uri("http://localhost:4317/");
// }) });
// .AddConsoleExporter(); // .AddConsoleExporter();
// }); });
builder.Services.AddOpenTelemetry() builder.Services.AddOpenTelemetry()
.ConfigureResource(resource => resource.AddService(serviceName)) .ConfigureResource(resource => resource.AddService(serviceName))
@@ -59,15 +52,16 @@ builder.Services.AddOpenTelemetry()
o.Endpoint = new Uri("http://localhost:4317/"); o.Endpoint = new Uri("http://localhost:4317/");
}) })
.AddAspNetCoreInstrumentation() .AddAspNetCoreInstrumentation()
.AddConsoleExporter() .AddProcessor(new BatchActivityExportProcessor(new CustomConsoleExporter()))
); )
// .WithMetrics(metrics => metrics .WithMetrics(metrics => metrics
// .AddOtlpExporter(o => { .AddOtlpExporter(o =>
// o.Endpoint = new Uri("http://localhost:4317/"); {
// }) o.Endpoint = new Uri("http://localhost:4317/");
// .AddAspNetCoreInstrumentation() }
// .AddConsoleExporter() )
// ); .AddAspNetCoreInstrumentation()
);
// Add services to the container. // Add services to the container.
builder.Services.AddRazorPages(); builder.Services.AddRazorPages();
@@ -133,3 +127,4 @@ foreach (var address in addresses)
} }
app.WaitForShutdown(); app.WaitForShutdown();

View File

@@ -2,7 +2,7 @@
MAJOR_VERSION="1" MAJOR_VERSION="1"
MINOR_VERSION="3" MINOR_VERSION="4"
VERSION="$MAJOR_VERSION.$MINOR_VERSION" VERSION="$MAJOR_VERSION.$MINOR_VERSION"
dotnet publish Management.Web/ \ dotnet publish Management.Web/ \

View File

@@ -31,22 +31,12 @@ services:
- 4318:4318 # OTLP http receiver - 4318:4318 # OTLP http receiver
- 55679:55679 # zpages extension - 55679:55679 # zpages extension
# The zipkin process services the UI, and also exposes a POST endpoint that
# instrumentation can send trace data to.
zipkin: zipkin:
image: ghcr.io/openzipkin/zipkin-slim image: ghcr.io/openzipkin/zipkin-slim
container_name: zipkin container_name: zipkin
# Environment settings are defined here https://github.com/openzipkin/zipkin/blob/master/zipkin-server/README.md#environment-variables # Environment settings are defined here https://github.com/openzipkin/zipkin/blob/master/zipkin-server/README.md#environment-variables
environment: environment:
- STORAGE_TYPE=mem - STORAGE_TYPE=mem
# Point the zipkin at the storage backend
# - MYSQL_HOST=mysql
# Uncomment to enable self-tracing
# - SELF_TRACING_ENABLED=true
# Uncomment to increase heap size
# - JAVA_OPTS=-Xms128m -Xmx128m -XX:+ExitOnOutOfMemoryError
ports: ports:
# Port used for the Zipkin UI and HTTP Api
- 9411:9411 - 9411:9411
# Uncomment to enable debug logging
# command: --logging.level.zipkin2=DEBUG # command: --logging.level.zipkin2=DEBUG

View File

@@ -0,0 +1,23 @@
services:
collector:
image: otel/opentelemetry-collector-contrib
volumes:
- ../otel-collector-config.yml:/etc/otelcol-contrib/config.yaml
ports:
- 1888:1888 # pprof extension
- 8888:8888 # Prometheus metrics exposed by the Collector
- 8889:8889 # Prometheus exporter metrics
- 13133:13133 # health_check extension
- 4317:4317 # OTLP gRPC receiver
- 4318:4318 # OTLP http receiver
- 55679:55679 # zpages extension
zipkin:
image: ghcr.io/openzipkin/zipkin-slim
container_name: zipkin
# Environment settings are defined here https://github.com/openzipkin/zipkin/blob/master/zipkin-server/README.md#environment-variables
environment:
- STORAGE_TYPE=mem
ports:
- 9411:9411
# command: --logging.level.zipkin2=DEBUG