{ lib, pkgs, config, ... }: { grafanaAlertRuleDefinitions = [ # RAID array degraded - critical { uid = "raid-array-degraded-uid"; title = "RaidArrayDegraded"; condition = "D"; data = [ { refId = "A"; datasourceUid = "vm-datasource-uid"; relativeTimeRange = { from = 300; to = 0; }; model = { expr = ''mdadm_array_state == 0''; instant = false; }; } { refId = "C"; datasourceUid = "__expr__"; model = { type = "reduce"; expression = "A"; reducer = "last"; }; } { refId = "D"; datasourceUid = "__expr__"; model = { type = "math"; expression = "$C == 0"; }; } ]; for = "0s"; noDataState = "NoData"; execErrState = "Error"; annotations = { summary = "RAID array {{ $labels.array }} is degraded"; description = '' RAID array {{ $labels.array }} on {{ $labels.instance }} is in state "{{ $labels.state }}". The array is not in a healthy state. Check for failed disks immediately! ''; }; labels = { severity = "critical"; category = "storage"; }; } # RAID missing devices - critical { uid = "raid-missing-devices-uid"; title = "RaidMissingDevices"; condition = "D"; data = [ { refId = "A"; datasourceUid = "vm-datasource-uid"; relativeTimeRange = { from = 300; to = 0; }; model = { expr = ''mdadm_array_devices_active < mdadm_array_devices_total''; instant = false; }; } { refId = "C"; datasourceUid = "__expr__"; model = { type = "reduce"; expression = "A"; reducer = "last"; }; } { refId = "D"; datasourceUid = "__expr__"; model = { type = "math"; expression = "$C > 0"; }; } ]; for = "0s"; noDataState = "NoData"; execErrState = "Error"; annotations = { summary = "RAID array {{ $labels.array }} has missing devices"; description = '' RAID array {{ $labels.array }} on {{ $labels.instance }} has fewer active devices than expected. A disk may have failed or been removed. Check array status immediately! ''; }; labels = { severity = "critical"; category = "storage"; }; } ]; }