fix: prevent duplicate node names in alert IDs for single-node setups

When the instance name equals the node name (common in single-node setups),
avoid generating redundant IDs like "pve-pve-100" by using just "pve-100".
This fixes alert acknowledgment issues where the UI couldn't match alert
IDs due to the duplicate node name pattern.

Addresses #353
This commit is contained in:
Pulse Monitor 2025-08-25 14:11:58 +00:00
parent f34c9d689d
commit 7592c95021

View file

@ -899,7 +899,13 @@ func (m *Monitor) pollVMsAndContainersEfficient(ctx context.Context, instanceNam
var allContainers []models.Container
for _, res := range resources {
guestID := fmt.Sprintf("%s-%s-%d", instanceName, res.Node, res.VMID)
// Avoid duplicating node name in ID when instance name equals node name
var guestID string
if instanceName == res.Node {
guestID = fmt.Sprintf("%s-%d", res.Node, res.VMID)
} else {
guestID = fmt.Sprintf("%s-%s-%d", instanceName, res.Node, res.VMID)
}
// Debug log the resource type
log.Debug().
@ -1267,7 +1273,13 @@ func (m *Monitor) pollVMsWithNodes(ctx context.Context, instanceName string, cli
}
// Calculate I/O rates
guestID := fmt.Sprintf("%s-%s-%d", instanceName, node.Node, vm.VMID)
// Avoid duplicating node name in ID when instance name equals node name
var guestID string
if instanceName == node.Node {
guestID = fmt.Sprintf("%s-%d", node.Node, vm.VMID)
} else {
guestID = fmt.Sprintf("%s-%s-%d", instanceName, node.Node, vm.VMID)
}
currentMetrics := IOMetrics{
DiskRead: int64(vm.DiskRead),
DiskWrite: int64(vm.DiskWrite),
@ -1566,7 +1578,13 @@ func (m *Monitor) pollContainersWithNodes(ctx context.Context, instanceName stri
}
// Calculate I/O rates
guestID := fmt.Sprintf("%s-%s-%d", instanceName, node.Node, ct.VMID)
// Avoid duplicating node name in ID when instance name equals node name
var guestID string
if instanceName == node.Node {
guestID = fmt.Sprintf("%s-%d", node.Node, ct.VMID)
} else {
guestID = fmt.Sprintf("%s-%s-%d", instanceName, node.Node, ct.VMID)
}
currentMetrics := IOMetrics{
DiskRead: int64(ct.DiskRead),
DiskWrite: int64(ct.DiskWrite),