mirror of
https://github.com/henrygd/beszel.git
synced 2026-09-21 08:57:48 +02:00
feat(alerts): add alert for failed systemd services (#2173)
Adds a user-configurable "Failed Services" alert that notifies when any tracked systemd service enters the failed state, and again when all services recover. --------- Signed-off-by: Martin Stenröse <martin@stenrose.se> Co-authored-by: henrygd <hank@henrygd.me>
This commit is contained in:
@@ -204,4 +204,7 @@ type CombinedData struct {
|
||||
Containers []*container.Stats `json:"container" cbor:"2,keyasint"`
|
||||
SystemdServices []*systemd.Service `json:"systemd,omitempty" cbor:"3,keyasint,omitempty"`
|
||||
Details *Details `cbor:"4,keyasint,omitempty"`
|
||||
// SystemdServicesUpdated distinguishes a fresh empty snapshot from a response
|
||||
// that omitted systemd data (for example, a short-cache dashboard request).
|
||||
SystemdServicesUpdated bool `json:"systemdUpdated,omitempty" cbor:"5,keyasint,omitempty"`
|
||||
}
|
||||
|
||||
@@ -63,3 +63,25 @@ func TestStatsLegacyBatteryPayload(t *testing.T) {
|
||||
assert.Contains(t, payload, "bat")
|
||||
assert.NotContains(t, payload, "bats")
|
||||
}
|
||||
|
||||
func TestCombinedDataSystemdUpdateMarkerTransport(t *testing.T) {
|
||||
data := CombinedData{SystemdServicesUpdated: true}
|
||||
|
||||
jsonData, err := json.Marshal(data)
|
||||
require.NoError(t, err)
|
||||
var decodedJSON CombinedData
|
||||
require.NoError(t, json.Unmarshal(jsonData, &decodedJSON))
|
||||
assert.True(t, decodedJSON.SystemdServicesUpdated)
|
||||
assert.Empty(t, decodedJSON.SystemdServices)
|
||||
|
||||
cborData, err := cbor.Marshal(data)
|
||||
require.NoError(t, err)
|
||||
var decodedCBOR CombinedData
|
||||
require.NoError(t, cbor.Unmarshal(cborData, &decodedCBOR))
|
||||
assert.True(t, decodedCBOR.SystemdServicesUpdated)
|
||||
assert.Empty(t, decodedCBOR.SystemdServices)
|
||||
|
||||
var legacy CombinedData
|
||||
require.NoError(t, json.Unmarshal([]byte(`{"stats":{},"info":{},"container":[]}`), &legacy))
|
||||
assert.False(t, legacy.SystemdServicesUpdated)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user