Skip to content

Incident Runbooks

Last Updated: 2026-01-07


Quick reference guides for responding to common alerts and incidents in the PLGT Observability Stack.


CategoryAlertSeverity
Website DownSiteDown, UmdoniSiteDownCritical
SSL Certificate ExpiringSSLCertExpiring*Warning/Critical
High Response TimeHighResponseTimeWarning
Failed Login SpikeUmdoniFailedLoginSpikeWarning
Brute Force DetectedUmdoniBruteForceDetectedCritical
PLGT Stack Issues*DownCritical
Database IssuesConnection failuresCritical
Disk Space Critical*DiskCriticalCritical

Alerts: SiteDown, UmdoniSiteDown Severity: Critical Impact: Users cannot access the website

Terminal window
# Test site accessibility
curl -sI https://umdoni.gov.za --max-time 10
# Check from external service
# https://downforeveryoneorjustme.com/umdoni.gov.za
graph TD
A[Site Down Alert] --> B{DNS Resolving?}
B -->|No| C[Check DNS Provider]
B -->|Yes| D{Server Responding?}
D -->|No| E[Check Hosting Provider]
D -->|Yes| F{Application Error?}
F -->|Yes| G[Check Error Logs]
F -->|No| H[Network/Firewall Issue]
TimeAction
0-5 minVerify and diagnose
5-15 minAttempt restart/fix
15+ minContact hosting support
30+ minEscalate to senior team

Alerts: SSLCertExpiringSoon, SSLCertExpiryCritical Severity: Warning (30 days), Critical (7 days) Impact: Browser security warnings, potential site blocking

Terminal window
# Check expiry date
echo | openssl s_client -servername umdoni.gov.za -connect umdoni.gov.za:443 2>/dev/null \
| openssl x509 -noout -dates
# Calculate days remaining
echo | openssl s_client -servername umdoni.gov.za -connect umdoni.gov.za:443 2>/dev/null \
| openssl x509 -noout -enddate
  1. Login to cPanel
  2. Navigate to SSL/TLS Status
  3. Click Run AutoSSL
  4. Wait 5-10 minutes
  5. Verify renewal
Terminal window
curl -vI https://umdoni.gov.za 2>&1 | grep -E "expire|subject"

Alert: HighResponseTime Severity: Warning Impact: Poor user experience, potential timeouts

Terminal window
# Measure response time
curl -o /dev/null -s -w "Total: %{time_total}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\n" \
https://umdoni.gov.za
# Check server load (on server)
uptime
top -bn1 | head -20
CauseDiagnosisSolution
High CPUtop shows >80%Kill runaway processes
Slow databaseCheck slow query logOptimize queries, add indexes
Large assetsBrowser dev toolsCompress images, enable gzip
No cachingCheck response headersEnable browser caching

Enable Compression (.htaccess):

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

Enable Caching (.htaccess):

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
</IfModule>

Alert: UmdoniFailedLoginSpike Severity: Warning Impact: Potential security incident, user lockouts

  1. Check Grafana Dashboard

    • Navigate to: monitor.isutech.co.za/d/umdoni-activity
    • Review “Failed Login Attempts” panel
  2. Query Loki

    {job="umdoni-activity"} |= "failed" |~ "login|Login"
  3. Identify Pattern

PatternLikely CauseAction
Same user, multiple attemptsPassword issueContact user, reset password
Same IP, multiple usersTargeted attackBlock IP
Random users/IPsNormal failuresMonitor only

User Password Issue:

  • Contact user directly
  • Reset password if needed
  • Check for account lockout

Suspicious Activity:

  • Block IP in firewall
  • Enable CAPTCHA if available
  • Continue monitoring

Alert: UmdoniBruteForceDetected Severity: Critical Impact: Active attack, potential account compromise

# Query Loki for attacking IP
{job="umdoni-activity"} |= "failed" | json | ip != ""
  1. Audit Accounts

    • Check for unusual activity
    • Force password reset if compromise suspected
  2. Security Improvements

    • Enable 2FA if available
    • Implement rate limiting
    • Add CAPTCHA to login
  3. Document Incident

    • Time of attack
    • Attacking IPs
    • Actions taken
    • Accounts affected

Alerts: PrometheusDown, LokiDown, GrafanaDown, AlertmanagerDown Severity: Critical Impact: Monitoring capabilities degraded or unavailable

Terminal window
ssh root@46.224.40.5
cd /opt/plg-unified
Terminal window
# Check all services
docker compose ps
# Check specific service logs
docker compose logs <service> --tail 100
# Check resource usage
docker stats --no-stream
Terminal window
docker compose restart <service>
docker compose logs <service> --tail 50
Terminal window
docker compose down
docker compose up -d
docker compose ps

Alert: Database connection failures Severity: Critical Impact: Application not functioning

Terminal window
# Test connection
mysql -h hostname -u user -p -e "SELECT 1"
# Check MySQL status
systemctl status mysql
# Check disk space
df -h /var/lib/mysql
SHOW PROCESSLIST;
-- Kill idle connections
KILL <process_id>;

Alerts: HighDiskUsage, PLGTServerDiskCritical Severity: Warning/Critical Impact: Services may crash, data loss possible

Terminal window
# Check usage
df -h
# Find large directories
du -sh /* | sort -rh | head -20
# Find large files
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
Terminal window
# Run cleanup script
/opt/plg-unified/scripts/disk-cleanup.sh
# Clean Docker
docker system prune -a --volumes
# Clean journal logs
journalctl --vacuum-size=500M

Terminal window
# Check site
curl -sI https://umdoni.gov.za | head -5
# Check SSL
echo | openssl s_client -connect umdoni.gov.za:443 2>/dev/null \
| openssl x509 -noout -dates
# Check DNS
dig +short umdoni.gov.za
# PLGT services
ssh root@46.224.40.5 "cd /opt/plg-unified && docker compose ps"
DashboardURL
Mainmonitor.isutech.co.za
Umdoni Activity/d/umdoni-activity
SLA Tracking/d/sla-tracking
Alertmanager/alertmanager
RoleContact
Primary On-CallNhlanhla Mnyandu
Emailnhlanhla@isutech.co.za
Afrihost Supportsupport@afrihost.com

Next: Client Onboarding