/// <summary> /// 根据订阅ID查询eSight /// </summary> /// <param name="subscribeId">The subscribe identifier.</param> /// <returns>Huawei.SCOM.ESightPlugin.Models.HWESightHost.</returns> public HWESightHost GetEntityBySubscribeId(string subscribeId) { IObjectReader <EnterpriseManagementObject> items = OM12Connection.Query <EnterpriseManagementObject>(ESightAppliance.EntityClassName, $"SubscribeID='{subscribeId}'"); return(items.Select(ConvertMonitoringObjectToESightHost()).FirstOrDefault()); }
/// <summary> /// 根据IP查找ESight实体。 /// </summary> /// <param name="hostIp">The host ip.</param> /// <returns>The <see cref="HWESightHost" />.</returns> public HWESightHost GetEntityByHostIp(string hostIp) { IObjectReader <EnterpriseManagementObject> items = OM12Connection.Query <EnterpriseManagementObject>(ESightAppliance.EntityClassName, $"Host='{hostIp}'"); return(items.Select(ConvertMonitoringObjectToESightHost()).FirstOrDefault()); }
/// <summary> /// Convert OM MonitoringObject to HWESightHost Entity Function /// </summary> /// <returns></returns> private static Func <EnterpriseManagementObject, HWESightHost> ConvertMonitoringObjectToESightHost() { return(obj => { var props = OM12Connection.GetManagementPackProperties(obj); HWESightHost appliance = new HWESightHost { HostIP = obj[props["Host"]].Value as String, HostPort = Convert.ToInt32(obj[props["Port"]].Value), AliasName = obj[props["AliasName"]].Value as String, SystemID = obj[props["SystemId"]].Value as String, LoginAccount = obj[props["LoginAccount"]].Value as String, LoginPd = obj[props["LoginPassword"]].Value as String, CreateTime = ((DateTime)obj[props["CreatedOn"]].Value).ToLocalTime(), LastModifyTime = ((DateTime)obj[props["LastModifiedOn"]].Value).ToLocalTime(), OpenID = obj[props["OpenID"]].Value as String, SubscribeID = obj[props["SubscribeID"]].Value as String, SubKeepAliveStatus = Convert.ToInt32(obj[props["SubKeepAliveStatus"]].Value), SubscriptionAlarmStatus = Convert.ToInt32(obj[props["SubscriptionAlarmStatus"]].Value), SubscriptionNeDeviceStatus = Convert.ToInt32(obj[props["SubscriptionNeDeviceStatus"]].Value), SubKeepAliveError = obj[props["SubKeepAliveError"]].Value as String, SubscripeAlarmError = obj[props["SubscripeAlarmError"]].Value as String, SubscripeNeDeviceError = obj[props["SubscripeNeDeviceError"]].Value as String, //LatestConnectInfo = obj[props["LatestConnectInfo"]].Value as String, //LatestStatus = obj[props["LatestStatus"]].Value as string, }; return appliance; }); }
/// <summary> /// The get list. /// </summary> /// <param name="condition"> /// The condition. /// </param> /// <returns> /// The <see> /// <cref>IList</cref> /// </see> /// . /// </returns> public IList <HWESightHost> GetList(string condition = "1=1 ") { IObjectReader <EnterpriseManagementObject> monitoringObjects = OM12Connection.All <EnterpriseManagementObject>(ESightAppliance.EntityClassName); IEnumerable <HWESightHost> appliances = monitoringObjects.Select(ConvertMonitoringObjectToESightHost()); return(appliances.OrderByDescending(x => x.CreateTime).ToList()); }
public void InsertAlert() { var eSightHost = "192.168.0.2"; var objects = OM12Connection.Query <PartialMonitoringObject>(ESightAppliance.EntityClassName, $"Host='{eSightHost}'"); PartialMonitoringObject p = (PartialMonitoringObject)objects.First(); //OM12Connection.HuaweiESightMG.GetMonitoringAlert(); }
public void TestMethod1() { // ISAvailable && AvailableLastModified && LastModified var objects = OM12Connection.All <PartialMonitoringObject>(EntityTypeConst.ESight.HuaweiServer).ToList(); objects.ForEach(obj => { var stateLastModified = obj.StateLastModified.HasValue ? obj.StateLastModified.Value : obj.TimeAdded; TimeSpan addedTimeLong = DateTime.UtcNow - stateLastModified.ToUniversalTime(); TimeSpan expectTimeLong = TimeSpan.FromMinutes(5) + TimeSpan.FromSeconds(20); // the interval of monitor for our object is 5 minutes. So we will wait (5m + 20s). if (addedTimeLong <= expectTimeLong) { Console.WriteLine($"{expectTimeLong - addedTimeLong}"); } //Console.WriteLine(obj.TimeAdded); //PartialMonitoringObject po = (PartialMonitoringObject)obj; //Console.WriteLine($"{po.FullName}, {po.HealthState}"); //po.RecalculateMonitoringState(); //// obj.ResetMonitoringState(); //Console.WriteLine($"{po.FullName}, {po.HealthState}"); }); //Console.WriteLine(objects.Count); //PartialMonitoringObject value = (PartialMonitoringObject) objects.First(); //var result = value.ResetMonitoringState(); //var monitors = OM12Connection.HuaweiESightMG.Monitoring.GetMonitorHierarchy(value); //ManagementPackMonitor monitor = monitors.Item; // var monitor = monitors.ChildNodes.ElementAt(3); //var filters = OM12Connection.HuaweiESightMG.Monitoring.GetMonitors(new ManagementPackMonitorCriteria("id = 'ESight.BladeServer.MainMonitor'")); //var health = value.HealthState; //Console.WriteLine(value.GetMostDerivedClasses()); //Console.WriteLine(value.GetLeastDerivedNonAbstractClass()); //Console.WriteLine(value.GetType()); //Console.WriteLine(value.GetProperties()); // 4 //System.Collections.ObjectModel.ReadOnlyCollection`1[Microsoft.EnterpriseManagement.Configuration.ManagementPackClass] //ESight.HighdensityServer //Microsoft.EnterpriseManagement.Common.EnterpriseManagementObject //System.Collections.ObjectModel.ReadOnlyCollection`1[Microsoft.EnterpriseManagement.Configuration.ManagementPackProperty] //Rackserver //string deviceId = "192.168.0.2-Rack123456c"; //IObjectReader<EnterpriseManagementObject> objectReader = OM12Connection.Query(EntityTypeConst.ESight.HuaweiServer, $"DN = '{deviceId}'", // new ObjectQueryOptions(ObjectPropertyRetrievalBehavior.None)); //EnterpriseManagementObject enterpriseManagementObject = objectReader.First(); //Console.WriteLine(enterpriseManagementObject); }
public void GetAllAlert() { OM12Connection.HuaweiESightConnector.GetMonitoringAlerts(); // OM12Connection.HuaweiESightMG.GetMonitoringAlert(); var objects = OM12Connection.All <EnterpriseManagementObject>(EntityTypeConst.ESight.HuaweiServer).ToList(); MonitoringClass mpClass = (MonitoringClass)OM12Connection.GetManagementPackClass(EntityTypeConst.ESight.HuaweiServer); OM12Connection.HuaweiESightMG.GetMonitoringAlertReader(mpClass); Console.WriteLine(objects.Count); }
public void TestGetAllESightApplicanceAsync() { string clazzName = EntityTypeConst.BladeServer.Fan; ManagementPackClass clazz = OM12Connection.GetManagementPackClass(clazzName); var clazzProps = clazz.GetProperties(); var list = OM12Connection.All <PartialMonitoringObject>(clazzName); var first = list.FirstOrDefault(); var props = OM12Connection.GetManagementPackProperties(first); var baseProps = OM12Connection.GetManagementPackProperties(EntityTypeConst.ESight.HuaweiServer); var Status = first[props["Status"]].Value; var DN = first[baseProps["DN"]].Value; Console.WriteLine(clazz); }
public void TestQueryAlert() { var objects = OM12Connection.All <PartialMonitoringObject>(EntityTypeConst.BladeServer.MainName).ToList(); objects.ForEach(monitoringObject => { var criteria = $"ResolutionState != '255' and CustomField5 = '16777219' " + $"and CustomField8 = 'Event Subject=CPUMemoryCPU1Memory'"; ReadOnlyCollection <MonitoringAlert> alerts = monitoringObject.GetMonitoringAlerts(new MonitoringAlertCriteria(criteria)); Console.WriteLine(alerts.Count); }); //OM12Connection.HuaweiESightMG.GetMonitoringAlert(); //p.InsertCustomMonitoringEvent // We will identify the alert using suppression rule. }
/// <summary> /// Updates esight connect status. /// </summary> /// <param name="hostIp">The host ip.</param> /// <param name="latestStatus">The latest status.</param> /// <param name="latestConnectInfo">The latest connect information.</param> public void UpdateESightConnectStatus(string hostIp, string latestStatus, string latestConnectInfo) { IObjectReader <EnterpriseManagementObject> items = OM12Connection.Query <EnterpriseManagementObject>(ESightAppliance.EntityClassName, $"Host='{hostIp}'"); EnterpriseManagementObject managementObject = items.FirstOrDefault(); if (managementObject == null) { throw new Exception($"Can not find the eSight:{hostIp}"); } var props = OM12Connection.GetManagementPackProperties(managementObject); managementObject[props["LastModifiedOn"]].Value = DateTime.UtcNow; managementObject[props["LatestStatus"]].Value = latestStatus; managementObject[props["LatestConnectInfo"]].Value = latestConnectInfo; managementObject.Overwrite(); }
/// <summary> /// Updates the esight alarm. /// </summary> /// <param name="hostIp">The host ip.</param> /// <param name="alarmStatus">The alarm status.</param> /// <param name="error">The error.</param> public void UpdateESightNeDevice(string hostIp, int alarmStatus, string error) { IObjectReader <EnterpriseManagementObject> items = OM12Connection.Query <EnterpriseManagementObject>(ESightAppliance.EntityClassName, $"Host='{hostIp}'"); EnterpriseManagementObject managementObject = items.FirstOrDefault(); if (managementObject == null) { throw new Exception($"Can not find the eSight:{hostIp}"); } var props = OM12Connection.GetManagementPackProperties(managementObject); managementObject[props["LastModifiedOn"]].Value = DateTime.UtcNow; managementObject[props["SubscripeNeDeviceError"]].Value = error; managementObject[props["SubscriptionNeDeviceStatus"]].Value = alarmStatus; managementObject.Overwrite(); }
private ESightAppliance GetModelFromMpObject(EnterpriseManagementObject obj) { var props = OM12Connection.GetManagementPackProperties(obj); var model = new ESightAppliance() { Host = obj[props["Host"]].Value as String, Port = obj[props["Port"]].Value.ToString(), AliasName = obj[props["AliasName"]].Value as String, SystemId = obj[props["SystemId"]].Value as String, LoginAccount = obj[props["LoginAccount"]].Value as String, LoginPassword = obj[props["LoginPassword"]].Value as String, CreatedOn = ((DateTime)obj[props["CreatedOn"]].Value).ToLocalTime(), LastModifiedOn = ((DateTime)obj[props["LastModifiedOn"]].Value).ToLocalTime(), SubscriptionAlarmStatus = Convert.ToInt32(obj[props["SubscriptionAlarmStatus"]].Value), SubscriptionNeDeviceStatus = Convert.ToInt32(obj[props["SubscriptionNeDeviceStatus"]].Value), //LatestStatus = obj[props["LatestStatus"]].Value as string, SubscribeID = obj[props["SubscribeID"]].Value as string, }; LogHelper.Info($"Host[{model.Host}] Port[{model.Port}] LoginAccount[{model.LoginAccount}] SubscribeID[{model.SubscribeID}] "); return(model); }