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;
public static class ActivityDataExtensions
public static class ActivityEventExtensions
{
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
{
Task<Guid> GetOrCreateSessionAsync();
Task<Guid> InitializeOrGetSessionAsync();
Task MarkActivitiesAsSentAsync();
Task MarkDeviceInfoAsAddedAsync();
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();

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 HasDeviceInfo = nameof(HasDeviceInfo);
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;
public interface ITelemetryDataSender
public interface ITelemetryActivitySender
{
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;
public class TelemetryDataSender : ITelemetryDataSender, ISingletonDependency
public class TelemetryActivitySender : ITelemetryActivitySender, ISingletonDependency
{
private readonly ITelemetryActivityStorage _telemetryActivityStorage;
private const int ActivityBatchSize = 50;
private const int ActivitySendBatchSize = 50;
public TelemetryDataSender(ITelemetryActivityStorage telemetryActivityStorage)
public TelemetryActivitySender(ITelemetryActivityStorage telemetryActivityStorage)
{
_telemetryActivityStorage = telemetryActivityStorage;
}
@ -32,9 +32,9 @@ public class TelemetryDataSender : ITelemetryDataSender, ISingletonDependency
using var httpClient = new 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",
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.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Telemetry.Activity;
using Volo.Abp.Telemetry.Activity.Contracts;
using Volo.Abp.Telemetry.Constants;
using ActivityEvent = Volo.Abp.Telemetry.Activity.ActivityEvent;
@ -13,14 +12,15 @@ namespace Volo.Abp.Telemetry;
public class TelemetryService : ITelemetryService, ISingletonDependency
{
private readonly ITelemetryActivityStorage _telemetryActivityStorage;
private readonly ITelemetryDataSender _telemetryDataSender;
private readonly ITelemetryActivitySender _telemetryActivitySender;
private readonly ITelemetryActivityDataBuilder _telemetryActivityDataBuilder;
public TelemetryService(ITelemetryActivityStorage telemetryActivityStorage, ITelemetryDataSender telemetryDataSender,
public TelemetryService(ITelemetryActivityStorage telemetryActivityStorage,
ITelemetryActivitySender telemetryActivitySender,
ITelemetryActivityDataBuilder telemetryActivityDataBuilder)
{
_telemetryActivityStorage = telemetryActivityStorage;
_telemetryDataSender = telemetryDataSender;
_telemetryActivitySender = telemetryActivitySender;
_telemetryActivityDataBuilder = telemetryActivityDataBuilder;
}
@ -54,7 +54,6 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
}
public Task AddActivityAsync(ActivityEvent @event)
{
_ = Task.Run(async () =>
@ -71,7 +70,7 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
if (await _telemetryActivityStorage.ShouldSendActivitiesAsync())
{
await _telemetryDataSender.SendAsync();
await _telemetryActivitySender.SendAsync();
}
}
catch
@ -116,7 +115,7 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
{
AdditionalProperties = new Dictionary<string, object>
{
{ "ErrorMessage", errorMessage },
{ ActivityPropertyNames.ErrorMessage, errorMessage },
}
};
@ -129,12 +128,11 @@ public class TelemetryService : ITelemetryService, ISingletonDependency
{
AdditionalProperties = new Dictionary<string, object>
{
{ "ErrorMessage", errorMessage },
{ "FailingActivity", failingActivity },
{ ActivityPropertyNames.ErrorMessage, errorMessage },
{ ActivityPropertyNames.FailingActivity, failingActivity },
}
};
await AddActivityAsync(activityData);
}
}
Loading…
Cancel
Save