public List <PlatformActivityLog> GetPlatformLogByCategory(string categoryType, int maxRecords, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } return(PlatformLogManager.GetPlatformLogByCategory((CategoryType)Enum.Parse(typeof(CategoryType), categoryType), maxRecords)); }
public static InfrastructureSnapshot GetInfrastructureSnapshot() { var infrastructureSnapshot = new InfrastructureSnapshot(); #region Get from Redis Cache //IDatabase cache = Sahara.Core.Settings.Azure.Redis.RedisMultiplexers.PlatformManager_Multiplexer.GetDatabase(); IDatabase cache = Sahara.Core.Settings.Azure.Redis.RedisMultiplexers.RedisMultiplexer.GetDatabase(); Object cachedInfrastructureSnapshot = null; try { cachedInfrastructureSnapshot = cache.HashGet( Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Key, Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Fields.Infrastructure ); if (((RedisValue)cachedInfrastructureSnapshot).HasValue) { infrastructureSnapshot = JsonConvert.DeserializeObject <InfrastructureSnapshot>((RedisValue)cachedInfrastructureSnapshot); } } catch { } #endregion #region Generate Snapshot if (((RedisValue)cachedInfrastructureSnapshot).IsNullOrEmpty) { #region Generate Infrastructure Snapshot //Latest error data: infrastructureSnapshot.Errors_Log = PlatformLogManager.GetPlatformLogByCategory(Logging.PlatformLogs.Types.CategoryType.Error, 30); infrastructureSnapshot.Errors_Last7Days = false; foreach (var log in infrastructureSnapshot.Errors_Log) { if (log.Timestamp >= DateTime.UtcNow.AddDays(-1)) { infrastructureSnapshot.Errors_Last24Hours = true; } if (log.Timestamp >= DateTime.UtcNow.AddDays(-3)) { infrastructureSnapshot.Errors_Last3Days = true; } if (log.Timestamp >= DateTime.UtcNow.AddDays(-7)) { infrastructureSnapshot.Errors_Last7Days = true; } if (log.Timestamp >= DateTime.UtcNow.AddDays(-30)) { infrastructureSnapshot.Errors_Last30Days = true; } } //Latest billing issue data: /* * billingSnapshotIssues = new List<PlatformSnapshotBillingIssue>(); * var billingIssuesLogs = PlatformLogManager.GetPlatformLogByActivity(Logging.PlatformLogs.Types.ActivityType.Billing_Issue, 10); * * foreach (var log in billingIssuesLogs) * { * billingSnapshotIssues.Add( * new PlatformSnapshotBillingIssue * { * Decription = log.Description, * Details = log.Details, * Timestamp = log.Timestamp.DateTime * }); * }*/ //Custodian info: infrastructureSnapshot.Custodian = new CustodianSnapshot(); var custodianWorkerLogs = PlatformLogManager.GetPlatformLogByCategory(Logging.PlatformLogs.Types.CategoryType.Custodian, 1); try { if (custodianWorkerLogs[0].Activity == Sahara.Core.Logging.PlatformLogs.Types.ActivityType.Custodian_Sleeping.ToString()) { infrastructureSnapshot.Custodian.IsSleeping = true; infrastructureSnapshot.Custodian.IsRunning = false; infrastructureSnapshot.Custodian.LastRun = custodianWorkerLogs[0].Timestamp.UtcDateTime; infrastructureSnapshot.Custodian.NextRun = custodianWorkerLogs[0].Timestamp.UtcDateTime.AddMilliseconds(Sahara.Core.Settings.Platform.Custodian.Frequency.Length); } else { infrastructureSnapshot.Custodian.IsSleeping = false; infrastructureSnapshot.Custodian.IsRunning = true; infrastructureSnapshot.Custodian.LastRun = DateTime.UtcNow; infrastructureSnapshot.Custodian.NextRun = DateTime.UtcNow.AddMilliseconds(Sahara.Core.Settings.Platform.Custodian.Frequency.Length); } } catch { } infrastructureSnapshot.Custodian.FrequencyMilliseconds = Sahara.Core.Settings.Platform.Custodian.Frequency.Length; infrastructureSnapshot.Custodian.FrequencyDescription = Sahara.Core.Settings.Platform.Custodian.Frequency.Description; #region Store in Redis try { //Store a copy in the Redis cache cache.HashSet( Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Key, Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Fields.Infrastructure, JsonConvert.SerializeObject(infrastructureSnapshot), When.Always, CommandFlags.FireAndForget ); //Expire cache after set time cache.KeyExpire( Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Key, Sahara.Core.Common.Redis.PlatformManagerServer.Hashes.SnapshotsHash.Expiration, CommandFlags.FireAndForget ); } catch { } #endregion #endregion } #endregion return(infrastructureSnapshot); }