diff --git a/Services/Diagnostics/DiagnosticsLogger.cs b/Services/Diagnostics/DiagnosticsLogger.cs index d18e0e55..90e48765 100644 --- a/Services/Diagnostics/DiagnosticsLogger.cs +++ b/Services/Diagnostics/DiagnosticsLogger.cs @@ -14,6 +14,8 @@ public interface IDiagnosticsLogger void LogServiceHeartbeat(); + void LogEvent(string eventName, string message); + void LogServiceError( string message, string exceptionMessage = "", @@ -75,6 +77,12 @@ public void LogServiceHeartbeat() this.PostRequest(this.diagnosticsEndpoint, jsonStruct); } + public void LogEvent(string eventName, string message) + { + var jsonStruct = new JsonStruct(eventName + message, null); + this.PostRequest(this.diagnosticsEndpoint, jsonStruct); + } + public void LogServiceError( string message, string exceptionMessage = "", diff --git a/Services/Simulations.cs b/Services/Simulations.cs index 8d603d75..e90ecc40 100644 --- a/Services/Simulations.cs +++ b/Services/Simulations.cs @@ -85,6 +85,7 @@ public class Simulations : ISimulations private const int DEVICES_PER_MODEL_IN_DEFAULT_TEMPLATE = 1; private readonly IServicesConfig config; + private readonly IDiagnosticsLogger logDiagnostics; private readonly IDeviceModels deviceModels; private readonly IStorageAdapterClient storageAdapterClient; private readonly IEngine mainStorage; @@ -309,6 +310,15 @@ public Simulations( if (simulationIsRestarting) { simulation = await this.ResetSimulationStatisticsAsync(simulation); + + simulation = await this.ResetSimulationStatisticsAsync(simulation); + Dictionary data = new Dictionary(); + data.Add("SimulationId", simulation.Id); + data.Add("StartTime", simulation.StartTime != null ? simulation.StartTime.ToString() : null); + data.Add("DeviceModels", simulation.DeviceModels != null ? simulation.DeviceModels.ToString() : null); + data.Add("CustomDeviceModels", simulation.CustomDevices != null ? simulation.CustomDevices.ToString() : null); + + this.diagnosticsLogger.LogEvent("SimulationStart", data.ToString()); } else if (simulationIsStopping) { @@ -318,6 +328,15 @@ public Simulations( // This boolean triggers the deletion of partitions from the storage // in the partitioning agent. simulation.PartitioningComplete = false; + + Dictionary data = new Dictionary(); + data.Add("SimulationId", simulation.Id); + data.Add("StopTime", simulation.StoppedTime != null ? simulation.StoppedTime.ToString() : null); + data.Add("DeviceModels", simulation.DeviceModels != null ? simulation.DeviceModels.ToString() : null); + data.Add("CustomDeviceModels", simulation.CustomDevices != null ? simulation.CustomDevices.ToString() : null); + data.Add("Statistics", simulation.Statistics != null ? simulation.Statistics.ToString() : null); + + this.diagnosticsLogger.LogEvent("SimulationStop", data.ToString()); } return await this.SaveAsync(simulation, simulation.ETag); @@ -357,6 +376,13 @@ public Simulations( if (simulationIsRestarting) { simulation = await this.ResetSimulationStatisticsAsync(simulation); + Dictionary data = new Dictionary(); + data.Add("SimulationId", simulation.Id); + data.Add("StartTime", simulation.StartTime != null ? simulation.StartTime.ToString() : null); + data.Add("DeviceModels", simulation.DeviceModels != null ? simulation.DeviceModels.ToString() : null); + data.Add("CustomDeviceModels", simulation.CustomDevices != null ? simulation.CustomDevices.ToString() : null); + + this.diagnosticsLogger.LogEvent("SimulationRestart", data.ToString()); } else if (simulationIsStopping) { @@ -367,6 +393,15 @@ public Simulations( // in the partitioning agent. simulation.PartitioningComplete = false; + Dictionary data = new Dictionary(); + data.Add("SimulationId", simulation.Id); + data.Add("StopTime", simulation.StoppedTime != null ? simulation.StoppedTime.ToString() : null); + data.Add("DeviceModels", simulation.DeviceModels != null ? simulation.DeviceModels.ToString() : null); + data.Add("CustomDeviceModels", simulation.CustomDevices != null ? simulation.CustomDevices.ToString() : null); + data.Add("Statistics", simulation.Statistics != null ? simulation.Statistics.ToString() : null); + + this.diagnosticsLogger.LogEvent("SimulationStop", data.ToString()); + // Reset active device count to 0 await this.ResetActiveDevicesStatistics(simulation); } diff --git a/SimulationAgent/Agent.cs b/SimulationAgent/Agent.cs index 216967e1..c5e8ac57 100644 --- a/SimulationAgent/Agent.cs +++ b/SimulationAgent/Agent.cs @@ -327,10 +327,6 @@ await manager.InitAsync( this.deviceReplayActors); this.simulationManagers[simulation.Id] = manager; - - var msg = "New simulation manager created"; - this.log.Info(msg, () => new { SimulationId = simulation.Id }); - this.logDiagnostics.LogServiceStart(msg); } catch (Exception e) {