269 lines
11 KiB
YAML
Executable File
269 lines
11 KiB
YAML
Executable File
# SysDeck Module Alert Rules
|
|
# Deploy to /etc/prometheus/rules.d/sysdeck_alerts.yml
|
|
|
|
groups:
|
|
# ── Log Pipeline Alerts ──────────────────────────────────────
|
|
- name: sysdeck_log_pipeline
|
|
rules:
|
|
- alert: SysdeckLogPushFailed
|
|
expr: increase(sysdeck_log_total{level="error"}[5m]) > 0
|
|
for: 1m
|
|
labels:
|
|
severity: warning
|
|
module: sysdeck
|
|
annotations:
|
|
summary: "SysDeck log push failure detected"
|
|
description: "Log entries are failing to push to Prometheus pushgateway in the {{ $labels.module }} module."
|
|
|
|
- alert: SysdeckLogPipelineStalled
|
|
expr: time() - sysdeck_log_timestamp_seconds > 300
|
|
for: 5m
|
|
labels:
|
|
severity: critical
|
|
module: sysdeck
|
|
annotations:
|
|
summary: "SysDeck log pipeline stalled"
|
|
description: "No logs have been pushed from module {{ $labels.module }} for over 5 minutes."
|
|
|
|
# ── Container Module Alerts ──────────────────────────────────
|
|
- name: sysdeck_containers
|
|
rules:
|
|
- alert: SysdeckContainerDown
|
|
expr: sysdeck_container_status{status="stopped"} > 0
|
|
for: 2m
|
|
labels:
|
|
severity: warning
|
|
module: containers
|
|
annotations:
|
|
summary: "Container {{ $labels.name }} is stopped"
|
|
description: "Container {{ $labels.name }} has been in a stopped state for over 2 minutes."
|
|
|
|
- alert: SysdeckContainerRestartLoop
|
|
expr: increase(sysdeck_container_restarts_total[10m]) > 5
|
|
for: 1m
|
|
labels:
|
|
severity: critical
|
|
module: containers
|
|
annotations:
|
|
summary: "Container {{ $labels.name }} in restart loop"
|
|
description: "Container {{ $labels.name }} has restarted {{ $value }} times in the last 10 minutes."
|
|
|
|
# ── Firewall Module Alerts ───────────────────────────────────
|
|
- name: sysdeck_firewall
|
|
rules:
|
|
- alert: SysdeckFirewallDroppedPackets
|
|
expr: rate(sysdeck_firewall_dropped_packets_total[5m]) > 100
|
|
for: 3m
|
|
labels:
|
|
severity: warning
|
|
module: firewall
|
|
annotations:
|
|
summary: "High firewall drop rate on {{ $labels.chain }}"
|
|
description: "Firewall chain {{ $labels.chain }} is dropping {{ $value }} packets/sec."
|
|
|
|
# ── Integrity Module Alerts ──────────────────────────────────
|
|
- name: sysdeck_integrity
|
|
rules:
|
|
- alert: SysdeckIntegrityFindings
|
|
expr: sysdeck_integrity_findings > 0
|
|
for: 0m
|
|
labels:
|
|
severity: high
|
|
module: integrity
|
|
annotations:
|
|
summary: "Security scan found {{ $value }} issues"
|
|
description: "Integrity audit scan detected {{ $value }} findings."
|
|
|
|
# ── Network Security Alerts ──────────────────────────────────
|
|
- name: sysdeck_netsec
|
|
rules:
|
|
- alert: SysdeckNetsecCriticalAlert
|
|
expr: sysdeck_netsec_alerts{severity="critical"} > 0
|
|
for: 0m
|
|
labels:
|
|
severity: critical
|
|
module: netsec
|
|
annotations:
|
|
summary: "Critical network security alert"
|
|
description: "{{ $labels.source }}: {{ $labels.message }}"
|
|
|
|
- alert: SysdeckNetsecSuspiciousConnections
|
|
expr: rate(sysdeck_netsec_suspicious_connections_total[5m]) > 10
|
|
for: 2m
|
|
labels:
|
|
severity: warning
|
|
module: netsec
|
|
annotations:
|
|
summary: "High rate of suspicious connections"
|
|
description: "{{ $value }} suspicious connections/sec detected."
|
|
|
|
# ── Fleet Compute Alerts ─────────────────────────────────────
|
|
- name: sysdeck_fleet
|
|
rules:
|
|
- alert: SysdeckFleetNodeOffline
|
|
expr: sysdeck_fleet_node_status{status="offline"} > 0
|
|
for: 2m
|
|
labels:
|
|
severity: warning
|
|
module: fleet
|
|
annotations:
|
|
summary: "Fleet node {{ $labels.hostname }} offline"
|
|
description: "Fleet node {{ $labels.hostname }} has been offline for over 2 minutes."
|
|
|
|
- alert: SysdeckFleetJobFailed
|
|
expr: increase(sysdeck_fleet_jobs_failed_total[10m]) > 3
|
|
for: 1m
|
|
labels:
|
|
severity: warning
|
|
module: fleet
|
|
annotations:
|
|
summary: "High fleet job failure rate"
|
|
description: "{{ $value }} fleet jobs have failed in the last 10 minutes."
|
|
|
|
# ── Vault Alerts ─────────────────────────────────────────────
|
|
- name: sysdeck_vault
|
|
rules:
|
|
- alert: SysdeckVaultUnlocked
|
|
expr: sysdeck_vault_status{status="unlocked"} > 0
|
|
for: 30m
|
|
labels:
|
|
severity: warning
|
|
module: vault
|
|
annotations:
|
|
summary: "Vault {{ $labels.name }} unlocked for over 30 minutes"
|
|
description: "Encryption vault {{ $labels.name }} has been in unlocked state for over 30 minutes."
|
|
|
|
# ── Auth Module Alerts ───────────────────────────────────────
|
|
- name: sysdeck_auth
|
|
rules:
|
|
- alert: SysdeckAuthDeviceRejected
|
|
expr: sysdeck_auth_device_status{status="rejected"} > 0
|
|
for: 0m
|
|
labels:
|
|
severity: critical
|
|
module: auth
|
|
annotations:
|
|
summary: "Authentication device rejected"
|
|
description: "Auth device {{ $labels.name }} was rejected. Possible security breach."
|
|
|
|
# ── Firmware Module Alerts ───────────────────────────────────
|
|
- name: sysdeck_firmware
|
|
rules:
|
|
- alert: SysdeckFirmwareMEActive
|
|
expr: sysdeck_firmware_me_status{status="enabled"} > 0
|
|
for: 0m
|
|
labels:
|
|
severity: info
|
|
module: firmware
|
|
annotations:
|
|
summary: "Intel ME is enabled"
|
|
description: "Intel Management Engine is active on this system."
|
|
|
|
# ── Sensor Alerts ────────────────────────────────────────────
|
|
- name: sysdeck_sensors
|
|
rules:
|
|
- alert: SysdeckSensorTempCritical
|
|
expr: sysdeck_sensor_temperature_celsius > sysdeck_sensor_temp_crit_celsius
|
|
for: 1m
|
|
labels:
|
|
severity: critical
|
|
module: sensors
|
|
annotations:
|
|
summary: "Critical temperature on {{ $labels.adapter }}"
|
|
description: "Sensor {{ $labels.adapter }}/{{ $labels.sensor }} reading {{ $value }}C exceeds critical threshold."
|
|
|
|
- alert: SysdeckSensorTempWarning
|
|
expr: sysdeck_sensor_temperature_celsius > sysdeck_sensor_temp_max_celsius
|
|
for: 3m
|
|
labels:
|
|
severity: warning
|
|
module: sensors
|
|
annotations:
|
|
summary: "High temperature on {{ $labels.adapter }}"
|
|
description: "Sensor {{ $labels.adapter }}/{{ $labels.sensor }} reading {{ $value }}C exceeds warning threshold."
|
|
|
|
# ── Hardware Alert (Intrusion Detection) ─────────────────────
|
|
- name: sysdeck_hwalert
|
|
rules:
|
|
- alert: SysdeckHardwareIntrusion
|
|
expr: sysdeck_hwalert_intrusion_detected > 0
|
|
for: 0m
|
|
labels:
|
|
severity: critical
|
|
module: hwalert
|
|
annotations:
|
|
summary: "Hardware intrusion detected"
|
|
description: "Unauthorized hardware device detected: {{ $labels.device_type }} {{ $labels.device_name }}."
|
|
|
|
# ── DB Module Alerts ─────────────────────────────────────────
|
|
- name: sysdeck_db
|
|
rules:
|
|
- alert: SysdeckDbEngineDown
|
|
expr: sysdeck_db_engine_status{status="stopped"} > 0
|
|
for: 2m
|
|
labels:
|
|
severity: warning
|
|
module: db
|
|
annotations:
|
|
summary: "Database engine {{ $labels.name }} is stopped"
|
|
description: "DB engine {{ $labels.name }} on port {{ $labels.port }} has been stopped for over 2 minutes."
|
|
|
|
- alert: SysdeckDbHighConnections
|
|
expr: sysdeck_db_connections / sysdeck_db_max_connections > 0.85
|
|
for: 5m
|
|
labels:
|
|
severity: warning
|
|
module: db
|
|
annotations:
|
|
summary: "Database {{ $labels.name }} connection pool near capacity"
|
|
description: "DB engine {{ $labels.name }} is using {{ $value | humanizePercentage }} of its connection limit."
|
|
|
|
# ── Service Mesh Alerts ──────────────────────────────────────
|
|
- name: sysdeck_mesh
|
|
rules:
|
|
- alert: SysdeckMeshHighErrorRate
|
|
expr: rate(sysdeck_mesh_request_errors_total[5m]) / rate(sysdeck_mesh_requests_total[5m]) > 0.05
|
|
for: 3m
|
|
labels:
|
|
severity: warning
|
|
module: mesh
|
|
annotations:
|
|
summary: "High error rate in service mesh"
|
|
description: "Service {{ $labels.service }} error rate is {{ $value | humanizePercentage }}."
|
|
|
|
# ── Build/Fester Alerts ──────────────────────────────────────
|
|
- name: sysdeck_fester
|
|
rules:
|
|
- alert: SysdeckBuildStuck
|
|
expr: sysdeck_fester_build_duration_seconds > 3600
|
|
for: 5m
|
|
labels:
|
|
severity: warning
|
|
module: fester
|
|
annotations:
|
|
summary: "Build {{ $labels.name }} running for over 1 hour"
|
|
description: "Build job {{ $labels.name }} has been running for {{ $value }} seconds."
|
|
|
|
# ── Prometheus Self-Monitoring ───────────────────────────────
|
|
- name: sysdeck_prometheus
|
|
rules:
|
|
- alert: SysdeckPrometheusTargetDown
|
|
expr: up{job=~"sysdeck_.*"} == 0
|
|
for: 3m
|
|
labels:
|
|
severity: warning
|
|
module: prometheus
|
|
annotations:
|
|
summary: "Prometheus target {{ $labels.job }} down"
|
|
description: "Scrape target {{ $labels.instance }} (job {{ $labels.job }}) has been down for over 3 minutes."
|
|
|
|
- alert: SysdeckPrometheusHighScrapeFailures
|
|
expr: rate(prometheus_scrape_failures_total[5m]) > 0.1
|
|
for: 5m
|
|
labels:
|
|
severity: warning
|
|
module: prometheus
|
|
annotations:
|
|
summary: "Prometheus scrape failure rate high"
|
|
description: "{{ $value }} scrape failures/sec detected."
|