Browse Source

Merge pull request #24140 from abpframework/berkan/revise-data-collection

Revise data collection codes
pull/24143/head
İsmail ÇAĞDAŞ 3 months ago
committed by GitHub
parent
commit
42d8b9bbfc
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs
  2. 13
      framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs
  3. 8
      framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs
  4. 18
      framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryActivityStorage.cs
  5. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryPeriod.cs
  6. 5
      framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Constants/ActivityPropertyNames.cs
  7. 1
      framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryActivitySender.cs

2
framework/src/Volo.Abp.Core/Volo/Abp/AbpApplicationBase.cs

@ -200,7 +200,7 @@ public abstract class AbpApplicationBase : IAbpApplication
using var scope = ServiceProvider.CreateScope();
var abpHostEnvironment = scope.ServiceProvider.GetRequiredService<IAbpHostEnvironment>();
var configuration = scope.ServiceProvider.GetRequiredService<IConfiguration>();
return abpHostEnvironment.IsDevelopment() && configuration.GetValue<bool?>("Abp:Telemetry:IsEnabled") == true;
return abpHostEnvironment.IsDevelopment() && configuration.GetValue<bool?>("Abp:Telemetry:IsEnabled") != false;
}
//TODO: We can extract a new class for this

13
framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetryApplicationInfoEnricher.cs

@ -43,26 +43,25 @@ public sealed class TelemetryApplicationInfoEnricher : TelemetryActivityEventEnr
context.Terminate();
return Task.CompletedTask;
}
if (!_telemetryActivityStorage.ShouldAddProjectInfo(projectMetaData.ProjectId.Value))
var solutionId = ReadSolutionIdFromSolutionPath(projectMetaData.AbpSlnPath);
if (!solutionId.HasValue)
{
IgnoreChildren = true;
context.Terminate();
return Task.CompletedTask;
}
context.Current[ActivityPropertyNames.SolutionId] = solutionId;
var solutionId = ReadSolutionIdFromSolutionPath(projectMetaData.AbpSlnPath);
if (!solutionId.HasValue)
if (!_telemetryActivityStorage.ShouldAddProjectInfo(projectMetaData.ProjectId.Value))
{
IgnoreChildren = true;
context.Terminate();
return Task.CompletedTask;
}
context.ExtraProperties[ActivityPropertyNames.SolutionPath] = projectMetaData.AbpSlnPath;
context.Current[ActivityPropertyNames.ProjectType] = projectMetaData.Role ?? string.Empty;
context.Current[ActivityPropertyNames.ProjectId] = projectMetaData.ProjectId.Value;
context.Current[ActivityPropertyNames.SolutionId] = solutionId;
context.Current[ActivityPropertyNames.HasProjectInfo] = true;
}
catch

8
framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Providers/TelemetrySolutionInfoEnricher.cs

@ -33,6 +33,11 @@ internal sealed class TelemetrySolutionInfoEnricher : TelemetryActivityEventEnri
{
try
{
if (context.SolutionPath.IsNullOrEmpty())
{
return Task.CompletedTask;
}
var jsonContent = File.ReadAllText(context.SolutionPath!);
using var doc = JsonDocument.Parse(jsonContent, new JsonDocumentOptions
{
@ -91,6 +96,9 @@ internal sealed class TelemetrySolutionInfoEnricher : TelemetryActivityEventEnri
context.Current[ActivityPropertyNames.DynamicLocalization] = TelemetryJsonExtensions.GetBooleanOrNull(config, "dynamicLocalization");
context.Current[ActivityPropertyNames.KubernetesConfiguration] = TelemetryJsonExtensions.GetBooleanOrNull(config, "kubernetesConfiguration");
context.Current[ActivityPropertyNames.GrafanaDashboard] = TelemetryJsonExtensions.GetBooleanOrNull(config, "grafanaDashboard");
context.Current[ActivityPropertyNames.SampleCrudPage] = TelemetryJsonExtensions.GetBooleanOrNull(config, "sampleCrudPage");
context.Current[ActivityPropertyNames.CreationTool] = TelemetryJsonExtensions.GetStringOrNull(config, "creationTool");
context.Current[ActivityPropertyNames.Aspire] = TelemetryJsonExtensions.GetBooleanOrNull(config, "aspire");
}
private static void AddModuleInfo(ActivityContext context, JsonElement modulesElement)

18
framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryActivityStorage.cs

@ -35,7 +35,7 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep
var activityName = activityEvent.Get<string>(ActivityPropertyNames.ActivityName);
if (activityName == ActivityNameConsts.AbpStudioClose)
if (activityName == ActivityNameConsts.AbpStudioClose || activityName == ActivityNameConsts.AbpStudioCloseWithoutLogin)
{
State.SessionId = null;
}
@ -47,14 +47,20 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep
if (activityEvent.HasSolutionInfo())
{
var solutionId = activityEvent.Get<Guid>(ActivityPropertyNames.SolutionId);
State.Solutions[solutionId] = DateTimeOffset.UtcNow;
var solutionId = activityEvent.Get<Guid?>(ActivityPropertyNames.SolutionId);
if (solutionId.HasValue && solutionId.Value != Guid.Empty)
{
State.Solutions[solutionId.Value] = DateTimeOffset.UtcNow;
}
}
if (activityEvent.HasProjectInfo())
{
var projectId = activityEvent.Get<Guid>(ActivityPropertyNames.ProjectId);
State.Projects[projectId] = DateTimeOffset.UtcNow;
var projectId = activityEvent.Get<Guid?>(ActivityPropertyNames.ProjectId);
if (projectId.HasValue && projectId.Value != Guid.Empty)
{
State.Projects[projectId.Value] = DateTimeOffset.UtcNow;
}
}
SaveState();
@ -62,7 +68,7 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep
public List<ActivityEvent> GetActivities()
{
return State.Activities;
return new List<ActivityEvent>(State.Activities);
}
public Guid InitializeOrGetSession()

2
framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Activity/Storage/TelemetryPeriod.cs

@ -12,7 +12,7 @@ static internal class TelemetryPeriod
InformationSendPeriod = isTestMode
? TimeSpan.FromSeconds(15)
: TimeSpan.FromDays(7);
: TimeSpan.FromDays(2);
ActivitySendPeriod = isTestMode
? TimeSpan.FromSeconds(5)

5
framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/Constants/ActivityPropertyNames.cs

@ -56,13 +56,14 @@ public static class ActivityPropertyNames
public const string SoftwareType = "SoftwareType";
public const string WebFramework = "WebFramework";
public const string Dbms = "Dbms";
public const string UiTheme = "UiTheme";
public const string UiThemeStyle = "UiThemeStyle";
public const string UiTheme = "Theme";
public const string UiThemeStyle = "ThemeStyle";
public const string MobileApp = "MobileApp";
public const string SampleCrudPage = "SampleCrudPage";
public const string FirstAbpVersion = "FirstAbpVersion";
public const string FirstDotnetVersion = "FirstDotnetVersion";
public const string CreationTool = "CreationTool";
public const string Aspire = "Aspire";
public const string ModuleName = "ModuleName";
public const string ModuleVersion = "ModuleVersion";
public const string ModuleInstallationTime = "ModuleInstallationTime";

1
framework/src/Volo.Abp.Core/Volo/Abp/Internal/Telemetry/TelemetryActivitySender.cs

@ -67,7 +67,6 @@ public class TelemetryActivitySender : ITelemetryActivitySender, IScopedDependen
}
}
private async Task<bool> TrySendBatchWithRetriesAsync(HttpClient httpClient, ActivityEvent[] activities)
{
var currentAttempt = 0;

Loading…
Cancel
Save