Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions examples/Example.AspNetCore.Mvc/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
}
},
"AllowedHosts": "*",
"Elastic": {
"OpenTelemetry": {
"LogLevel": "Trace",
"LogDirectory": "C:\\Logs\\BrandNewLogs"
}
}
//"Elastic": {
// "OpenTelemetry": {
// "LogLevel": "Trace",
// "LogDirectory": "C:\\Logs\\BrandNewLogs"
// }
//}
}
1 change: 1 addition & 0 deletions examples/Example.Console/Example.Console.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.3" />
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.11.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.9.0-beta.1" />
</ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion examples/Example.Console/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

Console.WriteLine("Starting sample application.");

await Usage.BasicBuilderUsageAsync();
Usage.BasicBuilderUsage();

//await Usage.ComplexUsageAsync();

Expand Down
55 changes: 30 additions & 25 deletions examples/Example.Console/Usage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,15 @@
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information

using System.Diagnostics;
using Elastic.OpenTelemetry;
using Microsoft.Extensions.Logging;
using OpenTelemetry;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;

namespace Example.Console;

internal static class Usage
{
private const string ActivitySourceName = "CustomActivitySource";
private static readonly ActivitySource ActivitySource = new(ActivitySourceName, "1.0.0");
private static readonly HttpClient HttpClient = new();

public static async Task BasicBuilderUsageAsync()
public static void BasicBuilderUsage()
{
// NOTE: This sample assumes ENV VARs have been set to configure the Endpoint and Authorization header.

Expand Down Expand Up @@ -48,10 +43,20 @@ public static async Task BasicBuilderUsageAsync()
// .AddConsoleExporter())
// .Build();

using var loggerFactory = LoggerFactory.Create(static builder =>
{
builder
.AddFilter("Elastic.OpenTelemetry", LogLevel.Debug)
.AddConsole();
});

var options = new ElasticOpenTelemetryOptions
{
AdditionalLoggerFactory = loggerFactory
};

using var sdk = OpenTelemetrySdk.Create(builder => builder
.WithElasticDefaults()
.ConfigureResource(resource => resource
.AddService("MyCustomServiceName")));
.WithElasticDefaults(options));

//This is the most flexible approach for a consumer as they can include our processor(s)
//using var tracerProvider = Sdk.CreateTracerProviderBuilder()
Expand All @@ -62,23 +67,23 @@ public static async Task BasicBuilderUsageAsync()
// serviceVersion: "1.0.0"))
// .AddConsoleExporter()
// .AddElasticProcessors()
// .Build();
//// .Build();

await DoStuffAsync();
//await DoStuffAsync();

static async Task DoStuffAsync()
{
using var activity = ActivitySource.StartActivity("DoingStuff", ActivityKind.Internal);
activity?.SetTag("CustomTag", "TagValue");
//static async Task DoStuffAsync()
//{
// using var activity = ActivitySource.StartActivity("DoingStuff", ActivityKind.Internal);
// activity?.SetTag("CustomTag", "TagValue");

await Task.Delay(100);
var response = await HttpClient.GetAsync("http://elastic.co");
await Task.Delay(50);
// await Task.Delay(100);
// var response = await HttpClient.GetAsync("http://elastic.co");
// await Task.Delay(50);

if (response.StatusCode == System.Net.HttpStatusCode.OK)
activity?.SetStatus(ActivityStatusCode.Ok);
else
activity?.SetStatus(ActivityStatusCode.Error);
}
// if (response.StatusCode == System.Net.HttpStatusCode.OK)
// activity?.SetStatus(ActivityStatusCode.Ok);
// else
// activity?.SetStatus(ActivityStatusCode.Error);
//}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ public TracerProviderBuilder BeforeConfigureTracerProvider(TracerProviderBuilder

builder.ConfigureServices(sc => sc.Configure<OtlpExporterOptions>(OtlpExporterDefaults.OtlpExporterOptions));

CoreTracerProvderBuilderExtensions.AddActivitySourceWithLogging(builder, logger, "Elastic.Transport", "<n/a>");
CoreTracerProvderBuilderExtensions.AddElasticProcessorsCore(builder, null, _components, null);
TracerProvderBuilderExtensions.AddActivitySourceWithLogging(builder, logger, "Elastic.Transport", "<n/a>");
TracerProvderBuilderExtensions.AddElasticProcessorsCore(builder, null, _components, null);

logger.LogConfiguredSignalProvider("Traces", nameof(TracerProviderBuilder), "<n/a>");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ internal static ResourceBuilder WithElasticDefaultsCore(
Action<ResourceBuilder, BuilderState>? configure) =>
WithElasticDefaultsCore(builder, builderState.Components, services, configure);

internal static ResourceBuilder WithElasticDefaultsCore
(this ResourceBuilder builder,
internal static ResourceBuilder WithElasticDefaultsCore(
this ResourceBuilder builder,
ElasticOpenTelemetryComponents components,
IServiceCollection? services,
Action<ResourceBuilder, BuilderState>? configure)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ namespace OpenTelemetry.Trace;
/// Provides extension methods on the <see cref="TracerProviderBuilder"/> used to register
/// the Elastic Distribution of OpenTelemetry (EDOT) .NET defaults.
/// </summary>
public static class CoreTracerProvderBuilderExtensions
internal static class TracerProvderBuilderExtensions
{
private static int AddElasticProcessorsCallCount;

Expand Down
5 changes: 2 additions & 3 deletions src/Elastic.OpenTelemetry.Core/SignalBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -143,12 +143,11 @@ public static T WithElasticDefaults<T>(
components = ElasticOpenTelemetry.Bootstrap(options, services);
builderState = new BuilderState(components, instanceId);

components.Logger.LogStoringBuilderState(providerBuilderName, instanceId);
configure(builder, builderState, services);

components.Logger.LogStoringBuilderState(providerBuilderName, instanceId);
BuilderStateTable.Add(builder, builderState);
}

configure(builder, builderState, services);
}
catch (Exception ex)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using Elastic.OpenTelemetry.Core;
using Elastic.OpenTelemetry.Diagnostics;
using Elastic.OpenTelemetry.Instrumentation;
using Elastic.OpenTelemetry.Resources;
using Microsoft.Extensions.DependencyInjection;

#if NET
Expand Down Expand Up @@ -38,7 +39,7 @@ internal static ResourceBuilder WithElasticDefaults(this ResourceBuilder builder

components.Logger.LogWithElasticDefaultsCallCount(callCount, nameof(ResourceBuilder));

return SignalBuilder.WithElasticDefaults(builder, components.Options, components, services, (b, bs, _) => ConfigureBuilder(b, bs));
return builder.WithElasticDefaultsCore(components, services, ConfigureBuilder);
}

[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026", Justification = "The call to `AssemblyScanning.AddInstrumentationViaReflection` " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,14 +164,14 @@ private static void ConfigureBuilder(TracerProviderBuilder builder, BuilderState
}
else
{
CoreTracerProvderBuilderExtensions.AddActivitySourceWithLogging(builder, logger, "System.Net.Http", builderState.InstanceIdentifier);
TracerProvderBuilderExtensions.AddActivitySourceWithLogging(builder, logger, "System.Net.Http", builderState.InstanceIdentifier);
}
#else
AddWithLogging(builder, logger, "HTTP", b => b.AddHttpClientInstrumentation(), builderState.InstanceIdentifier);
#endif

AddWithLogging(builder, logger, "GrpcClient", b => b.AddGrpcClientInstrumentation(), builderState.InstanceIdentifier);
CoreTracerProvderBuilderExtensions.AddActivitySourceWithLogging(builder, logger, "Elastic.Transport", builderState.InstanceIdentifier);
TracerProvderBuilderExtensions.AddActivitySourceWithLogging(builder, logger, "Elastic.Transport", builderState.InstanceIdentifier);

// NOTE: Despite them having no dependencies. We cannot add the OpenTelemetry.Instrumentation.ElasticsearchClient or
// OpenTelemetry.Instrumentation.EntityFrameworkCore instrumentations here, as including the package references causes
Expand All @@ -186,7 +186,7 @@ private static void ConfigureBuilder(TracerProviderBuilder builder, BuilderState
SignalBuilder.AddInstrumentationViaReflection(builder, components, ContribTraceInstrumentation.GetReflectionInstrumentationAssemblies(), builderState.InstanceIdentifier);
}

CoreTracerProvderBuilderExtensions.AddElasticProcessorsCore(builder, builderState, null, services);
TracerProvderBuilderExtensions.AddElasticProcessorsCore(builder, builderState, null, services);

if (components.Options.SkipOtlpExporter)
{
Expand Down
Loading