public IEnumerable <MetricAlert> Get(string account, string id, [FromUri] AlertsQuery query, string originId = null) { var config = App.Config.GetMediaServicesSet(account); if (config == null) { throw new HttpResponseException(System.Net.HttpStatusCode.NotFound); } var channelAlerts = Get(config, id, query); if (originId != null && (query.MetricTypes == null || query.MetricTypes.Contains(MetricType.Origin))) { try { query.MetricTypes = null; var originAlerts = GetOriginAlerts(config, originId, query); if (originAlerts != null) { channelAlerts = channelAlerts.Concat(originAlerts); } }catch (Exception qryEx) { throw qryEx; } } return((channelAlerts != null)? channelAlerts : new List <MetricAlert>()); }
protected bool ValidateQuery(AlertsQuery query) { if (query != null) { if (query.EndTime != default(DateTime)) { query.EndTime = query.EndTime.ToUniversalTime(); } else { query.EndTime = DateTime.UtcNow; } if (query.StartTime != default(DateTime)) { query.StartTime = query.StartTime.ToUniversalTime(); } else { query.StartTime = query.EndTime.AddHours(-1); } if (query.EndTime <= query.StartTime) { return(false); } } return(true); }
//accounts/nbcsgliveprodwestms/channelalerts/01fb2778-02c5-4247-9ac3-50169126fa47 public IEnumerable <MetricAlert> Get(string account, string id, [FromUri] AlertsQuery query) { var config = App.Config.GetMediaServicesSet(account); if (config == null) { throw new HttpResponseException(System.Net.HttpStatusCode.NotFound); } return(Get(config, id, query)); }
public IActionResult Get(string account, string id, [FromQuery] AlertsQuery query) { var config = App.Config.GetMediaServicesSet(account); if (config == null) { return(NotFound()); } if (!ValidateQuery(query)) { return(BadRequest()); } return(Ok(Get(config, id, query))); }
public IEnumerable <MetricAlert> Get(string account, string id, [FromUri] AlertsQuery query, string originId = null) { var config = App.Config.GetMediaServicesSet(account); if (config == null) { throw new HttpResponseException(System.Net.HttpStatusCode.NotFound); } var channelAlerts = Get(config, id, query); if (originId != null && (query.MetricTypes == null || query.MetricTypes.Contains(MetricType.Origin))) { query.MetricTypes = null; channelAlerts = channelAlerts.Concat(GetOriginAlerts(config, originId, query)); } return(channelAlerts.OrderByDescending(alert => alert.Date)); }
public void GetOriginAlertsTest() { var account = App.Config.GetDefaultAccount(); var context = account.GetContext(); var origins = context.StreamingEndpoints.ToList(); var runningOrigins = origins.Where(s => s.State == StreamingEndpointState.Running); var controller = new OriginAlertsController(); var query = new AlertsQuery { EndTime = DateTime.UtcNow, StartTime = DateTime.UtcNow - TimeSpan.FromHours(1), StatusLevels = new[] { HealthStatus.Warning, HealthStatus.Critical } }; foreach (var origin in runningOrigins) { var alerts = controller.Get(account.AccountName, origin.Id.NimbusIdToRawGuid(), query).ToList(); Trace.TraceInformation("Channe:{0}, Alerts:{1}", origin.Id, alerts.Count); } }
public void GetChannelAlertsWithTimeRangeTest() { var account = App.Config.GetDefaultAccount(); var context = account.GetContext(); var channels = context.Channels.ToList(); var runningChannels = channels.Where(c => c.State == ChannelState.Running); var controller = new ChannelAlertsController(); var query = new AlertsQuery { EndTime = DateTime.UtcNow, StartTime = DateTime.UtcNow - TimeSpan.FromHours(1), MetricTypes = new[] { MetricType.Archive, MetricType.Encoding, MetricType.Ingest }, StatusLevels = new [] { HealthStatus.Warning, HealthStatus.Critical } }; foreach (var channel in runningChannels) { var alerts = controller.Get(account.AccountName, channel.Id.NimbusIdToRawGuid(), query).ToList(); Trace.TraceInformation("Channe:{0}, Alerts:{1}", channel.Id, alerts.Count); } }
public IActionResult Get(string account, string id, [FromQuery] AlertsQuery query, string originId = null) { var config = App.Config.GetMediaServicesSet(account); if (config == null) { return(NotFound()); } if (!ValidateQuery(query)) { return(BadRequest()); } var channelAlerts = Get(config, id, query); if (originId != null && (query.MetricTypes == null || query.MetricTypes.Contains(MetricType.Origin))) { try { query.MetricTypes = null; var originAlerts = GetOriginAlerts(config, originId, query); if (originAlerts != null) { channelAlerts = channelAlerts.Concat(originAlerts); } } catch (Exception qryEx) { throw qryEx; } } var alerts = channelAlerts ?? new List <MetricAlert>(); return(Ok(alerts)); }
internal List <MetricAlert> Get(MediaServicesSetConfig config, string originId, AlertsQuery query) { //var origId = originId.GuidToOriginId(); var originAlerts = GetAlertsFromCache <OriginAlert>(originId); if (originAlerts == null) { var dataAccess = new AzureDataAccess(config.DataStorageConnections); if (query.StatusLevels == null) { originAlerts = dataAccess.GetOriginAlerts(originId); } else { originAlerts = dataAccess.GetOriginAlerts(originId, query.StatusLevels); } } List <MetricAlert> alerts = new List <MetricAlert>(); if (originAlerts != null && originAlerts.Count > 0) { foreach (var orgAlt in originAlerts) { alerts.Add(new MetricAlert { AlertID = orgAlt.AlertID, Name = orgAlt.OriginName, Date = orgAlt.AlertDate.AddTicks(orgAlt.AlertTime.Ticks), Description = orgAlt.Details, Status = orgAlt.ErrorLevel }); } } return(alerts); }
private IEnumerable <MetricAlert> Get(MediaServicesSetConfig config, string channelId, AlertsQuery query) { var endTime = DateTime.UtcNow; var startTime = endTime.AddHours(-1); HealthStatus[] healthLevels = null; MetricType[] metricTypes = null; if (query != null) { if (query.StartTime != default(DateTime)) { startTime = query.StartTime.ToUniversalTime(); } if (query.EndTime != default(DateTime)) { endTime = query.EndTime.ToUniversalTime(); } if (endTime <= startTime) { throw new HttpResponseException(System.Net.HttpStatusCode.BadRequest); } metricTypes = query.MetricTypes; healthLevels = query.StatusLevels; } var chid = channelId.GuidToChannelId(); var alertstring = CloudCache.Get(chid + "Alerts"); List <ChannelAlert> channelAlerts; if (alertstring != null) { channelAlerts = JsonConvert.DeserializeObject <List <ChannelAlert> >(alertstring); } else { var dataAccess = new AzureDataAccess(config.DataStorageConnections); channelAlerts = dataAccess.ExecuteReadQuery(context => { var dbAlerts = context.ChannelAlerts.Where(alert => alert.ChannelId == channelId && alert.Timestamp >= startTime && alert.Timestamp <= endTime); if (healthLevels != null) { var predicate = CreatePredicate(healthLevels, "ErrorLevel"); dbAlerts = dbAlerts.Where(predicate); } if (metricTypes != null) { var condition = CreatePredicate(metricTypes, "MetricType"); dbAlerts = dbAlerts.Where(condition); } return(dbAlerts.ToList()); }); } IEnumerable <MetricAlert> alerts = null; if (channelAlerts != null) { alerts = channelAlerts.Select(alert => new MetricAlert { Name = alert.ChannelId, Date = alert.Timestamp, Description = alert.Details, Status = alert.ErrorLevel }); } return(alerts); }
private IEnumerable <MetricAlert> GetOriginAlerts(MediaServicesSetConfig config, string originId, AlertsQuery query) { var controller = new OriginAlertsController(); return(controller.Get(config, originId, query)); }
internal IEnumerable <MetricAlert> Get(MediaServicesSetConfig config, string originId, AlertsQuery query) { var endTime = DateTime.UtcNow; var startTime = endTime.AddHours(-1); HealthStatus[] healthLevels = null; if (query != null) { if (query.StartTime != default(DateTime)) { startTime = query.StartTime.ToUniversalTime(); } if (query.EndTime != default(DateTime)) { endTime = query.EndTime.ToUniversalTime(); } if (endTime <= startTime) { throw new HttpResponseException(System.Net.HttpStatusCode.BadRequest); } healthLevels = query.StatusLevels; } //var origId = originId.GuidToOriginId(); string alertstring = CloudCache.Get(originId + "Alerts"); List <OriginAlert> originAlerts; if (alertstring != null) { originAlerts = JsonConvert.DeserializeObject <List <OriginAlert> >(alertstring); } else { var dataAccess = new AzureDataAccess(config.DataStorageConnections); if (healthLevels == null) { originAlerts = dataAccess.GetOriginAlerts(originId); } else { originAlerts = dataAccess.GetOriginAlerts(originId, healthLevels); } } List <MetricAlert> alerts = new List <MetricAlert>(); if (originAlerts != null && originAlerts.Count > 0) { foreach (var orgAlt in originAlerts) { alerts.Add(new MetricAlert { AlertID = orgAlt.AlertID, Name = orgAlt.OriginName, Date = orgAlt.AlertDate.AddTicks(orgAlt.AlertTime.Ticks), Description = orgAlt.Details, Status = orgAlt.ErrorLevel }); } } return(alerts); }
private IEnumerable <MetricAlert> Get(MediaServicesSetConfig config, string channelId, AlertsQuery query) { var endTime = DateTime.UtcNow; var startTime = endTime.AddHours(-1); HealthStatus[] healthLevels = null; MetricType[] metricTypes = null; if (query != null) { if (query.StartTime != default(DateTime)) { startTime = query.StartTime.ToUniversalTime(); } if (query.EndTime != default(DateTime)) { endTime = query.EndTime.ToUniversalTime(); } if (endTime <= startTime) { throw new HttpResponseException(System.Net.HttpStatusCode.BadRequest); } metricTypes = query.MetricTypes; healthLevels = query.StatusLevels; } var chid = channelId.NimbusIdToGuid(); string alertstring = CloudCache.Get(chid + "Alerts"); List <ChannelAlert> channelAlerts; if (alertstring != null) { channelAlerts = JsonConvert.DeserializeObject <List <ChannelAlert> >(alertstring); } else { var dataAccess = new AzureDataAccess(config.DataStorageConnections); channelAlerts = dataAccess.GetChannelAlerts(chid.ToString(), healthLevels, metricTypes); #region Not used //channelAlerts = dataAccess.ExecuteReadQuery(context => //{ // var dbAlerts = context.ChannelAlerts.Where(alert => // alert.ChannelId == channelId && // alert.AlertDate >= startTime.AddTicks(alert.AlertTime.Ticks) && // alert.AlertDate <= endTime); // if (healthLevels != null) // { // var predicate = CreatePredicate(healthLevels, "ErrorLevel"); // dbAlerts = dbAlerts.Where(predicate); // } // if (metricTypes != null) // { // var condition = CreatePredicate(metricTypes, "MetricType"); // dbAlerts = dbAlerts.Where(condition); // } // return dbAlerts.ToList(); //}); #endregion } List <MetricAlert> alerts = new List <MetricAlert>(); if (channelAlerts != null) { foreach (var chAlt in channelAlerts) { alerts.Add(new MetricAlert { AlertID = chAlt.AlertID, Name = chAlt.ChannelName, Date = chAlt.AlertDate.AddTicks(chAlt.AlertTime.Ticks), Description = chAlt.Details, Status = chAlt.ErrorLevel }); } } return(alerts); }
private IEnumerable <MetricAlert> Get(MediaServicesSetConfig config, string channelId, AlertsQuery query) { var chid = channelId.NimbusIdToGuid(); var channelAlerts = GetAlertsFromCache <ChannelAlert>(chid.ToString()); if (channelAlerts == null) { var dataAccess = new AzureDataAccess(config.DataStorageConnections); channelAlerts = dataAccess.GetChannelAlerts(chid.ToString(), query.StatusLevels, query.MetricTypes); } IEnumerable <MetricAlert> alerts = null; if (channelAlerts != null) { alerts = channelAlerts.Select(chAlt => new MetricAlert { AlertID = chAlt.AlertID, Name = chAlt.ChannelName, Date = chAlt.AlertDate.AddTicks(chAlt.AlertTime.Ticks), Description = chAlt.Details, Status = chAlt.ErrorLevel }); } return(alerts); }