Browse Source

Refactor telemetry system: rename classes and interfaces for consistency, add new activity property constants, and adjust activity sender implementation.

pull/23059/head
Emre KARA 1 year ago
parent
commit
ec82673c23
  1. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/ActivityEventExtensions.cs
  2. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityStorage.cs
  3. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Storage/TelemetryActivityStorage.cs
  4. 4
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/ActivityPropertyNames.cs
  5. 2
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryActivitySender.cs
  6. 10
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryActivitySender.cs
  7. 18
      framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryService.cs

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/ActivityDataExtensions.cs → framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/ActivityEventExtensions.cs

@ -2,7 +2,7 @@ using System.Collections.Generic;
namespace Volo.Abp.Telemetry.Activity; namespace Volo.Abp.Telemetry.Activity;
public static class ActivityDataExtensions public static class ActivityEventExtensions
{ {
public static ActivityEvent WithAdditionalProperty(this ActivityEvent activityEvent, string key, object value) public static ActivityEvent WithAdditionalProperty(this ActivityEvent activityEvent, string key, object value)
{ {

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Activity/Contracts/ITelemetryActivityStorage.cs

@ -6,7 +6,7 @@ namespace Volo.Abp.Telemetry.Activity.Contracts;
public interface ITelemetryActivityStorage public interface ITelemetryActivityStorage
{ {
Task<Guid> GetOrCreateSessionAsync(); Task<Guid> InitializeOrGetSessionAsync();
Task MarkActivitiesAsSentAsync(); Task MarkActivitiesAsSentAsync();
Task MarkDeviceInfoAsAddedAsync(); Task MarkDeviceInfoAsAddedAsync();
Task MarkSolutionInfoAsAddedAsync(Guid solutionId); Task MarkSolutionInfoAsAddedAsync(Guid solutionId);

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

@ -50,7 +50,7 @@ public class TelemetryActivityStorage : ITelemetryActivityStorage, ISingletonDep
}); });
} }
public async Task<Guid> GetOrCreateSessionAsync() public async Task<Guid> InitializeOrGetSessionAsync()
{ {
var state = await GetStateAsync(); var state = await GetStateAsync();

4
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/Constants/ActivityPropertyNames.cs

@ -72,5 +72,7 @@ public static class ActivityPropertyNames
public const string HasSolutionInfo = nameof(HasSolutionInfo); public const string HasSolutionInfo = nameof(HasSolutionInfo);
public const string HasDeviceInfo = nameof(HasDeviceInfo); public const string HasDeviceInfo = nameof(HasDeviceInfo);
public const string HasProjectInfo = nameof(HasProjectInfo); public const string HasProjectInfo = nameof(HasProjectInfo);
public const string ErrorMessage = nameof(ErrorMessage);
public const string FailingActivity = nameof(FailingActivity);
} }

2
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryDataSender.cs → framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/ITelemetryActivitySender.cs

@ -2,7 +2,7 @@
namespace Volo.Abp.Telemetry; namespace Volo.Abp.Telemetry;
public interface ITelemetryDataSender public interface ITelemetryActivitySender
{ {
Task SendAsync(); Task SendAsync();
} }

10
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryDataSender.cs → framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryActivitySender.cs

@ -12,13 +12,13 @@ using Volo.Abp.Telemetry.Constants;
namespace Volo.Abp.Telemetry; namespace Volo.Abp.Telemetry;
public class TelemetryDataSender : ITelemetryDataSender, ISingletonDependency public class TelemetryActivitySender : ITelemetryActivitySender, ISingletonDependency
{ {
private readonly ITelemetryActivityStorage _telemetryActivityStorage; private readonly ITelemetryActivityStorage _telemetryActivityStorage;
private const int ActivityBatchSize = 50; private const int ActivitySendBatchSize = 50;
public TelemetryDataSender(ITelemetryActivityStorage telemetryActivityStorage) public TelemetryActivitySender(ITelemetryActivityStorage telemetryActivityStorage)
{ {
_telemetryActivityStorage = telemetryActivityStorage; _telemetryActivityStorage = telemetryActivityStorage;
} }
@ -32,9 +32,9 @@ public class TelemetryDataSender : ITelemetryDataSender, ISingletonDependency
using var httpClient = new HttpClient(); using var httpClient = new HttpClient();
AddJwtTokenIfAuthenticated(httpClient); AddJwtTokenIfAuthenticated(httpClient);
for (var i = 0; i < activities.Count; i += ActivityBatchSize) for (var i = 0; i < activities.Count; i += ActivitySendBatchSize)
{ {
var activityBatch = activities.Skip(i).Take(ActivityBatchSize).ToList(); var activityBatch = activities.Skip(i).Take(ActivitySendBatchSize).ToList();
await httpClient.PostAsync($"{AbpPlatformUrls.AbpTelemetryApiUrl}api/telemetry/collect", await httpClient.PostAsync($"{AbpPlatformUrls.AbpTelemetryApiUrl}api/telemetry/collect",
new StringContent(JsonSerializer.Serialize(activityBatch), Encoding.UTF8, "application/json")); new StringContent(JsonSerializer.Serialize(activityBatch), Encoding.UTF8, "application/json"));

18
framework/src/Volo.Abp.Core/Volo/Abp/Telemetry/TelemetryService.cs

@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.Telemetry.Activity;
using Volo.Abp.Telemetry.Activity.Contracts; using Volo.Abp.Telemetry.Activity.Contracts;
using Volo.Abp.Telemetry.Constants; using Volo.Abp.Telemetry.Constants;
using ActivityEvent = Volo.Abp.Telemetry.Activity.ActivityEvent; using ActivityEvent = Volo.Abp.Telemetry.Activity.ActivityEvent;
@ -13,14 +12,15 @@ namespace Volo.Abp.Telemetry;
public class TelemetryService : ITelemetryService, ISingletonDependency public class TelemetryService : ITelemetryService, ISingletonDependency
{ {
private readonly ITelemetryActivityStorage _telemetryActivityStorage; private readonly ITelemetryActivityStorage _telemetryActivityStorage;
private readonly ITelemetryDataSender _telemetryDataSender; private readonly ITelemetryActivitySender _telemetryActivitySender;
private readonly ITelemetryActivityDataBuilder _telemetryActivityDataBuilder; private readonly ITelemetryActivityDataBuilder _telemetryActivityDataBuilder;
public TelemetryService(ITelemetryActivityStorage telemetryActivityStorage, ITelemetryDataSender telemetryDataSender, public TelemetryService(ITelemetryActivityStorage telemetryActivityStorage,
ITelemetryActivitySender telemetryActivitySender,
ITelemetryActivityDataBuilder telemetryActivityDataBuilder) ITelemetryActivityDataBuilder telemetryActivityDataBuilder)
{ {
_telemetryActivityStorage = telemetryActivityStorage; _telemetryActivityStorage = telemetryActivityStorage;
_telemetryDataSender = telemetryDataSender; _telemetryActivitySender = telemetryActivitySender;
_telemetryActivityDataBuilder = telemetryActivityDataBuilder; _telemetryActivityDataBuilder = telemetryActivityDataBuilder;
} }
@ -54,7 +54,6 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
} }
public Task AddActivityAsync(ActivityEvent @event) public Task AddActivityAsync(ActivityEvent @event)
{ {
_ = Task.Run(async () => _ = Task.Run(async () =>
@ -71,7 +70,7 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
if (await _telemetryActivityStorage.ShouldSendActivitiesAsync()) if (await _telemetryActivityStorage.ShouldSendActivitiesAsync())
{ {
await _telemetryDataSender.SendAsync(); await _telemetryActivitySender.SendAsync();
} }
} }
catch catch
@ -116,7 +115,7 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
{ {
AdditionalProperties = new Dictionary<string, object> AdditionalProperties = new Dictionary<string, object>
{ {
{ "ErrorMessage", errorMessage }, { ActivityPropertyNames.ErrorMessage, errorMessage },
} }
}; };
@ -129,12 +128,11 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
{ {
AdditionalProperties = new Dictionary<string, object> AdditionalProperties = new Dictionary<string, object>
{ {
{ "ErrorMessage", errorMessage }, { ActivityPropertyNames.ErrorMessage, errorMessage },
{ "FailingActivity", failingActivity }, { ActivityPropertyNames.FailingActivity, failingActivity },
} }
}; };
await AddActivityAsync(activityData); await AddActivityAsync(activityData);
} }
} }
Loading…
Cancel
Save