Skip to content

Commit bab3bbc

Browse files
[AzureMonitorExporter] Add Az.Namespace to Dependency Type. (Azure#35645)
* Add Az.Namespace as Dependency Type. * Fix UI * Fix tests * Comment
1 parent 187395b commit bab3bbc

File tree

3 files changed

+31
-12
lines changed

3 files changed

+31
-12
lines changed

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Customizations/Models/RemoteDependencyData.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,16 @@ public RemoteDependencyData(int version, Activity activity, ref ActivityTagsProc
6666
break;
6767
}
6868

69-
if (activity.Kind == ActivityKind.Internal && activity.Parent != null)
69+
if (activity.Kind == ActivityKind.Internal)
7070
{
7171
Type = "InProc";
7272
}
73+
else
74+
{
75+
// The Azure SDK sets az.namespace with its resource provider information.
76+
// When ActivityKind is not internal and az.namespace is present, set the value of Type to az.namespace.
77+
Type = activityTagsProcessor.UnMappedTags.GetAzNameSpace() ?? Type;
78+
}
7379

7480
Properties = new ChangeTrackingDictionary<string, string>();
7581
Measurements = new ChangeTrackingDictionary<string, double>();

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/src/Internals/AzMonListExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,5 +382,10 @@ internal static string GetDefaultDbPort(string? dbSystem)
382382

383383
return "Unknown";
384384
}
385+
386+
internal static string? GetAzNameSpace(this AzMonList tagObjects)
387+
{
388+
return AzMonList.GetTagValue(ref tagObjects, SemanticConventions.AttributeAzureNameSpace)?.ToString();
389+
}
385390
}
386391
}

sdk/monitor/Azure.Monitor.OpenTelemetry.Exporter/tests/Azure.Monitor.OpenTelemetry.Exporter.Tests/RemoteDependencyDataTests.cs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -57,25 +57,33 @@ public void ValidateDBDependencyType(string dbSystem)
5757
}
5858

5959
[Fact]
60-
public void DependencyTypeisSetToInProcForInternalSpanWithParent()
60+
public void DependencyTypeisSetToInProcForInternalSpan()
6161
{
6262
using ActivitySource activitySource = new ActivitySource(ActivitySourceName);
63-
using var parentActivity = activitySource.StartActivity("ParentActivity", ActivityKind.Internal);
64-
using var childActivity = activitySource.StartActivity("ChildActivity", ActivityKind.Internal);
63+
using var activity = activitySource.StartActivity("Activity", ActivityKind.Internal);
6564

66-
Assert.NotNull(parentActivity);
67-
var activityTagsProcessorParent = TraceHelper.EnumerateActivityTags(parentActivity);
65+
Assert.NotNull(activity);
66+
var activityTagsProcessor = TraceHelper.EnumerateActivityTags(activity);
6867

69-
var remoteDependencyDataTypeForParent = new RemoteDependencyData(2, parentActivity, ref activityTagsProcessorParent).Type;
68+
var remoteDependencyDataType = new RemoteDependencyData(2, activity, ref activityTagsProcessor).Type;
7069

71-
Assert.Null(remoteDependencyDataTypeForParent);
70+
Assert.Equal("InProc", remoteDependencyDataType);
71+
}
7272

73-
Assert.NotNull(childActivity);
74-
var activityTagsProcessorChild = TraceHelper.EnumerateActivityTags(childActivity);
73+
[Fact]
74+
public void DependencyTypeisSetToAzNamespaceValueForNonInternalSpan()
75+
{
76+
using ActivitySource activitySource = new ActivitySource(ActivitySourceName);
77+
using var activity = activitySource.StartActivity("Activity", ActivityKind.Client);
78+
activity?.AddTag("az.namespace", "DemoAzureResource");
7579

76-
var remoteDependencyDataTypeForChild = new RemoteDependencyData(2, childActivity, ref activityTagsProcessorChild).Type;
80+
Assert.NotNull(activity);
81+
var activityTagsProcessor = TraceHelper.EnumerateActivityTags(activity);
82+
83+
var remoteDependencyData = new RemoteDependencyData(2, activity, ref activityTagsProcessor);
7784

78-
Assert.Equal("InProc", remoteDependencyDataTypeForChild);
85+
Assert.Equal("DemoAzureResource", remoteDependencyData.Type);
86+
Assert.Equal("DemoAzureResource", remoteDependencyData.Properties["az.namespace"]);
7987
}
8088

8189
[Fact]

0 commit comments

Comments
 (0)