def get_alert(cls, service, alert):
     if service.state == "active":
         description = alert.description.format(
             service.name, service.state, service.active_threshold)
     else:
         description = alert.description.format(
             service.name, service.state, service.nonactive_threshold)
     return {
         "sensor_request_type": {
             "service_status_alert": {
                 "host_id": socket.getfqdn(),
                 "severity": SeverityReader().map_severity(
                     alert.alert_type),
                 "alert_id": get_alert_id(str(int(time.time()))),
                 "alert_type": alert.alert_type,
                 "info": {
                     "resource_type": cls.RESOURCE_TYPE,
                     "resource_id": service.name,
                     "event_time": str(int(time.time())),
                     "description": description,
                     "impact": alert.impact.format(service.name),
                     "recommendation": alert.recommendation,
                 },
                 "specific_info": {
                     "service_name": service.name,
                     "previous_state": service.previous_state,
                     "state": service.state,
                     "previous_substate": service.previous_substate,
                     "substate": service.substate,
                     "previous_pid": service.previous_pid,
                     "pid": service.pid,
                 }
             }
         }
     }
    def make_response(self, component_details, component, component_type,
                      resource_id):

        resource_type = "enclosure:{}:{}".format(component, component_type)
        epoch_time = str(int(time.time()))
        alert_id = mon_utils.get_alert_id(epoch_time)

        if component == "fru":
            if resource_id == self.RESOURCE_ALL:
                for comp in component_details:
                    comp['resource_id'] = self.fru_response_manipulators[
                        component_type](comp if component_type != self.FRU_DISK
                                        else [comp])
            else:
                resource_id = self.fru_response_manipulators[component_type](
                    component_details)

        response = {
            "alert_type": "GET",
            "severity": "informational",
            "host_id": socket.getfqdn(),
            "alert_id": alert_id,
            "info": {
                "site_id": self.rssencl.site_id,
                "rack_id": self.rssencl.rack_id,
                "node_id": self.rssencl.node_id,
                "cluster_id": self.rssencl.cluster_id,
                "resource_type": resource_type,
                "resource_id": resource_id,
                "event_time": epoch_time
            },
            "specific_info": component_details
        }

        return response
Exemple #3
0
    def __init__(self, host_id,
                       local_time,
                       interfaces,
                       resource_id,
                       resource_type,
                       alert_type,
                       severity,
                       event,
                       username  = "******",
                       signature = "N/A",
                       in_time      = "N/A",
                       expires   = -1):
        super(IFdataMsg, self).__init__()

        self._username          = username
        self._signature         = signature
        self._time              = in_time
        self._expires           = expires
        self._host_id           = host_id
        self._local_time        = local_time
        self._interfaces        = interfaces
        self._resource_id       = resource_id
        self._resource_type     = resource_type
        self.alert_type         = alert_type
        self._severity          = severity

        epoch_time = str(int(time.time()))
        alert_id = mon_utils.get_alert_id(epoch_time)
        self._json = {
                       "username": self._username,
                       "expires": self._expires,
                       "description": self.DESCRIPTION,
                       "title": self.TITLE,
                       "signature": self._signature,
                       "time": self._time,
                       "message": {
                          "sspl_ll_msg_header": {
                             "msg_version": self.MESSAGE_VERSION,
                             "schema_version": self.SCHEMA_VERSION,
                             "sspl_version": self.SSPL_VERSION,
                          },
                          "sensor_response_type": {
                             "info": {
                                "event_time": epoch_time,
                                "resource_id": self._resource_id,
                                "resource_type": self._resource_type,
                                "description": event
                             },
                             "specific_info": {
                                "localtime": self._local_time,
                                "interfaces": self._interfaces
                             },
                             "host_id": self._host_id,
                             "alert_type":self.alert_type,
                             "severity": self._severity,
                             "alert_id": alert_id
                          }
                       }
                    }
    def __init__(self, info, username="******", signature="N/A", expires=-1):

        super(IEMDataMsg, self).__init__()

        self._epoch_time = str(int(time.time()))

        self._json = {
            "username": username,
            "description": self.DESCRIPTION,
            "title": self.TITLE,
            "expires": expires,
            "signature": signature,
            "time": self._epoch_time,
            "message": {
                "sspl_ll_msg_header": {
                    "schema_version": self.SCHEMA_VERSION,
                    "sspl_version": self.SSPL_VERSION,
                    "msg_version": self.MESSAGE_VERSION,
                },
                "sensor_response_type": {
                    "info": {
                        "event_time": info.get("event_time"),
                        "resource_id": "iem",
                        "site_id": info.get("site_id"),
                        "node_id": info.get("node_id"),
                        "cluster_id": info.get("cluster_id"),
                        "rack_id": info.get("rack_id"),
                        "resource_type": "iem",
                        "description": info.get("description"),
                        "impact": info.get("impact"),
                        "recommendation": info.get("recommendation")
                    },
                    "alert_type": info.get("alert_type"),
                    "severity": info.get("severity"),
                    "specific_info": {
                        "source": info.get("source_id"),
                        "component": info.get("component_id"),
                        "module": info.get("module_id"),
                        "event": info.get("event_id"),
                        "IEC": info.get("IEC")
                    },
                    "alert_id": mon_utils.get_alert_id(self._epoch_time),
                    "host_id": socket.getfqdn()
                }
            }
        }
Exemple #5
0
 def _build_generic_info(self, response):
     """
     Build json with generic information
     :param response:
     :return:
     """
     epoch_time = str(int(time.time()))
     response['instance_id'] = self._resource_id
     response['alert_type'] = AlertTypes.GET.value
     response['severity'] = SeverityTypes.INFORMATIONAL.value
     response['alert_id'] = mon_utils.get_alert_id(epoch_time)
     response['info'] = {
         "resource_type": f"enclosure:{self._enclosure_type.lower()}:{self._enclosure_resource_type.lower()}",
         "resource_id": self._resource_id,
         "event_time": epoch_time,
     }
     # fetch host details
     response["host_id"] = socket.getfqdn()
Exemple #6
0
    def make_response(self, component_details, component, component_type,
            resource_id, ctrl_action = None):

        resource_type = "enclosure:{}:{}".format(component, component_type)
        epoch_time = str(int(time.time()))
        alert_id = mon_utils.get_alert_id(epoch_time)

        if ctrl_action in self.CTRL_ACTION_LST:
            resource_type = component_details['resource_type']
            del component_details['resource_type']
            self.ALERT_TYPE = component_details['alert_type']
            del component_details['alert_type']
            self.SEVERITY = component_details['severity']
            del component_details['severity']
            if self.SEVERITY == "warning":
                del component_details['description']
        elif component == "fru":
            if resource_id == self.RESOURCE_ALL:
                for comp in component_details:
                    comp['resource_id'] = self.fru_response_manipulators[
                                            component_type](comp if component_type!=self.FRU_DISK else [comp])
            else:
                resource_id = self.fru_response_manipulators[component_type](component_details)

        response = {
          "alert_type": self.ALERT_TYPE,
          "severity": self.SEVERITY,
          "host_id": socket.getfqdn(),
          "alert_id": alert_id,
          "info": {
            "resource_type": resource_type,
            "resource_id": resource_id,
            "event_time": epoch_time
          },
          "specific_info": component_details
        }

        return response
Exemple #7
0
    def __init__(self,
                 host_id,
                 local_time,
                 boot_time,
                 up_time,
                 uname,
                 units,
                 site_id,
                 rack_id,
                 node_id,
                 cluster_id,
                 total_memory,
                 logged_in_users,
                 process_count,
                 running_process_count,
                 alert_type,
                 username="******",
                 signature="N/A",
                 in_time="N/A",
                 expires=-1):
        super(HostUpdateMsg, self).__init__()

        self._username = username
        self._signature = signature
        self._time = in_time
        self._expires = expires
        self._host_id = host_id
        self._local_time = local_time
        self._boot_time = boot_time
        self._up_time = up_time
        self._uname = uname
        self._total_memory = total_memory
        self._units = units
        self._logged_in_users = logged_in_users
        self._process_count = process_count
        self._running_process_count = running_process_count
        self._site_id = site_id
        self._rack_id = rack_id
        self._node_id = node_id
        self._cluster_id = cluster_id
        self.alert_type = alert_type

        epoch_time = str(int(time.time()))
        alert_id = mon_utils.get_alert_id(epoch_time)

        self._json = {
            "username": self._username,
            "description": self.DESCRIPTION,
            "title": self.TITLE,
            "expires": self._expires,
            "signature": self._signature,
            "time": epoch_time,
            "message": {
                "sspl_ll_msg_header": {
                    "schema_version": self.SCHEMA_VERSION,
                    "sspl_version": self.SSPL_VERSION,
                    "msg_version": self.MESSAGE_VERSION,
                },
                "sensor_response_type": {
                    "alert_type": self.alert_type,
                    "severity": self.SEVERITY,
                    "alert_id": alert_id,
                    "host_id": self._host_id,
                    "info": {
                        "site_id": self._site_id,
                        "rack_id": self._rack_id,
                        "node_id": self._node_id,
                        "cluster_id": self._cluster_id,
                        "resource_type": self.RESOURCE_TYPE,
                        "resource_id": self.RESOURCE_ID,
                        "event_time": epoch_time
                    },
                    "specific_info": {
                        "localtime": self._local_time,
                        "bootTime": self._boot_time,
                        "upTime": self._up_time,
                        "uname": self._uname,
                        "totalMemory": self._total_memory,
                        "loggedInUsers": self._logged_in_users,
                        "processCount": self._process_count,
                        "runningProcessCount": self._running_process_count
                    }
                }
            }
        }
Exemple #8
0
    def __init__(self, host_id,
                       local_time,
                       free_space,
                       total_space,
                       disk_used_percentage,
                       units,
                       site_id, rack_id,
                       node_id, cluster_id,
                       alert_type,
                       username  = "******",
                       signature = "N/A",
                       in_time      = "N/A",
                       expires   = -1
                       ):
        super(DiskSpaceAlertMsg, self).__init__()

        self._username               = username
        self._signature              = signature
        self._time                   = in_time
        self._expires                = expires
        self._host_id                = host_id
        # No need for local time
        self._free_space             = free_space
        self._total_space            = total_space
        self._disk_used_percentage   = disk_used_percentage
        self._units                  = units

        self._site_id                = site_id
        self._rack_id                = rack_id
        self._node_id                = node_id
        self._cluster_id             = cluster_id
        self.alert_type              = alert_type

        epoch_time = str(calendar.timegm(time.gmtime()))
        alert_id = mon_utils.get_alert_id(epoch_time)

        self._json = {
                      "username" : self._username,
                      "description" : self.DESCRIPTION,
                      "title" : self.TITLE,
                      "expires" : self._expires,
                      "signature" : self._signature,
                      "time" : epoch_time,

                      "message" : {
                          "sspl_ll_msg_header": {
                              "msg_version"    : self.MESSAGE_VERSION,
                              "schema_version" : self.SCHEMA_VERSION,
                              "sspl_version"   : self.SSPL_VERSION,
                              },
                          "sensor_response_type": {
                              "alert_type": self.alert_type,
                              "severity": self.SEVERITY,
                              "alert_id": alert_id,
                              "host_id": self._host_id,
                              "info": {
                                "site_id": self._site_id,
                                "rack_id": self._rack_id,
                                "node_id": self._node_id,
                                "cluster_id": self._cluster_id,
                                "resource_type": self.RESOURCE_TYPE,
                                "resource_id": self.RESOURCE_ID,
                                "event_time": epoch_time
                              },
                              "specific_info": {
                                  "freeSpace"  : {
                                      "value" : self._free_space,
                                      "units" : self._units
                                  },
                                  "totalSpace" : {
                                      "value" : self._total_space,
                                      "units" : self._units
                                  },
                                  "diskUsedPercentage" : self._disk_used_percentage
                              }
                          }
                      }
                      }
Exemple #9
0
    def raise_alert(self, service, prev_state, state, prev_substate, substate,
                    prev_pid, pid, alert_info_index):
        """Send the alert to ServiceMsgHandler."""
        # Each alert info contains 4 fields
        # 1.Description | 2.Alert Type | 3.Impact | 4.Recommendation
        alert_info = [
            [
                f"{service} in {state} state.",  #index 0
                "fault",
                f"{service} service is unavailable.",
                "Try to restart the service"
            ],
            [
                f"{service} in a {state} state for more than {self.max_wait_time} seconds.",
                "fault",  #index 1
                f"{service} service is unavailable.",
                "Try to restart the service"
            ],
            [
                f"{service} in {state} state.",
                "fault_resolved",  #index 2
                f"{service} service is available now.",
                ""
            ],
        ]

        description = alert_info[alert_info_index][0]
        alert_type = alert_info[alert_info_index][1]
        impact = alert_info[alert_info_index][2]
        recommendation = alert_info[alert_info_index][3]

        severity = SeverityReader().map_severity(alert_type)
        epoch_time = str(self.current_time())
        alert_id = get_alert_id(epoch_time)
        host_name = socket.getfqdn()

        self._site_id = Conf.get(GLOBAL_CONF, f"{CLUSTER}>{SRVNODE}>{SITE_ID}",
                                 'DC01')
        self._rack_id = Conf.get(GLOBAL_CONF, f"{CLUSTER}>{SRVNODE}>{RACK_ID}",
                                 'RC01')
        self._node_id = Conf.get(GLOBAL_CONF, f"{CLUSTER}>{SRVNODE}>{NODE_ID}",
                                 'SN01')
        self._cluster_id = Conf.get(GLOBAL_CONF, f'{CLUSTER}>{CLUSTER_ID}',
                                    'CC01')

        info = {
            "site_id": self._site_id,
            "cluster_id": self._cluster_id,
            "rack_id": self._rack_id,
            "node_id": self._node_id,
            "resource_type": self.RESOURCE_TYPE,
            "resource_id": service,
            "event_time": epoch_time,
            "description": description,
            "impact": impact,
            "recommendation": recommendation,
        }

        alert_msg = {
            "sensor_request_type": {
                "service_status_alert": {
                    "host_id": host_name,
                    "severity": severity,
                    "alert_id": alert_id,
                    "alert_type": alert_type,
                    "info": info,
                    "specific_info": {
                        "service_name": service,
                        "previous_state": prev_state,
                        "state": state,
                        "previous_substate": prev_substate,
                        "substate": substate,
                        "previous_pid": prev_pid,
                        "pid": pid,
                    }
                }
            }
        }
        self._write_internal_msgQ(ServiceMsgHandler.name(), alert_msg)
    def __init__(self,
                 host_id,
                 local_time,
                 csps,
                 idle_time,
                 interrupt_time,
                 iowait_time,
                 nice_time,
                 softirq_time,
                 steal_time,
                 system_time,
                 user_time,
                 core_data,
                 cpu_usage,
                 site_id,
                 rack_id,
                 node_id,
                 cluster_id,
                 alert_type,
                 event,
                 username="******",
                 signature="N/A",
                 in_time="N/A",
                 expires=-1):
        super(CPUdataMsg, self).__init__()

        self._username = username
        self._signature = signature
        self._time = in_time
        self._expires = expires
        self._host_id = host_id
        self._local_time = local_time
        self._csps = csps
        self._idle_time = idle_time
        self._interrupt_time = interrupt_time
        self._iowait_time = iowait_time
        self._nice_time = nice_time
        self._softirq_time = softirq_time
        self._steal_time = steal_time
        self._system_time = system_time
        self._user_time = user_time
        self._core_data = core_data
        self._cpu_usage = cpu_usage
        self._site_id = site_id
        self._rack_id = rack_id
        self._node_id = node_id
        self._cluster_id = cluster_id
        self.alert_type = alert_type
        self.event = event

        if self.alert_type == "fault_resolved":
            self.SEVERITY = "informational"

        epoch_time = str(int(time.time()))
        alert_id = mon_utils.get_alert_id(epoch_time)

        self._json = {
            "username": self._username,
            "description": self.DESCRIPTION,
            "title": self.TITLE,
            "expires": self._expires,
            "signature": self._signature,
            "time": epoch_time,
            "message": {
                "sspl_ll_msg_header": {
                    "schema_version": self.SCHEMA_VERSION,
                    "sspl_version": self.SSPL_VERSION,
                    "msg_version": self.MESSAGE_VERSION,
                },
                "sensor_response_type": {
                    "alert_type": self.alert_type,
                    "severity": self.SEVERITY,
                    "alert_id": alert_id,
                    "host_id": self._host_id,
                    "info": {
                        "site_id": self._site_id,
                        "rack_id": self._rack_id,
                        "node_id": self._node_id,
                        "cluster_id": self._cluster_id,
                        "resource_type": self.RESOURCE_TYPE,
                        "resource_id": self.RESOURCE_ID,
                        "event_time": epoch_time,
                        "description": self.event
                    },
                    "specific_info": {
                        "localtime": self._local_time,
                        "csps": self._csps,
                        "idleTime": self._idle_time,
                        "interruptTime": self._interrupt_time,
                        "iowaitTime": self._iowait_time,
                        "niceTime": self._nice_time,
                        "softirqTime": self._softirq_time,
                        "stealTime": self._steal_time,
                        "systemTime": self._system_time,
                        "userTime": self._user_time,
                        "coreData": self._core_data,
                        "cpu_usage": self._cpu_usage
                    }
                }
            }
        }