diff --git a/internal/parser/vendors/inspur/idl.go b/internal/parser/vendors/inspur/idl.go index 96214ca..3d74a6d 100644 --- a/internal/parser/vendors/inspur/idl.go +++ b/internal/parser/vendors/inspur/idl.go @@ -47,8 +47,12 @@ func ParseIDLLog(content []byte) []models.Event { // Clean up description description = cleanDescription(description) - // Create unique key for deduplication - eventKey := eventID + "|" + eventType + "|" + description + // Create unique key for deduplication. Must include the timestamp: + // recurring alarms (e.g. flapping PCIe presence checks) reuse the same + // eventID/eventType/description on every occurrence, so deduping without + // the timestamp collapses all later occurrences into the first one and + // silently drops the most recent (and most relevant) event. + eventKey := timestamp + "|" + eventID + "|" + eventType + "|" + description if seenEvents[eventKey] { continue }