Closed stephen-rotageek closed 4 months ago
Hey @stephen-rotageek Thanks for the report. We will take a look.
Hi @stephen-rotageek, there are actually 2 problems. 1 is addressed in 2.7.0-beta2. An other is on the service side and will take a while to fix.
Here are the details:
Issue 1. RoleName is not carried on in the telemetry objects. That means, the field of cloud_RoleName is always empty for data of the profiler - that's an easy fix.
Issue 2. RoleName is not queried on the server side - appName
is instead used as the value in the role - which is why you see the full resource id in the role column - there's an internal bug to fix the issue. I currently don't have a good ETA on it.
Thank you for the update @xiaomi7732.
Just to confirm, do we need both issues resolved before RoleName will be available in the profiler list?
Are there any workarounds we could consider?
@stephen-rotageek,
Yes, we need both fixed.
With regarding the workaround, you might be able to try to overwrite the value of the appName by using a telemetry initializer.
It sounds like having the proper role name is important to you, do you mind help me understand why?
@xiaomi7732 I previously tried overwriting the RoleName with a Telemetry Initializer but it didn't work. I defaulted the value to "Unknown" if the environment variable for the app name (website_site_name) couldn't be retrieved, but even that didn't come through.
public class TelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
string? computerName = Environment.GetEnvironmentVariable("COMPUTERNAME");
string? appName = Environment.GetEnvironmentVariable("WEBSITE_SITE_NAME");
telemetry.Context.Cloud.RoleInstance = computerName ?? "Unknown";
telemetry.Context.Cloud.RoleName = appName ?? "Unknown";
}
}
In the program.cs
builder.Services.AddApplicationInsightsTelemetry();
builder.Services.AddSingleton<ITelemetryInitializer, TelemetryInitializer>();
builder.Services.AddServiceProfiler();
Regarding the importance of the role name, we are planning to use app profiler across multiple applications (microservices), each feeding into the same app insights to give us combined telemetry, using role name to filter to a subset of apps as needed.
If the role name in the profiler list is the resource Id of the app insights, we won't be able to distinguish which profile came from each app. It will make it impossible to sort and difficult to find the profiles we want to view.
@stephen-rotageek , hey, thanks for the explanation, I'll see if we could prioritize the fix. Please understand that the server side fix has more impacts and will be a longer process.
On the work-around side, since our service side is querying appName
(not roleNmae), could you please try to overwrite the value of appName field instead, by using the telemetry initializer?
Let me know! Thanks.
he change should have been deployed. Please verify. Please reactive the issue if there are still issues.
Describe the bug The role name in the Application Insights Profiler list is the resource Id of the app insights instead of the application name.
e.g.
/subscriptions/subscriptionId/resourcegroups/resourcegroupid/providers/microsoft.insights/components/appinsightsname
To Reproduce Steps to reproduce the behavior:
Expected behavior The role name is the application name in the App insights profiler list.
Screenshots I've attached a screen shot of the profiler list showing the role name is the app insights resource id (identifiers redacted)
Desktop (please complete the following information):
Additional context
Although it shouldn't be required, I've tried creating a custom
ITelemetryInitializer
to set the role name, but it doesn't have any effect.Then using it in program.cs