You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
IloBatteryCondition has been firing on shiva with no silence and no owner #76
IloBatteryCondition has been firing on shiva (10.0.30.10, the HPE iLO BMC
on VLAN 30) continuously, at severity: warning, category: hardware.
Unlike UpsSelfTestFailed — which is silenced until 2026-09-20 with a comment
recording exactly why, and instructions to delete the silence the moment the
pack is fitted — this one has no silence and no tracking issue. It is simply
firing, which over time is how a firing alert stops being read.
On an HPE array controller this is usually the cache/FBWC battery: either
depleted, disconnected, or genuinely failed. If it is the write cache battery
the controller will have dropped back to write-through, which is a real
performance change on the Proxmox host, not just a lamp.
What this needs
One of three outcomes, and the point of the issue is to pick one:
Fix it — reseat or replace the cache battery.
Accept it — silence it in Alertmanager with an expiry and a comment, the
way the UPS one is done, and record the residual.
Retune it — if this condition is expected on a BMC this old, the rule
should say so rather than fire forever.
The relevant metric is under cpqDaAccel* in the iLO module; the rule is in network.rules.yaml.
Found while verifying #12 — the stack is behaving correctly here, the hardware
is not.
Closed automatically by #200. Recording which of the three outcomes was taken,
since the issue asked for exactly that.
Accepted with an expiry — and the rule was retuned, because it was also
wrong. Not fixed: the hardware is still broken.
The alert was a true positive on a permanently failed part. Chassis 0
battery 1 reads cpqHeSysBatteryStatus13 (shutdownPermanentFailure) —
"HP Smart Storage Batt 96", spare 815983-001. 13 is terminal, so the
issue's "reseat or replace" was only ever replace; there was nothing to try
before ordering.
Two corrections to the issue as written:
The metric pointer was wrong, and that turned out to be the interesting
part. The rule read cpqHeSysBackupBatteryCondition — one identity-free
scalar — not anything under cpqDaAccel*. Nothing in the repo referenced cpqDaAccel* at all, so it fired correctly for twelve days and still could
not be acted on: which pack, why, and what to order were all in tables no
rule touched. It now names the part in the alert itself.
Write-through is slower, not riskier. It closes the cache-loss window
rather than opening one, and cpqDaAccelBadData reads 2 (none) — nothing
dirty was lost when the controller dropped back. The cost is write latency
and IOPS on the hypervisor, which is why the new rule is warning.
On a Gen9 this is one fault seen through two MIB subtrees, not two problems:
the chassis pack backs the Smart Array's flash-backed cache.
Both alerts were watched from pending into firing against live hardware and
both reached the default receiver with zero webhook failures before the
silence went back on, so what is suppressed is known-working rather than
assumed-working.
Silence bfdfff66-d9c3-4df4-9495-f1f38ebf93c1, device=shiva, expires
2026-10-01. Deliberately narrow, so a genuinely new fault on this box is not
suppressed with it.
The residual is no longer the part. Spare 815983-001 fitted 2026-09-02; Saruman off 22:30–22:58 UTC.
First scrape after it came back, 23:02 UTC: chassis 0 battery 1 reads cpqHeSysBatteryCondition2 (ok), cpqHeSysBatteryStatus1 (noError),
serial 6EZBN0FB2431YM where the failed pack was 6EZBN0CB29N3YZ — a
different part being read, not the old one reading differently. The Smart Array
re-enabled its cache on the same scrape: cpqDaAccelStatus5 → 3, cpqDaAccelBackupPowerSource1 → 4 (smartbattery), cpqDaAccelBattery 6 → 2, and the three controller rollups back to 2. cpqDaAccelBadData
stayed 2 — nothing dirty was lost at either end.
Silence bfdfff66 deleted at 23:11 UTC rather than left to expire on
2026-10-01; both alerts are live again over the new part and nothing is firing.
Two readings did not move.cpqDaAccelWriteCachePercent / ReadCachePercent still 0 / 0 ten minutes in, where a P440ar normally
reports a ratio, and cpqDaAccelFailedBatteries still 1. Neither is alerted
on. The runbook now names both, with the ssacli check on Saruman that
resolves the first. Documents flipped in the PR that references this issue.
While cpqDaAccelWriteCachePercent, ReadCachePercent, Memory and ReadMemory all still read 0, and cpqDaLogDrvHasAccel reads other on the cached logical drive. The iLO does not populate those columns on this hardware; the ratio was set and the cache was absorbing writes all along. The fit's fio confirmed it from the other side: the 7.2K mirror completes 4 KiB random writes in 1.3 ms on average at queue depth 1 (741 IOPS), a fifth of them in 50 µs.
So: no modify cacheratio= was ever needed, no rule may be written on those four columns, and IloWriteCacheDisabled reading cpqDaAccelStatus was right. cpqDaAccelFailedBatteries1 is still unexplained and still unalerted. The roadmap's Done entry for this issue carries a dated paragraph; the reading and the reasoning are in #527 and #556. Stays closed.
Activity
Merge pull request #200 from Gerrrt/gerrrt/ilo-battery-condition-shiv…
Gerrrt commentedon Aug 31, 2026
Closed automatically by #200. Recording which of the three outcomes was taken,
since the issue asked for exactly that.
Accepted with an expiry — and the rule was retuned, because it was also
wrong. Not fixed: the hardware is still broken.
The alert was a true positive on a permanently failed part. Chassis 0
battery 1 reads
cpqHeSysBatteryStatus13(shutdownPermanentFailure) —"HP Smart Storage Batt 96", spare
815983-001.13is terminal, so theissue's "reseat or replace" was only ever replace; there was nothing to try
before ordering.
Two corrections to the issue as written:
part. The rule read
cpqHeSysBackupBatteryCondition— one identity-freescalar — not anything under
cpqDaAccel*. Nothing in the repo referencedcpqDaAccel*at all, so it fired correctly for twelve days and still couldnot be acted on: which pack, why, and what to order were all in tables no
rule touched. It now names the part in the alert itself.
rather than opening one, and
cpqDaAccelBadDatareads2(none) — nothingdirty was lost when the controller dropped back. The cost is write latency
and IOPS on the hypervisor, which is why the new rule is
warning.On a Gen9 this is one fault seen through two MIB subtrees, not two problems:
the chassis pack backs the Smart Array's flash-backed cache.
Both alerts were watched from
pendingintofiringagainst live hardware andboth reached the
defaultreceiver with zero webhook failures before thesilence went back on, so what is suppressed is known-working rather than
assumed-working.
Silence
bfdfff66-d9c3-4df4-9495-f1f38ebf93c1, device=shiva, expires2026-10-01. Deliberately narrow, so a genuinely new fault on this box is not
suppressed with it.
The residual is the part. Tracked in
docs/roadmap.md, procedure indocs/runbooks/replace-the-smart-storage-battery.md.If the pack is not fitted by 2026-10-01 the silence lapses and both alerts come
back, which is the intent.
Merge branch 'main' into gerrrt/backup-verification-scheduling-4008e9
docs: the installer stick is not in the rack yet, and rewrap #76
Gerrrt commentedon Sep 2, 2026
The residual is no longer the part. Spare
815983-001fitted 2026-09-02;Sarumanoff 22:30–22:58 UTC.First scrape after it came back, 23:02 UTC: chassis 0 battery 1 reads
cpqHeSysBatteryCondition2(ok),cpqHeSysBatteryStatus1(noError),serial
6EZBN0FB2431YMwhere the failed pack was6EZBN0CB29N3YZ— adifferent part being read, not the old one reading differently. The Smart Array
re-enabled its cache on the same scrape:
cpqDaAccelStatus5→3,cpqDaAccelBackupPowerSource1→4(smartbattery),cpqDaAccelBattery6→2, and the three controller rollups back to2.cpqDaAccelBadDatastayed
2— nothing dirty was lost at either end.Silence
bfdfff66deleted at 23:11 UTC rather than left to expire on2026-10-01; both alerts are live again over the new part and nothing is firing.
Two readings did not move.
cpqDaAccelWriteCachePercent/ReadCachePercentstill0/0ten minutes in, where a P440ar normallyreports a ratio, and
cpqDaAccelFailedBatteriesstill1. Neither is alertedon. The runbook now names both, with the
ssaclicheck onSarumanthatresolves the first. Documents flipped in the PR that references this issue.
Merge pull request #243 from Gerrrt/gerrrt/hpe-smart-battery-replacem…
docs(runbooks): the Saruman SSD fit becomes a procedure, and the tray…
Gerrrt commentedon Sep 20, 2026
The
ssaclireading, 2026-09-19 22:52 UTC, seventeen days on: branch (a), a blind spot in the iLO, not a fault in the array.While
cpqDaAccelWriteCachePercent,ReadCachePercent,MemoryandReadMemoryall still read0, andcpqDaLogDrvHasAccelreadsotheron the cached logical drive. The iLO does not populate those columns on this hardware; the ratio was set and the cache was absorbing writes all along. The fit's fio confirmed it from the other side: the 7.2K mirror completes 4 KiB random writes in 1.3 ms on average at queue depth 1 (741 IOPS), a fifth of them in 50 µs.So: no
modify cacheratio=was ever needed, no rule may be written on those four columns, andIloWriteCacheDisabledreadingcpqDaAccelStatuswas right.cpqDaAccelFailedBatteries1is still unexplained and still unalerted. The roadmap's Done entry for this issue carries a dated paragraph; the reading and the reasoning are in #527 and #556. Stays closed.