API Doc
Search Docs...
⌘ K
OverviewDeploymentManagementOperationReferenceGlossary
    ACOS 6.3.0
  • Arcfra Cloud Operating System

SEL hardware alert mechanism

Hardware high availability plays a crucial role in modern data centers, cloud platforms, and critical business systems, since a single hardware failure can cause significant financial loss. However, many hardware issues develop no obvious symptoms in their early stages, making it hard to detect potential failures promptly through traditional manual inspections.

System Event Log (SEL) and Sensor Data Record (SDR) data from the Baseboard Management Controller (BMC) lack a unified analysis platform, and fault localization largely relies on the experience of operations personnel. Moreover, traditional operations react to failures only after they occur, hindering predictive maintenance.

With SEL event (such as temperature exceeding thresholds or insufficient power redundancy) and SDR sensor metadata (such as thresholds and readings) collection, analysis, and alert generation, you can achieve full lifecycle management of hardware health, timely identify hardware issues, and proactively replace faulty components.

Architecture and components

Diagram

  • Hardware server

    The hardware server is deployed in AOC as a Pod. It periodically queries the clusters associated with AOC in round-robin mode to collect the information of agents, and records their deployment status.

  • Agent

    Agents are deployed on each node of the cluster, and are mainly divided into the following types:

    • ipmi-agent: Collects SEL events and SDR sensor data through in-band mode, parses the data, and stores it in a local SQLite database. It determines whether SEL events should trigger alerts and provides query interfaces for SEL and SDR.

    • alert-proxy: Receives alerts sent by ipmi-agent, queries the alert rules interface in round-robin mode, determines whether to enable the alert rules, and decides whether to forward alerts to the cluster alerting components.

Data processing workflows

It takes about 1 to 6 minutes from the generation of an SEL event until you receive its alert.

Collection process

SEL

  1. ipmi-agent runs the ipmitool -vv sel list command to obtain the raw SEL data in hexadecimal format;

  2. ipmi-agent uses a third-party library to parse the raw SEL hexadecimal data into an SEL event;

  3. ipmi-agent stores the SEL event in the local SQLite database, keeping the latest 3,000 events by timestamp.

SDR

  1. ipmi-agent runs the ipmitool -vv sdr command to obtain the raw SDR data in text format;

  2. ipmi-agent parses the raw SDR text data line by line into SDR data;

  3. ipmi-agent stores the SDR data in the local SQLite database, without any limit on the number of entries.

Alert process

  1. After storing the SEL event in the SQLite database, ipmi-agent checks whether the event matches the alert rules. If matched, it sends an alert to alert-proxy;

  2. alert-proxy periodically queries the alert rule interface in round-robin mode and determines whether to enable the alert rules. If alert rules are to be enabled, it forwards the alert to the cluster alert component.

Query process

  1. ipmi-agent provides SEL and SDR query interfaces. AOC queries SEL and SDR data through these interfaces and displays the results.

  2. ipmi-agent also supports request proxy, forwarding query requests to other nodes.

Data display

SEL fields

Field Description Acquisition
Event Event description. Obtained by parsing and processing raw SEL data.
Event ID Unique identifier of the event, which is a decimal number used to locate specific entries. Obtained through the SEL Record ID field.
Event status Status assertion or deassertion. Obtained through the SEL Event Direction field.
Event level Event level, including Nominal, Warning, and Critical. Obtained by parsing and processing raw SEL data.
Sensor type Sensor type, such as Temperature, Power Supply, Memory, etc. Obtained through the SEL Sensor Type field.
Sensor ID Sensor identifier, which is a decimal number, such as 1, 2, etc. Obtained through the SEL Sensor Number field.
Time generated BMC timestamp when the event occurs. Obtained through the SEL Timestamp field.
Time collection Time when the log is collected. Recorded during ipmi-agent collection.

SDR fields

Field Description Acquisition
Type Sensor type, such as Temperature, Power Supply, Memory, etc. Obtained from the Sensor Type line in the output returned by the ipmitool -vv sdr list command.
Name Sensor name, such as Status, FAN1A, Power Cable, etc. Obtained from the Sensor ID line in the output returned by the ipmitool -vv sdr list command.
ID Unique sensor identifier, which is a decimal number, such as 1, 2, etc. Obtained from the Sensor ID line in the output returned by the ipmitool -vv sdr list command.
Reading Reading value of the sensor, which may be empty for some sensors. Obtained from the Sensor Reading line in the output returned by the ipmitool -vv sdr list command.
Status Status of the sensor, which may be empty for some sensors. Obtained from the Status line in the output returned by the ipmitool -vv sdr list command.
Time collected Time when the sensor data is collected. Recorded during ipmi-agent collection.
System event log Number of system event logs associated based on the sensor type and sensor ID. Obtained through the association with data stored in SQLite.

Alert rules

Alert FREEIPMI SEL event
IPMI SEL alert: The host { host name } is operating at a temperature above the stable threshold. IPMI_Temperature_Limit_Exceeded
IPMI SEL alert: The power sensor on the host { host name } is abnormal. IPMI_Power_Supply_Transition_Severity​_Transition_To_Critical_From_Less_Severe
IPMI_Power_Supply_Transition_Severity​_Transition_To_Non_Recoverable_From_Less_Severe
IPMI_Power_Supply_Transition_Severity​_Transition_To_Critical_From_Non_Recoverable
IPMI_Power_Supply_Transition_Severity​_Transition_To_Non_Recoverable
IPMI SEL alert: The platform management of the processor on the host { host name } has interrupted.IPMI_Processor_IERR
IPMI SEL alert: The processor on the host { host name } is overheated. IPMI_Processor_Thermal_Trip
IPMI SEL alert: The FRB1 self-check for the processor on the host { host name } failed.IPMI_Processor_FRB1_BIST_Failure
IPMI SEL alert: The processor on the host { host name } hung during the POST process. IPMI_Processor_FRB2_Hang_In_POST_Failure
IPMI SEL alert: The processor on the host { host name } failed to be initialized.IPMI_Processor_FRB3_Processor_Startup​_Initialization_Failure
IPMI SEL alert: The processor on the host { host name } has configuration errors.IPMI_Processor_Configuration_Error
IPMI SEL alert: The processor on the host { host name } encountered an SMBIOS uncorrectable complex error.IPMI_Processor_SMBIOS_Uncorrectable_CPU​_Complex_Error
IPMI SEL alert: The processor on the host { host name } is disabled.IPMI_Processor_Processor_Disabled
IPMI SEL alert: The processor on the host { host name } has a terminator. IPMI_Processor_Terminator_Presence_Detected
IPMI SEL alert: The self-check for the processor on the host { host name } encountered an exception.IPMI_Processor_Machine_Check_Exception
IPMI SEL alert: The power supply on the host { host name } is faulty.IPMI_Power_Supply_Power_Supply_Failure_Detected
IPMI SEL alert: The AC or DC input to the power supply on the host { host name } is lost.IPMI_Power_Supply_Power_Supply_Input​_Lost_AC_DC
IPMI SEL alert: The input to the power supply on the host { host name } is lost or out of the normal range.IPMI_Power_Supply_Power_Supply_Input​_Lost_Or_Out_Of_Range
IPMI SEL alert: The power supply on the host { host name } has configuration errors.IPMI_Power_Supply_Configuration_Error
IPMI SEL alert: The redundancy status of the power supply on the host { host name } is abnormal.IPMI_Power_Supply_Redundancy_Redundancy_Lost
IPMI_Power_Supply_Redundancy_Non_Redundant​_Sufficient_Resources_From_Redundant
IPMI_Power_Supply_Redundancy_Non_Redundant​_Sufficient_Resources_From_Insufficient_Redundancy
IPMI_Power_Supply_Redundancy_Non_Redundant​_Insufficient_Resources
IPMI SEL alert: The AC power for the power module on the host { host name } is lost.IPMI_Power_Unit_AC_Lost
IPMI SEL alert: The power module on the host { host name } is faulty.IPMI_Power_Unit_Power_Unit_Failure_Detected
IPMI SEL alert: The power module on the host { host name } has been removed.IPMI_Power_Unit_Device_Present_Device​_Removed_Device_Absent
IPMI SEL alert: The redundancy status of the power module on the host { host name } is abnormal.IPMI_Power_Unit_Redundancy_Redundancy_Lost
IPMI_Power_Unit_Redundancy_Non_Redundant​_Sufficient_Resources_From_Redundant
IPMI_Power_Unit_Redundancy_Non_Redundant​_Sufficient_Resources_From_Insufficient_Redundancy
IPMI_Power_Unit_Redundancy_Non_Redundant​_Insufficient_Resources
IPMI SEL alert: The memory on the host { host name } encountered uncorrectable errors. IPMI_Memory_Uncorrectable_Memory_Error
IPMI SEL alert: The memory on the host { host name } encountered parity check errors.IPMI_Memory_Parity
IPMI SEL alert: The memory on the host { host name } is disabled.IPMI_Memory_Memory_Device_Disabled
IPMI SEL alert: The memory on the host { host name } has configuration errors. IPMI_Memory_Configuration_Error
IPMI SEL alert: The memory on the host { host name } is overheated.IPMI_Memory_Critical_Overtemperature
IPMI SEL alert: The memory on the host { host name } is abnormal.IPMI_Memory_Transition_Severity_Transition​_To_Non_Recoverable_From_Less_Severe
IPMI_Memory_Transition_Severity_Transition​_To_Non_Critical_From_More_Severe
IPMI_Memory_Transition_Severity_Monitor
IPMI_Memory_Transition_Severity_Transition​_To_Non_Recoverable
IPMI SEL alert: The redundancy status of the memory on the host { host name } is abnormal.IPMI_Memory_Redundancy_Redundancy_Lost
IPMI_Memory_Redundancy_Non_Redundant​_Sufficient_Resources_From_Redundant
IPMI_Memory_Redundancy_Non_Redundant​_Sufficient_Resources_From_Insufficient_Redundancy
IPMI_Memory_Redundancy_Non_Redundant​_Insufficient_Resources
IPMI SEL alert: The hard disk slot on the host { host name } encountered a drive failure.IPMI_Drive_Slot_Drive_Fault
IPMI_Drive_Slot_Predictive_Failure
IPMI SEL alert: The hard disk slot on the host { host name } has encountered a drive array failure. IPMI_Drive_Slot_In_Critical_Array
IPMI SEL alert: The number of SEL logs on the host { host name } has reached the upper limit. IPMI_Event_Logging_Disabled_SEL_Full
IPMI SEL alert: The number of SEL logs on the host { host name } is about to reach the upper limit.IPMI_Event_Logging_Disabled_SEL_Almost_Full
IPMI SEL alert: The motherboard device on the host { host name } has been removed. IPMI_Module_Board_Device_Present_Device​_Removed_Device_Absent
IPMI SEL alert: The battery on the host { host name } has failed or damaged.IPMI_Battery_Battery_Failed

Note:

  • To avoid alert storms, instead of triggering new alerts, the following situations only update existing alerts.
    • The same sensor reports different types of power sensor status abnormalities.
    • The same sensor reports different types of power redundancy status abnormalities.
    • The same sensor reports different types of disk slot drive failures.
    • The same sensor reports different types of memory redundancy status abnormalities.
    • The same sensor reports different types of memory status abnormalities.
    • The same sensor reports different types of power module redundancy status abnormalities.
  • The same sensor refers to the sensor with the same Sensor Number and Sensor Type Code.

Raw SEL fields

Byte offset Field Length Description
0-1 Record ID 2 bytes Unique identifier of log entries (for locating and deleting specific entries)
2-3 Record Type 1 byte Record type (such as system events, OEM custom events, etc.)
3 Timestamp 4 bytes BMC timestamp when the event occurs (typically the number of seconds since BMC startup)
7 Generator ID 1 byte ID of the event generator (such as BMC)
8 EvM Revision 1 byte Event message format version (typically 0x04)
9 Sensor Type 1 byte Sensor type (such as temperature, power supply, fan, etc.)
10 Sensor Number 1 byte Logical number of the sensor (mapped to specific hardware)
11 Event Type 1 byte Event type (such as threshold exceeded, status change, etc.)
12 Event Direction 1 byte Event direction (status assertion or deassertion)
13 Event Data 3 bytes Specific event data (such as threshold values, status codes, etc., depending on the sensor type and event type)

Raw SDR fields

The following table takes the full sensor record as an example. Other types of SDR record formats are similar.

Byte offset Field Description
0 Record ID Unique identifier of the record (typically assigned incrementally)
1 SDR Version SDR version (0x51 for IPMI 2.0)
2 Record Type Record type (such as full sensor record, compact sensor record, etc.)
3 Record Length Total record length (bytes, including header)
4-5 Sensor Owner ID ID of the controller to which the sensor belongs (such as 0x20 for BMC)
6 Sensor Number Logical number of the sensor (corresponds to Sensor Number in SEL)
7 Sensor Type Sensor type (corresponds to Sensor Type in SEL)
8 Event/Reading Type Event types supported by the sensor (such as the threshold, discrete state, etc.)
9 Sensor Unit Unit definition (such as degrees, volts, percentage, etc.)
10-11 Linearization Formula Data linearization formula (such as linear, logarithmic, non-linear lookup tables, etc.)
12-13 M and B Sensor raw value conversion formula parameters: Value = (M × Raw) + B
14-15 Thresholds Threshold settings (such as lower non-recoverable, upper critical, etc.)
... Custom Fields Vendor-customized data (such as calibration offsets, sensor location descriptions, etc.)

ipmitool -vv sdr output example

Sensor ID              : Inlet Temp (0x5)
 Entity ID             : 64.96 (Air Inlet)
 Sensor Type (Threshold)  : Temperature (0x01)
 Sensor Reading        : 29 (+/- 1) degrees C
 Status                : ok
 Nominal Reading       : 23.000
 Normal Minimum        : 11.000
 Normal Maximum        : 69.000
 Upper critical        : 47.000
 Upper non-critical    : 42.000
 Lower critical        : -7.000
 Lower non-critical    : 3.000
 Positive Hysteresis   : 2.000
 Negative Hysteresis   : 2.000
 Minimum sensor range  : Unspecified
 Maximum sensor range  : Unspecified
 Event Message Control : Per-threshold
 Readable Thresholds   : lcr lnc unc ucr 
 Settable Thresholds   : lnc unc 
 Threshold Read Mask   : lcr lnc unc ucr 
 Assertion Events      : 
 Assertions Enabled    : lnc- lcr- unc+ ucr+ 
 Deassertions Enabled  : lnc- lcr- unc+ ucr+