Alert: ArcherDBReplicaDown
Quick Reference
- Severity: critical
- Metric:
up{job="archerdb"} - Threshold:
== 0(replica unreachable) - Time to Respond: Immediate (affects quorum)
What This Alert Means
A replica is not responding to health checks. If multiple replicas go down simultaneously, the cluster may lose quorum and become unavailable for writes.
Immediate Actions
- [ ] Check if the pod/process is running
- [ ] Verify network connectivity to the replica
- [ ] Check for resource exhaustion (OOM, disk full)
- [ ] Verify remaining replicas have quorum (2 of 3 minimum)
Investigation
Common Causes
- Process crash: OOM kill, unhandled error, or bug
- Node failure: Hardware issue, kernel panic, or cloud provider incident
- Network partition: Replica is running but unreachable from Prometheus
- Resource exhaustion: Out of memory, disk full, or file descriptor limit
Diagnostic Commands
# Check pod status (Kubernetes)
kubectl get pods -n archerdb -l app=archerdb
# Check pod events
kubectl describe pod archerdb-N -n archerdb | tail -20
# Check if process is running (bare metal)
systemctl status archerdb
pgrep -f archerdb
# Check recent logs
kubectl logs archerdb-N -n archerdb --tail=100
# Or
journalctl -u archerdb --since "10 minutes ago"
# Check resource usage
kubectl top pod archerdb-N -n archerdb
# Or
free -h && df -h /data
# Test network from another replica
kubectl exec archerdb-0 -n archerdb -- nc -zv archerdb-N.archerdb-headless.archerdb.svc.cluster.local 3000Resolution
Process Crashed
Check logs for crash reason:
kubectl logs archerdb-N -n archerdb --previousIf OOM killed, increase memory limits:
resources: limits: memory: "8Gi" # Increase from defaultRestart the pod:
kubectl delete pod archerdb-N -n archerdb # StatefulSet will recreate it
Node Failure
Check node status:
kubectl get nodes kubectl describe node <node-name>If node is unhealthy, pod will be rescheduled automatically (may take 5+ minutes).
For faster recovery, delete the pod to trigger immediate reschedule:
kubectl delete pod archerdb-N -n archerdb --force --grace-period=0
Network Partition
Verify network policies allow inter-pod communication:
kubectl get networkpolicy -n archerdbCheck DNS resolution:
kubectl exec archerdb-0 -n archerdb -- nslookup archerdb-N.archerdb-headless.archerdb.svc.cluster.localTest port connectivity:
kubectl exec archerdb-0 -n archerdb -- nc -zv archerdb-N.archerdb-headless.archerdb.svc.cluster.local 3000
Resource Exhaustion
- Out of memory: Increase memory limits or reduce entity count
- Disk full: See Disk Capacity Runbook
- File descriptors: Check ulimits and increase if needed
Prevention
- PodDisruptionBudget: Configure
minAvailable: 2to prevent simultaneous evictions - Resource limits: Set appropriate memory and CPU limits based on workload
- Anti-affinity: Spread replicas across nodes/zones
- Monitoring: Alert on memory usage > 80% before OOM
- Node health: Monitor node conditions and drain unhealthy nodes proactively
Post-Recovery Verification
After the replica recovers:
# Verify replica is catching up
kubectl exec archerdb-N -n archerdb -- curl -s localhost:9090/metrics | grep archerdb_replication_lag
# Verify view number matches other replicas
for i in 0 1 2; do
echo -n "archerdb-$i: "
kubectl exec archerdb-$i -n archerdb -- curl -s localhost:9090/metrics | grep archerdb_view_number
done
# Verify cluster health
kubectl exec archerdb-0 -n archerdb -- curl -s localhost:9090/health/detailedRelated Documentation
- Operations Runbook - Cluster management procedures
- Disaster Recovery - Recovery from total failure
- Troubleshooting Guide - General troubleshooting