CloudWatch Metriken
# EC2 CPU-Auslastung der letzten Stunde
aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name CPUUtilization --dimensions Name=InstanceId,Value=i-1234567890abcdef0 --start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) --period 300 --statistics Average --query 'Datapoints | sort_by(@, &Timestamp) | [-5:]'
# RDS-Metriken
aws cloudwatch get-metric-statistics --namespace AWS/RDS --metric-name FreeStorageSpace --dimensions Name=DBInstanceIdentifier,Value=firma-prod-db --start-time $(date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ) --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) --period 3600 --statistics Minimum
CloudWatch Alarme erstellen
# SNS Topic für Benachrichtigungen
aws sns create-topic --name aws-alerts
aws sns subscribe --topic-arn arn:aws:sns:eu-central-1:123456789012:aws-alerts --protocol email --notification-endpoint [email protected]
# Alarm: EC2 CPU > 80%
aws cloudwatch put-metric-alarm --alarm-name "EC2-CPU-High" --alarm-description "CPU über 80% für 5 Minuten" --namespace AWS/EC2 --metric-name CPUUtilization --dimensions Name=InstanceId,Value=i-1234567890abcdef0 --statistic Average --period 300 --evaluation-periods 2 --threshold 80 --comparison-operator GreaterThanThreshold --alarm-actions arn:aws:sns:eu-central-1:123456789012:aws-alerts --ok-actions arn:aws:sns:eu-central-1:123456789012:aws-alerts
# Alarm: RDS Speicher < 5 GB
aws cloudwatch put-metric-alarm --alarm-name "RDS-DiskSpace-Low" --namespace AWS/RDS --metric-name FreeStorageSpace --dimensions Name=DBInstanceIdentifier,Value=firma-prod-db --statistic Minimum --period 300 --evaluation-periods 1 --threshold 5368709120 --comparison-operator LessThanThreshold --alarm-actions arn:aws:sns:eu-central-1:123456789012:aws-alerts
CloudWatch Logs (Log-Gruppen und Insights)
# Log-Gruppe erstellen
aws logs create-log-group --log-group-name /firma/app/production
# Retention setzen (Kosten sparen)
aws logs put-retention-policy --log-group-name /firma/app/production --retention-in-days 30
# CloudWatch Logs Insights Query
aws logs start-query --log-group-name /firma/app/production --start-time $(date -d '1 hour ago' +%s) --end-time $(date +%s) --query-string 'fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 20'
# Ergebnis abrufen
aws logs get-query-results --query-id <QUERY_ID>
Custom Metriken
# Eigene Metrik senden (z. B. von Anwendung)
aws cloudwatch put-metric-data --namespace "FirmaApp/Performance" --metric-data '[{"MetricName":"ActiveUsers","Dimensions":[{"Name":"Environment","Value":"Production"}],"Value":150,"Unit":"Count"}]'
CloudWatch Dashboard
cat > dashboard.json << 'EOF'
{
"widgets": [
{
"type": "metric",
"properties": {
"title": "EC2 CPU",
"metrics": [["AWS/EC2","CPUUtilization","InstanceId","i-xxx"]],
"period": 300,
"view": "timeSeries"
}
}
]
}
EOF
aws cloudwatch put-dashboard --dashboard-name FirmaMonitoring --dashboard-body file://dashboard.json
FAQ
Was kostet CloudWatch?
Erste 10 Custom Metriken kostenlos, danach ~0,30 USD/Metrik/Monat. Logs: ~0,0076 USD/GB Ingest + 0,033 USD/GB Archivierung.
Fazit
CloudWatch ist für AWS-Umgebungen das native Monitoring-Tool. Alarme mit SNS-E-Mail sind in 15 Minuten konfiguriert.
AWS Monitoring für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Anfragen.