apiVersion: v1 kind: ConfigMap metadata: name: vmalert-rules namespace: observability labels: app.kubernetes.io/name: vmalert app.kubernetes.io/component: alerting-rules data: node.rules: | groups: - name: node rules: - alert: HighNodeCPU expr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90 for: 5m labels: severity: warning annotations: summary: "High CPU on {{ $labels.instance }}" description: "CPU usage above 90% for 5m on {{ $labels.instance }}." - alert: HighNodeRAM expr: 1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) > 0.9 for: 10m labels: severity: warning annotations: summary: "RAM >90% on {{ $labels.instance }}" description: "Available RAM below 10% for 10m on {{ $labels.instance }}." - alert: LowDiskSpace expr: 1 - (node_filesystem_avail_bytes / node_filesystem_size_bytes{fstype!~"tmpfs|overlay"}) > 0.85 for: 10m labels: severity: warning annotations: summary: "Disk >85% full on {{ $labels.instance }} {{ $labels.mountpoint }}" description: "Filesystem {{ $labels.mountpoint }} on {{ $labels.instance }} is more than 85% full for 10m."