private void CreateOrCloseEventServiceAlarm(bool isHaveOldAlarm, EventCollection currentState) { if (currentState.Health != Health.OK) { if (!isHaveOldAlarm) { OnLog("Insert Event:Webserver unavailable"); var alarm = new ApplianceAlarm { OptType = "1", AlarmName = "Webserver unavailable ", AlarmType = EnumAlarmType.WebServerUnavailable, PossibleCause = "IIS express service is stopped or uninstalled.", Suggstion = "Check the website", Additional = currentState.ErrorMsg }; var applianceEvent = new ApplianceEvent(alarm); ApplianceConnector.Instance.InsertEvent(applianceEvent); } } else { if (isHaveOldAlarm) { OnLog("Close Event:Webserver unavailable"); var alarm = new ApplianceAlarm { OptType = "2", AlarmType = EnumAlarmType.WebServerUnavailable, }; var applianceEvent = new ApplianceEvent(alarm); ApplianceConnector.Instance.InsertEvent(applianceEvent); } } }
private void CreateOrCloseServerMpAlarm(bool isHaveOldAlarm, ServerCollection currentState) { if (currentState.Health != Health.OK) { if (!isHaveOldAlarm) { OnLog("Insert Event:Server ManagementPack Missing"); var alarm = new ApplianceAlarm { OptType = "1", AlarmName = "Server ManagementPack Missing", AlarmType = EnumAlarmType.ServerMpMissing, PossibleCause = "The Management Pack of the plug-in is uninstalled.", Suggstion = "import the Huawei.FusionDirector.Server.Library.mpb", Additional = currentState.ErrorMsg }; var applianceEvent = new ApplianceEvent(alarm); ApplianceConnector.Instance.InsertEvent(applianceEvent); } } else { if (isHaveOldAlarm) { OnLog("Close Event:Server ManagementPack Missing"); var alarm = new ApplianceAlarm { OptType = "2", AlarmType = EnumAlarmType.ServerMpMissing, }; var applianceEvent = new ApplianceEvent(alarm); ApplianceConnector.Instance.InsertEvent(applianceEvent); } } }
public void Update(ApplianceEvent data) { var app = _production.SmappeeConfig.SingleOrDefault(a => a.Id == data.ApplianceId); if (app == default(Appliance) || string.IsNullOrEmpty(app.AssociatedTransponder)) { return; } var pad = _padStates.SingleOrDefault(p => p.Value.Any(t => t.Id == app.AssociatedTransponder && t.Active)).Key; if (!string.IsNullOrEmpty(pad)) { var areas = GetAssociatedAreas(pad); foreach (var area in areas) { var oldState = _aoiStates[area.Id]; var newState = new AoiState { Timestamp = data.Timestamp, AreaId = area.Id }; if (data.WattChange > 0) { newState.Value = UpdateConfidence(oldState.Value, Significance.ApplianceStart); } else { newState.Value = UpdateConfidence(oldState.Value, Significance.ApplianceStop); if (newState.Value < 0) { newState.Value = 0; } } _aoiStates[area.Id] = newState; StateChanged(this, newState); } } }
private void CreateOrCloseFusionDirectorAlarm(List <MonitoringAlert> existAlarmData, FusionDirectorCollection currentState) { var fdStatuses = JsonConvert.DeserializeObject <Dictionary <string, string> >(currentState.ErrorMsg); foreach (var fdStatus in fdStatuses) { var fdIp = fdStatus.Key; var error = fdStatus.Value; bool isHaveOldAlarm = existAlarmData.Any(x => x.CustomField1 == EnumAlarmType.FdConnectError.ToString() && x.CustomField4.Contains(fdIp)); if (fdStatus.Value != "OK")//本次有告警,则插入或更新告警 { OnLog($"[{fdIp}] Insert Or Update Event:FusionDirector connect Error"); var alarm = new ApplianceAlarm { OptType = "1", AlarmName = "FusionDirector Connect Error", AlarmType = EnumAlarmType.FdConnectError, PossibleCause = $"{error}", Suggstion = "check whether the FusionDirector server is shut down or whether the network is abnormal.", Additional = error }; var applianceEvent = new ApplianceEvent(alarm); ApplianceConnector.Instance.InsertEvent(applianceEvent, fdIp); } else { //本次没有告警 且有旧的告警,则关闭 if (isHaveOldAlarm) { OnLog($"[{fdIp}] Close Event:FusionDirector Connect Error"); var alarm = new ApplianceAlarm { OptType = "2", AlarmType = EnumAlarmType.FdConnectError, }; var applianceEvent = new ApplianceEvent(alarm); ApplianceConnector.Instance.InsertEvent(applianceEvent, fdIp); } } } }
public void setEvent(ApplianceEvent eventt) { this.eventt = eventt; }
public void setEvent(ApplianceEvent eventt) { this.eventt = eventt; }
/// <summary> /// Inserts the event. /// </summary> /// <param name="mpClass">The mp class.</param> /// <param name="eventData">The event data.</param> public void InsertEvent(ApplianceEvent eventData, string fusionDirectorIp) { var logger = HWLogger.Service; try { var alarmType = eventData.AlarmData.AlarmType.ToString(); MGroup.Instance.CheckConnection(); var logPre = $"ApplianceEvent:[alarmType:{alarmType}] [OptType={eventData.OptType}] [LevelId={eventData.LevelId}] "; var obj = GetAppliance(); if (obj == null) { logger.Warn($"{logPre} Can not find the ApplianceObject"); return; } var isReady = CheckAndWaitHealthStateReady(obj); if (!isReady) { logger.Warn($"{logPre} The MonitoringObject state is uninitialized.Drop the event."); return; } var alertHistory = this.GetUnclosedAlert(); switch (eventData.OptType) { case "1": #region 告警 //如果不存在,则插入 var alertToUpdate = alertHistory.FirstOrDefault(x => x.CustomField1 == alarmType && x.CustomField4.Contains(fusionDirectorIp)); if (alertToUpdate == null || alertToUpdate.TimeAdded < MGroup.Instance.MpInstallTime) { obj.InsertCustomMonitoringEvent(eventData.ToCustomMonitoringEvent()); logger.Debug($"{logPre}Insert new Event."); } else { #region 存在则更新 if (alertToUpdate != null) { alertToUpdate.CustomField4 = eventData.AlarmData.PossibleCause; alertToUpdate.CustomField5 = eventData.AlarmData.Additional; alertToUpdate.Update(eventData.AlarmData.Additional); logger.Debug($"{logPre}Update Event."); } else { logger.Warn($"{logPre}Ingore Event.Can not find the alert."); } #endregion } #endregion break; case "2": #region 清除告警 if (eventData.LevelId == 1 || eventData.LevelId == 2) //清除告警 { var alertToClose = alertHistory.FirstOrDefault(x => x.CustomField1 == alarmType && x.CustomField4.Contains(fusionDirectorIp)); if (alertToClose != null) { alertToClose.ResolutionState = this.CloseState.ResolutionState; alertToClose.Update("Close by sdk."); logger.Debug($"{logPre}Close Event."); } else { logger.Warn($"{logPre}Ingore Event.Can not find the alert."); } } else { logger.Warn($"{logPre}Ignore Event."); //忽略事件 } #endregion break; default: logger.Error($"{logPre}Unknown OptType."); break; } } catch (Exception ex) { logger.Error(ex); } }