mirror of
https://github.com/microsoft/onefuzz.git
synced 2025-06-22 14:19:03 +00:00
Enable AppInsights dependency tracking (#2315)
This commit is contained in:
@ -8,6 +8,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Azure.ResourceManager.Monitor" Version="1.0.0-beta.2" />
|
||||
<PackageReference Include="Faithlife.Utility" Version="0.12.2" />
|
||||
<PackageReference Include="Microsoft.ApplicationInsights.DependencyCollector" Version="2.21.0" />
|
||||
<PackageReference Include="Semver" Version="2.1.0" />
|
||||
<PackageReference Include="Azure.Security.KeyVault.Secrets" Version="4.3.0" />
|
||||
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Storage" Version="5.0.0" />
|
||||
@ -19,7 +20,7 @@
|
||||
<PackageReference Include="Microsoft.Azure.Management.OperationalInsights" Version="0.24.0-preview" />
|
||||
<PackageReference Include="Microsoft.Azure.Management.Monitor" Version="0.28.0-preview" />
|
||||
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.ApplicationInsights" Version="2.20.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.ApplicationInsights" Version="2.21.0" />
|
||||
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.3.0" OutputItemType="Analyzer" />
|
||||
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.6.0" />
|
||||
<PackageReference Include="Azure.Data.Tables" Version="12.5.0" />
|
||||
|
@ -13,10 +13,10 @@ public interface ILog {
|
||||
}
|
||||
|
||||
class AppInsights : ILog {
|
||||
private TelemetryClient _telemetryClient;
|
||||
private readonly TelemetryClient _telemetryClient;
|
||||
|
||||
public AppInsights(string instrumentationKey) {
|
||||
_telemetryClient = new TelemetryClient(new TelemetryConfiguration(instrumentationKey));
|
||||
public AppInsights(TelemetryConfiguration config) {
|
||||
_telemetryClient = new TelemetryClient(config);
|
||||
}
|
||||
|
||||
public void Log(Guid correlationId, String message, SeverityLevel level, IReadOnlyDictionary<string, string> tags, string? caller) {
|
||||
@ -25,6 +25,7 @@ class AppInsights : ILog {
|
||||
if (caller is not null) copyTags["CalledBy"] = caller;
|
||||
_telemetryClient.TrackTrace(message, level, copyTags);
|
||||
}
|
||||
|
||||
public void LogEvent(Guid correlationId, String evt, IReadOnlyDictionary<string, string> tags, IReadOnlyDictionary<string, double>? metrics, string? caller) {
|
||||
Dictionary<string, string> copyTags = new(tags);
|
||||
copyTags["Correlation ID"] = correlationId.ToString();
|
||||
@ -37,6 +38,7 @@ class AppInsights : ILog {
|
||||
|
||||
_telemetryClient.TrackEvent(evt, properties: copyTags, metrics: copyMetrics);
|
||||
}
|
||||
|
||||
public void LogException(Guid correlationId, Exception ex, string message, IReadOnlyDictionary<string, string> tags, IReadOnlyDictionary<string, double>? metrics, string? caller) {
|
||||
Dictionary<string, string> copyTags = new(tags);
|
||||
copyTags["Correlation ID"] = correlationId.ToString();
|
||||
@ -290,12 +292,12 @@ public interface ILogSinks {
|
||||
public class LogSinks : ILogSinks {
|
||||
private readonly List<ILog> _loggers;
|
||||
|
||||
public LogSinks(IServiceConfig config) {
|
||||
public LogSinks(IServiceConfig config, TelemetryConfiguration telemetryConfiguration) {
|
||||
_loggers = new List<ILog>();
|
||||
foreach (var dest in config.LogDestinations) {
|
||||
_loggers.Add(
|
||||
dest switch {
|
||||
LogDestination.AppInsights => new AppInsights(config.ApplicationInsightsInstrumentationKey!),
|
||||
LogDestination.AppInsights => new AppInsights(telemetryConfiguration),
|
||||
LogDestination.Console => new Console(),
|
||||
_ => throw new Exception($"Unhandled Log Destination type: {dest}"),
|
||||
}
|
||||
|
@ -9,6 +9,8 @@ using Async = System.Threading.Tasks;
|
||||
using System.Text.Json;
|
||||
using ApiService.OneFuzzLib.Orm;
|
||||
using Azure.Core.Serialization;
|
||||
using Microsoft.ApplicationInsights.DependencyCollector;
|
||||
using Microsoft.ApplicationInsights.Extensibility;
|
||||
using Microsoft.Azure.Functions.Worker;
|
||||
using Microsoft.Azure.Functions.Worker.Middleware;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
@ -39,8 +41,9 @@ public class Program {
|
||||
|
||||
//Move out expensive resources into separate class, and add those as Singleton
|
||||
// ArmClient, Table Client(s), Queue Client(s), HttpClient, etc.
|
||||
public async static Async.Task Main() {
|
||||
var host = new HostBuilder()
|
||||
public static async Async.Task Main() {
|
||||
using var host =
|
||||
new HostBuilder()
|
||||
.ConfigureFunctionsWorkerDefaults(
|
||||
builder => {
|
||||
builder.UseMiddleware<LoggingMiddleware>();
|
||||
@ -103,6 +106,13 @@ public class Program {
|
||||
.AddScoped<ISubnet, Subnet>()
|
||||
.AddScoped<IAutoScaleOperations, AutoScaleOperations>()
|
||||
|
||||
.AddSingleton<TelemetryConfiguration>(provider => {
|
||||
var config = provider.GetRequiredService<IServiceConfig>();
|
||||
return new() {
|
||||
ConnectionString = $"InstrumentationKey={config.ApplicationInsightsInstrumentationKey}",
|
||||
};
|
||||
})
|
||||
.AddSingleton<DependencyTrackingTelemetryModule>()
|
||||
.AddSingleton<ICreds, Creds>()
|
||||
.AddSingleton<EntityConverter>()
|
||||
.AddSingleton<IServiceConfig, ServiceConfiguration>()
|
||||
@ -113,6 +123,14 @@ public class Program {
|
||||
})
|
||||
.Build();
|
||||
|
||||
// Set up Application Insights dependency tracking:
|
||||
{
|
||||
var telemetryConfig = host.Services.GetRequiredService<TelemetryConfiguration>();
|
||||
var module = host.Services.GetRequiredService<DependencyTrackingTelemetryModule>();
|
||||
module.Initialize(telemetryConfig);
|
||||
}
|
||||
|
||||
// Initialize expected Storage tables:
|
||||
await SetupStorage(
|
||||
host.Services.GetRequiredService<IStorage>(),
|
||||
host.Services.GetRequiredService<IServiceConfig>());
|
||||
|
@ -157,6 +157,16 @@
|
||||
"resolved": "0.12.2",
|
||||
"contentHash": "JgMAGj8ekeAzKkagubXqf1UqgfHq89GyA1UQYWbkAe441uRr2Rh2rktkx5Z0LPwmD/aOqu9cxjekD2GZjP8rbw=="
|
||||
},
|
||||
"Microsoft.ApplicationInsights.DependencyCollector": {
|
||||
"type": "Direct",
|
||||
"requested": "[2.21.0, )",
|
||||
"resolved": "2.21.0",
|
||||
"contentHash": "XArm5tBEUdWs05eDKxnsUUQBduJ45DEQOMnpL7wNWxBpgxn+dbl8nObA2jzExbQhbw6P74lc/1f+RdV4iPaOgg==",
|
||||
"dependencies": {
|
||||
"Microsoft.ApplicationInsights": "2.21.0",
|
||||
"System.Diagnostics.DiagnosticSource": "5.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.Azure.Functions.Worker": {
|
||||
"type": "Direct",
|
||||
"requested": "[1.6.0, )",
|
||||
@ -253,11 +263,11 @@
|
||||
},
|
||||
"Microsoft.Extensions.Logging.ApplicationInsights": {
|
||||
"type": "Direct",
|
||||
"requested": "[2.20.0, )",
|
||||
"resolved": "2.20.0",
|
||||
"contentHash": "phuNUDeTlffkJi6zAsMQNOpijNOQ4Olda1WL2L+F33u4fqXmY+EGQnPg81rHW6dOXIYCQvrQUr2gVN5NNMvwKA==",
|
||||
"requested": "[2.21.0, )",
|
||||
"resolved": "2.21.0",
|
||||
"contentHash": "tjzErt5oaLs1caaThu6AbtJuHH0oIGDG/rYCXDruHVGig3m8MyCDuwDsGQwzimY7g4aFyLOKfHc3unBN2G96gw==",
|
||||
"dependencies": {
|
||||
"Microsoft.ApplicationInsights": "2.20.0",
|
||||
"Microsoft.ApplicationInsights": "2.21.0",
|
||||
"Microsoft.Extensions.Logging": "2.1.1"
|
||||
}
|
||||
},
|
||||
@ -374,8 +384,8 @@
|
||||
},
|
||||
"Microsoft.ApplicationInsights": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.20.0",
|
||||
"contentHash": "mb+EC5j06Msn5HhKrhrsMAst6JxvYUnphQMGY2cixCabgGAO3q79Y8o/p1Zce1Azgd1IVkRKAMzAV4vDCbXOqA==",
|
||||
"resolved": "2.21.0",
|
||||
"contentHash": "btZEDWAFNo9CoYliMCriSMTX3ruRGZTtYw4mo2XyyfLlowFicYVM2Xszi5evDG95QRYV7MbbH3D2RqVwfZlJHw==",
|
||||
"dependencies": {
|
||||
"System.Diagnostics.DiagnosticSource": "5.0.0"
|
||||
}
|
||||
|
@ -257,12 +257,21 @@
|
||||
},
|
||||
"Microsoft.ApplicationInsights": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.20.0",
|
||||
"contentHash": "mb+EC5j06Msn5HhKrhrsMAst6JxvYUnphQMGY2cixCabgGAO3q79Y8o/p1Zce1Azgd1IVkRKAMzAV4vDCbXOqA==",
|
||||
"resolved": "2.21.0",
|
||||
"contentHash": "btZEDWAFNo9CoYliMCriSMTX3ruRGZTtYw4mo2XyyfLlowFicYVM2Xszi5evDG95QRYV7MbbH3D2RqVwfZlJHw==",
|
||||
"dependencies": {
|
||||
"System.Diagnostics.DiagnosticSource": "5.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.ApplicationInsights.DependencyCollector": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.21.0",
|
||||
"contentHash": "XArm5tBEUdWs05eDKxnsUUQBduJ45DEQOMnpL7wNWxBpgxn+dbl8nObA2jzExbQhbw6P74lc/1f+RdV4iPaOgg==",
|
||||
"dependencies": {
|
||||
"Microsoft.ApplicationInsights": "2.21.0",
|
||||
"System.Diagnostics.DiagnosticSource": "5.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Cryptography.Internal": {
|
||||
"type": "Transitive",
|
||||
"resolved": "5.0.8",
|
||||
@ -637,10 +646,10 @@
|
||||
},
|
||||
"Microsoft.Extensions.Logging.ApplicationInsights": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.20.0",
|
||||
"contentHash": "phuNUDeTlffkJi6zAsMQNOpijNOQ4Olda1WL2L+F33u4fqXmY+EGQnPg81rHW6dOXIYCQvrQUr2gVN5NNMvwKA==",
|
||||
"resolved": "2.21.0",
|
||||
"contentHash": "tjzErt5oaLs1caaThu6AbtJuHH0oIGDG/rYCXDruHVGig3m8MyCDuwDsGQwzimY7g4aFyLOKfHc3unBN2G96gw==",
|
||||
"dependencies": {
|
||||
"Microsoft.ApplicationInsights": "2.20.0",
|
||||
"Microsoft.ApplicationInsights": "2.21.0",
|
||||
"Microsoft.Extensions.Logging": "2.1.1"
|
||||
}
|
||||
},
|
||||
@ -2134,37 +2143,38 @@
|
||||
"apiservice": {
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Azure.Core": "[1.25.0, )",
|
||||
"Azure.Data.Tables": "[12.5.0, )",
|
||||
"Azure.Identity": "[1.6.0, )",
|
||||
"Azure.Messaging.EventGrid": "[4.10.0, )",
|
||||
"Azure.ResourceManager": "[1.2.1, )",
|
||||
"Azure.ResourceManager.Compute": "[1.0.0-beta.8, )",
|
||||
"Azure.ResourceManager.Monitor": "[1.0.0-beta.2, )",
|
||||
"Azure.ResourceManager.Network": "[1.0.0, )",
|
||||
"Azure.ResourceManager.Resources": "[1.0.0, )",
|
||||
"Azure.ResourceManager.Storage": "[1.0.0-beta.11, )",
|
||||
"Azure.Security.KeyVault.Secrets": "[4.3.0, )",
|
||||
"Azure.Storage.Blobs": "[12.13.0, )",
|
||||
"Azure.Storage.Queues": "[12.11.0, )",
|
||||
"Faithlife.Utility": "[0.12.2, )",
|
||||
"Microsoft.Azure.Functions.Worker": "[1.6.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.EventGrid": "[2.1.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Http": "[3.0.13, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.SignalRService": "[1.7.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Storage": "[5.0.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Timer": "[4.1.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Sdk": "[1.3.0, )",
|
||||
"Microsoft.Azure.Management.Monitor": "[0.28.0-preview, )",
|
||||
"Microsoft.Azure.Management.OperationalInsights": "[0.24.0-preview, )",
|
||||
"Microsoft.Extensions.Logging.ApplicationInsights": "[2.20.0, )",
|
||||
"Microsoft.Graph": "[4.24.0, )",
|
||||
"Microsoft.Identity.Client": "[4.43.0, )",
|
||||
"Microsoft.Identity.Web.TokenCache": "[1.23.1, )",
|
||||
"Semver": "[2.1.0, )",
|
||||
"System.IdentityModel.Tokens.Jwt": "[6.17.0, )",
|
||||
"System.Linq.Async": "[6.0.1, )",
|
||||
"TaskTupleAwaiter": "[2.0.0, )"
|
||||
"Azure.Core": "1.25.0",
|
||||
"Azure.Data.Tables": "12.5.0",
|
||||
"Azure.Identity": "1.6.0",
|
||||
"Azure.Messaging.EventGrid": "4.10.0",
|
||||
"Azure.ResourceManager": "1.2.1",
|
||||
"Azure.ResourceManager.Compute": "1.0.0-beta.8",
|
||||
"Azure.ResourceManager.Monitor": "1.0.0-beta.2",
|
||||
"Azure.ResourceManager.Network": "1.0.0",
|
||||
"Azure.ResourceManager.Resources": "1.0.0",
|
||||
"Azure.ResourceManager.Storage": "1.0.0-beta.11",
|
||||
"Azure.Security.KeyVault.Secrets": "4.3.0",
|
||||
"Azure.Storage.Blobs": "12.13.0",
|
||||
"Azure.Storage.Queues": "12.11.0",
|
||||
"Faithlife.Utility": "0.12.2",
|
||||
"Microsoft.ApplicationInsights.DependencyCollector": "2.21.0",
|
||||
"Microsoft.Azure.Functions.Worker": "1.6.0",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.EventGrid": "2.1.0",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Http": "3.0.13",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.SignalRService": "1.7.0",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Storage": "5.0.0",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Timer": "4.1.0",
|
||||
"Microsoft.Azure.Functions.Worker.Sdk": "1.3.0",
|
||||
"Microsoft.Azure.Management.Monitor": "0.28.0-preview",
|
||||
"Microsoft.Azure.Management.OperationalInsights": "0.24.0-preview",
|
||||
"Microsoft.Extensions.Logging.ApplicationInsights": "2.21.0",
|
||||
"Microsoft.Graph": "4.24.0",
|
||||
"Microsoft.Identity.Client": "4.43.0",
|
||||
"Microsoft.Identity.Web.TokenCache": "1.23.1",
|
||||
"Semver": "2.1.0",
|
||||
"System.IdentityModel.Tokens.Jwt": "6.17.0",
|
||||
"System.Linq.Async": "6.0.1",
|
||||
"TaskTupleAwaiter": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -306,12 +306,21 @@
|
||||
},
|
||||
"Microsoft.ApplicationInsights": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.20.0",
|
||||
"contentHash": "mb+EC5j06Msn5HhKrhrsMAst6JxvYUnphQMGY2cixCabgGAO3q79Y8o/p1Zce1Azgd1IVkRKAMzAV4vDCbXOqA==",
|
||||
"resolved": "2.21.0",
|
||||
"contentHash": "btZEDWAFNo9CoYliMCriSMTX3ruRGZTtYw4mo2XyyfLlowFicYVM2Xszi5evDG95QRYV7MbbH3D2RqVwfZlJHw==",
|
||||
"dependencies": {
|
||||
"System.Diagnostics.DiagnosticSource": "5.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.ApplicationInsights.DependencyCollector": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.21.0",
|
||||
"contentHash": "XArm5tBEUdWs05eDKxnsUUQBduJ45DEQOMnpL7wNWxBpgxn+dbl8nObA2jzExbQhbw6P74lc/1f+RdV4iPaOgg==",
|
||||
"dependencies": {
|
||||
"Microsoft.ApplicationInsights": "2.21.0",
|
||||
"System.Diagnostics.DiagnosticSource": "5.0.0"
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Cryptography.Internal": {
|
||||
"type": "Transitive",
|
||||
"resolved": "5.0.8",
|
||||
@ -686,10 +695,10 @@
|
||||
},
|
||||
"Microsoft.Extensions.Logging.ApplicationInsights": {
|
||||
"type": "Transitive",
|
||||
"resolved": "2.20.0",
|
||||
"contentHash": "phuNUDeTlffkJi6zAsMQNOpijNOQ4Olda1WL2L+F33u4fqXmY+EGQnPg81rHW6dOXIYCQvrQUr2gVN5NNMvwKA==",
|
||||
"resolved": "2.21.0",
|
||||
"contentHash": "tjzErt5oaLs1caaThu6AbtJuHH0oIGDG/rYCXDruHVGig3m8MyCDuwDsGQwzimY7g4aFyLOKfHc3unBN2G96gw==",
|
||||
"dependencies": {
|
||||
"Microsoft.ApplicationInsights": "2.20.0",
|
||||
"Microsoft.ApplicationInsights": "2.21.0",
|
||||
"Microsoft.Extensions.Logging": "2.1.1"
|
||||
}
|
||||
},
|
||||
@ -2261,37 +2270,38 @@
|
||||
"apiservice": {
|
||||
"type": "Project",
|
||||
"dependencies": {
|
||||
"Azure.Core": "[1.25.0, )",
|
||||
"Azure.Data.Tables": "[12.5.0, )",
|
||||
"Azure.Identity": "[1.6.0, )",
|
||||
"Azure.Messaging.EventGrid": "[4.10.0, )",
|
||||
"Azure.ResourceManager": "[1.2.1, )",
|
||||
"Azure.ResourceManager.Compute": "[1.0.0-beta.8, )",
|
||||
"Azure.ResourceManager.Monitor": "[1.0.0-beta.2, )",
|
||||
"Azure.ResourceManager.Network": "[1.0.0, )",
|
||||
"Azure.ResourceManager.Resources": "[1.0.0, )",
|
||||
"Azure.ResourceManager.Storage": "[1.0.0-beta.11, )",
|
||||
"Azure.Security.KeyVault.Secrets": "[4.3.0, )",
|
||||
"Azure.Storage.Blobs": "[12.13.0, )",
|
||||
"Azure.Storage.Queues": "[12.11.0, )",
|
||||
"Faithlife.Utility": "[0.12.2, )",
|
||||
"Microsoft.Azure.Functions.Worker": "[1.6.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.EventGrid": "[2.1.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Http": "[3.0.13, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.SignalRService": "[1.7.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Storage": "[5.0.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Timer": "[4.1.0, )",
|
||||
"Microsoft.Azure.Functions.Worker.Sdk": "[1.3.0, )",
|
||||
"Microsoft.Azure.Management.Monitor": "[0.28.0-preview, )",
|
||||
"Microsoft.Azure.Management.OperationalInsights": "[0.24.0-preview, )",
|
||||
"Microsoft.Extensions.Logging.ApplicationInsights": "[2.20.0, )",
|
||||
"Microsoft.Graph": "[4.24.0, )",
|
||||
"Microsoft.Identity.Client": "[4.43.0, )",
|
||||
"Microsoft.Identity.Web.TokenCache": "[1.23.1, )",
|
||||
"Semver": "[2.1.0, )",
|
||||
"System.IdentityModel.Tokens.Jwt": "[6.17.0, )",
|
||||
"System.Linq.Async": "[6.0.1, )",
|
||||
"TaskTupleAwaiter": "[2.0.0, )"
|
||||
"Azure.Core": "1.25.0",
|
||||
"Azure.Data.Tables": "12.5.0",
|
||||
"Azure.Identity": "1.6.0",
|
||||
"Azure.Messaging.EventGrid": "4.10.0",
|
||||
"Azure.ResourceManager": "1.2.1",
|
||||
"Azure.ResourceManager.Compute": "1.0.0-beta.8",
|
||||
"Azure.ResourceManager.Monitor": "1.0.0-beta.2",
|
||||
"Azure.ResourceManager.Network": "1.0.0",
|
||||
"Azure.ResourceManager.Resources": "1.0.0",
|
||||
"Azure.ResourceManager.Storage": "1.0.0-beta.11",
|
||||
"Azure.Security.KeyVault.Secrets": "4.3.0",
|
||||
"Azure.Storage.Blobs": "12.13.0",
|
||||
"Azure.Storage.Queues": "12.11.0",
|
||||
"Faithlife.Utility": "0.12.2",
|
||||
"Microsoft.ApplicationInsights.DependencyCollector": "2.21.0",
|
||||
"Microsoft.Azure.Functions.Worker": "1.6.0",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.EventGrid": "2.1.0",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Http": "3.0.13",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.SignalRService": "1.7.0",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Storage": "5.0.0",
|
||||
"Microsoft.Azure.Functions.Worker.Extensions.Timer": "4.1.0",
|
||||
"Microsoft.Azure.Functions.Worker.Sdk": "1.3.0",
|
||||
"Microsoft.Azure.Management.Monitor": "0.28.0-preview",
|
||||
"Microsoft.Azure.Management.OperationalInsights": "0.24.0-preview",
|
||||
"Microsoft.Extensions.Logging.ApplicationInsights": "2.21.0",
|
||||
"Microsoft.Graph": "4.24.0",
|
||||
"Microsoft.Identity.Client": "4.43.0",
|
||||
"Microsoft.Identity.Web.TokenCache": "1.23.1",
|
||||
"Semver": "2.1.0",
|
||||
"System.IdentityModel.Tokens.Jwt": "6.17.0",
|
||||
"System.Linq.Async": "6.0.1",
|
||||
"TaskTupleAwaiter": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user