From 89a476cfcd249b4a1a0263d3b9583a19036b0b76 Mon Sep 17 00:00:00 2001 From: Freddy Kristiansen Date: Fri, 3 Sep 2021 07:35:47 +0200 Subject: [PATCH] telemetry fixes --- BcContainerHelper.psm1 | 1 + ContainerHandling/New-NavContainer.ps1 | 11 ++- ContainerHandling/New-NavImage.ps1 | 6 +- .../Import-TestToolkitToNavContainer.ps1 | 6 +- TelemetryHelper.ps1 | 68 ++++++++++++++++--- 5 files changed, 79 insertions(+), 13 deletions(-) diff --git a/BcContainerHelper.psm1 b/BcContainerHelper.psm1 index 06e6fb12..8523396a 100644 --- a/BcContainerHelper.psm1 +++ b/BcContainerHelper.psm1 @@ -88,6 +88,7 @@ function Get-ContainerHelperConfig { "TraefikUseDnsNameAsHostName" = $false "TreatWarningsAsErrors" = @('AL1026') "TelemetryConnectionString" = "" + "UseExtendedTelemetry" = $false } $bcContainerHelperConfigFile = "C:\ProgramData\BcContainerHelper\BcContainerHelper.config.json" if (Test-Path $bcContainerHelperConfigFile) { diff --git a/ContainerHandling/New-NavContainer.ps1 b/ContainerHandling/New-NavContainer.ps1 index 2a6d739f..d86eacf8 100644 --- a/ContainerHandling/New-NavContainer.ps1 +++ b/ContainerHandling/New-NavContainer.ps1 @@ -273,7 +273,11 @@ function New-BcContainer { [scriptblock] $finalizeDatabasesScriptBlock ) -$telemetryScope = InitTelemetryScope -name $MyInvocation.InvocationName -always -parameterValues $PSBoundParameters -includeParameters @("accept_eula","artifactUrl","imageName") +$telemetryScope = InitTelemetryScope ` + -name $MyInvocation.InvocationName ` + -always ` + -parameterValues $PSBoundParameters ` + -includeParameters @("containerName","artifactUrl","isolation","imageName","multitenant","filesOnly") try { $defaultNewContainerParameters = (Get-ContainerHelperConfig).defaultNewContainerParameters @@ -972,10 +976,15 @@ try { } if ($platformversion) { Write-Host "Platform: $platformversion" + AddTelemetryProperty -telemetryScope $telemetryScope -key "Platform" -value $platformVersion } $genericTag = $inspect.Config.Labels.tag Write-Host "Generic Tag: $genericTag" + AddTelemetryProperty -telemetryScope $telemetryScope -key "Version" -value $navVersion + AddTelemetryProperty -telemetryScope $telemetryScope -key "Country" -value $devCountry + AddTelemetryProperty -telemetryScope $telemetryScope -key "Style" -value $bcStyle + AddTelemetryProperty -telemetryScope $telemetryScope -key "Multitenant" -value $multitenant AddTelemetryProperty -telemetryScope $telemetryScope -key "GenericTag" -value $genericTag $containerOsVersion = [Version]"$($inspect.Config.Labels.osversion)" diff --git a/ContainerHandling/New-NavImage.ps1 b/ContainerHandling/New-NavImage.ps1 index 2b89c7e3..05a43725 100644 --- a/ContainerHandling/New-NavImage.ps1 +++ b/ContainerHandling/New-NavImage.ps1 @@ -49,7 +49,11 @@ function New-BcImage { $allImages ) -$telemetryScope = InitTelemetryScope -name $MyInvocation.InvocationName -parameterValues $PSBoundParameters -includeParameters @() +$telemetryScope = InitTelemetryScope ` + -name $MyInvocation.InvocationName ` + -always ` + -parameterValues $PSBoundParameters ` + -includeParameters @("containerName","artifactUrl","isolation","imageName","baseImage","multitenant","filesOnly") try { if ($memory -eq "") { diff --git a/ObjectHandling/Import-TestToolkitToNavContainer.ps1 b/ObjectHandling/Import-TestToolkitToNavContainer.ps1 index ef2c439d..e3bbad37 100644 --- a/ObjectHandling/Import-TestToolkitToNavContainer.ps1 +++ b/ObjectHandling/Import-TestToolkitToNavContainer.ps1 @@ -71,7 +71,11 @@ function Import-TestToolkitToBcContainer { ) -$telemetryScope = InitTelemetryScope -name $MyInvocation.InvocationName -parameterValues $PSBoundParameters -includeParameters @() +$telemetryScope = InitTelemetryScope ` + -name $MyInvocation.InvocationName ` + -always ` + -parameterValues $PSBoundParameters ` + -includeParameters @("containerName","includeTestLibrariesOnly","includeTestFrameworkOnly","includeTestRunnerOnly","includePerformanceToolkit","testToolkitCountry") try { if ($replaceDependencies) { diff --git a/TelemetryHelper.ps1 b/TelemetryHelper.ps1 index 711a615b..e6e943d5 100644 --- a/TelemetryHelper.ps1 +++ b/TelemetryHelper.ps1 @@ -30,7 +30,17 @@ $arr = @($value.GetEnumerator() | ForEach-Object { $_ }) $str = "{" $arr | ForEach-Object { - $str += "`n $($_.Key): $(FormatValue -value $_.Value)" + if ($_.Key -eq "RefreshToken" -or $_.Key -eq "AccessToken") { + if ($_.Value) { + $str += "`n $($_.Key): [token]" + } + else { + $str += "`n $($_.Key): [null]" + } + } + else { + $str += "`n $($_.Key): $(FormatValue -value $_.Value)" + } } "$str`n}" } @@ -76,7 +86,6 @@ function InitTelemetryScope { [string[]] $includeParameters = @(), $parameterValues = $null ) - $includeParameters = "*" if ($telemetry.Client) { if ($bcContainerHelperConfig.TelemetryConnectionString) { if ($telemetry.Client.TelemetryConfiguration.DisableTelemetry -or $telemetry.Client.TelemetryConfiguration.ConnectionString -ne $bcContainerHelperConfig.TelemetryConnectionString) { @@ -103,8 +112,9 @@ function InitTelemetryScope { $scope = @{ "Name" = $name "StartTime" = [DateTime]::Now - "SeverityLevel" = 1 "Properties" = [Collections.Generic.Dictionary[string, string]]::new() + "Parameters" = [Collections.Generic.Dictionary[string, string]]::new() + "AllParameters" = [Collections.Generic.Dictionary[string, string]]::new() "CorrelationId" = $CorrelationId "ParentId" = $telemetry.CorrelationId "TopId" = $telemetry.TopId @@ -115,9 +125,11 @@ function InitTelemetryScope { $parameterValues.GetEnumerator() | ForEach-Object { $includeParameter = $false $key = $_.key + $value = FormatValue -value $_.value + $scope.allParameters.Add($key, $value) $includeParameters | ForEach-Object { if ($key -like $_) { $includeParameter = $true } } if ($includeParameter) { - AddTelemetryProperty -telemetryScope $scope -key "Parameter[$Key]" -value $_.Value + $scope.parameters.Add($key, $value) } } } @@ -162,8 +174,20 @@ function TrackTrace { $telemetryScope.Properties.Add("Duration", [DateTime]::Now.Subtract($telemetryScope.StartTime).TotalSeconds) $traceTelemetry = $telemetry.Client.GetType().Assembly.CreateInstance('Microsoft.ApplicationInsights.DataContracts.TraceTelemetry') - $traceTelemetry.Message = "$($telemetryScope.Name)`n$transcript" - $traceTelemetry.SeverityLevel = $telemetryScope.SeverityLevel + if ($bcContainerHelperConfig.UseExtendedTelemetry) { + $traceTelemetry.Message = "$($telemetryScope.Name)`n$transcript" + $traceTelemetry.SeverityLevel = 0 + $telemetryScope.allParameters.GetEnumerator() | ForEach-Object { + [void]$traceTelemetry.Properties.TryAdd("Parameter[$($_.Key)]", $_.Value) + } + } + else { + $traceTelemetry.Message = "$($telemetryScope.Name)" + $traceTelemetry.SeverityLevel = 1 + $telemetryScope.Parameters.GetEnumerator() | ForEach-Object { + [void]$traceTelemetry.Properties.TryAdd("Parameter[$($_.Key)]", $_.Value) + } + } $telemetryScope.Properties.GetEnumerator() | ForEach-Object { [void]$traceTelemetry.Properties.TryAdd($_.Key, $_.Value) } @@ -226,8 +250,20 @@ function TrackException { # emit trace telemetry with Error info $traceTelemetry = $telemetry.Client.GetType().Assembly.CreateInstance('Microsoft.ApplicationInsights.DataContracts.TraceTelemetry') - $traceTelemetry.Message = "$($telemetryScope.Name)`n$transcript" - $traceTelemetry.SeverityLevel = $telemetryScope.SeverityLevel + if ($bcContainerHelperConfig.UseExtendedTelemetry) { + $traceTelemetry.Message = "$($telemetryScope.Name)`n$transcript" + $traceTelemetry.SeverityLevel = 0 + $telemetryScope.allParameters.GetEnumerator() | ForEach-Object { + [void]$traceTelemetry.Properties.TryAdd("Parameter[$($_.Key)]", $_.Value) + } + } + else { + $traceTelemetry.Message = "$($telemetryScope.Name)" + $traceTelemetry.SeverityLevel = 1 + $telemetryScope.Parameters.GetEnumerator() | ForEach-Object { + [void]$traceTelemetry.Properties.TryAdd("Parameter[$($_.Key)]", $_.Value) + } + } $telemetryScope.Properties.GetEnumerator() | ForEach-Object { [void]$traceTelemetry.Properties.TryAdd($_.Key, $_.Value) } @@ -238,8 +274,20 @@ function TrackException { # emit exception telemetry $exceptionTelemetry = $telemetry.Client.GetType().Assembly.CreateInstance('Microsoft.ApplicationInsights.DataContracts.ExceptionTelemetry') - $exceptionTelemetry.Message = "$($telemetryScope.Name)`n$transcript" - $exceptionTelemetry.SeverityLevel = $telemetryScope.SeverityLevel + if ($bcContainerHelperConfig.UseExtendedTelemetry) { + $exceptionTelemetry.Message = "$($telemetryScope.Name)`n$transcript" + $exceptionTelemetry.SeverityLevel = 3 + $telemetryScope.allParameters.GetEnumerator() | ForEach-Object { + [void]$exceptionTelemetry.Properties.TryAdd("Parameter[$($_.Key)]", $_.Value) + } + } + else { + $exceptionTelemetry.Message = "$($telemetryScope.Name)" + $exceptionTelemetry.SeverityLevel = 1 + $telemetryScope.Parameters.GetEnumerator() | ForEach-Object { + [void]$exceptionTelemetry.Properties.TryAdd("Parameter[$($_.Key)]", $_.Value) + } + } $telemetryScope.Properties.GetEnumerator() | ForEach-Object { [void]$exceptionTelemetry.Properties.TryAdd($_.Key, $_.Value) }