bedrock
tenant layer

Alert rules

The rules live in observability/alerting/alert-rules.yaml as one PrometheusRule. One more rule, PostgresDropStatement, is a Loki rule in observability/loki/loki.yaml that fires as soon as a database logs a DROP statement.

Nodes

AlertSeverityForFires when
NodeHighCPUwarning10mCPU use is above 85%
NodeHighMemorywarning10mMemory use is above 90%
NodeMemoryCriticalcritical5mMemory use is above 95%
NodeDiskSpaceLowwarning10mA filesystem is above 85%
NodeDiskSpaceCriticalcritical5mA filesystem is above 92%
NodeDowncritical3mnode-exporter on a node cannot be scraped

Workloads

AlertSeverityForFires when
PodCrashLoopingwarning5mA container restarted more than 3 times in 15 minutes
PodNotReadywarning15mA pod is Pending or Unknown
ContainerNearMemoryLimitwarning5mA container uses more than 90% of its memory limit
PVCAlmostFullwarning10mA volume is above 85%
PVCCriticalcritical5mA volume is above 92%
PodFailedwarning5mA pod is in phase Failed
JobFailedwarning5mA Job has failed pods
DaemonSetIncompletewarning10mA DaemonSet has nodes without a ready pod
StatefulSetNotReadywarning15mA StatefulSet has fewer ready replicas than desired

Databases

AlertSeverityForFires when
CNPGReplicationLagHighwarning5mA replica is more than 30 seconds behind (cluster-3 excluded)
CNPGReplicationLagCriticalcritical5mA replica is more than 120 seconds behind (cluster-3 excluded)
CNPGInstanceDowncritical3mAn instance’s metrics cannot be scraped
CNPGDelayedReplicaStuckwarning10mcluster-3 is more than 600 seconds behind instead of about 300
WALArchivingFailingcriticalimmediatelyWAL archiving to Garage failed in the last 10 minutes
CNPGRowsDeletedSpikecritical1mRows are deleted at more than 10 times the usual rate
CNPGRowsUpdatedSpikecritical1mRows are updated at more than 10 times the usual rate
CNPGStackedInstanceswarning15mTwo instances of one cluster run on the same node
CNPGBackupTooOldcritical10mThe last base backup is more than 8 hours old

Platform

AlertSeverityForFires when
ScrapeTargetDownwarning5mPrometheus cannot scrape a target
EndpointDowncritical2mA blackbox probe fails
KyvernoAdmissionDegradedcritical2mFewer than 2 Kyverno admission replicas are ready
KyvernoAdmissionDowncritical1mNo Kyverno admission replica is ready
WatchdognonealwaysAlways. It proves the alerting pipeline works.

Storage, certificates and etcd

AlertSeverityForFires when
LonghornVolumeDegradedwarning10mA Longhorn volume has lost replicas
LonghornVolumeFaultedcritical1mA Longhorn volume has no healthy replica
GarageDiskLowwarning15mLess than 15% of a Garage data disk is free
GarageDiskCriticalcritical5mLess than 5% of a Garage data disk is free
CertificateExpiringSoonwarning1hA probed certificate expires within 30 days
CertificateExpiryCriticalcritical10mA probed certificate expires within 7 days
EtcdNoLeadercritical1mAn etcd member has no leader
EtcdFrequentLeaderChangeswarning5mMore than 3 leader changes in an hour
EtcdDatabaseNearQuotawarning10mThe etcd database uses more than 80% of its quota
EtcdSlowDiskwarning10mThe 99th percentile WAL fsync takes more than 500 ms