sommersby - stock.adobe.com

Daten aus CloudWatch Logs automatisch nach S3 verschieben

Um Speicherkosten zu sparen und zur weiteren Verarbeitung exportieren Sie CloudWatch Logs in S3. Verwenden Sie diese Schritt-für-Schritt-Anleitung, um den Prozess zu automatisieren.

Fast jeder IT-Administrator verwendet Protokolle zur Problemsuche und -behandlung. Ohne sie ist kaum nachzuvollziehen, warum eine Anwendung fehlschlägt oder warum sie Warnungen ausgibt.

Um einen Nutzen aus den Protokollen zu ziehen, benötigen Sie einen zentralen Speicherort, der kostengünstig ist und Ihnen hilft, die Daten leicht zu sortieren. Mit Amazon CloudWatch Logs können Administratoren Protokolldaten zentral speichern und überwachen, es gibt aber auch gute Gründe, sie zu S3 (Amazon Simple Storage Service) zu überführen.

Wann sollten Sie Daten aus CloudWatch Logs nach S3 exportieren?

Cloud-Administratoren verwenden in der Regel den CloudWatch-Service, um Überwachungsdaten von Protokollen, Anwendungen und Ressourcen, die auf AWS laufen, zu beobachten. CloudWatch Logs ist eine spezielle Funktion innerhalb von CloudWatch, die besonders auf diesen Anwendungszweck zugeschnitten ist.

Manchmal ist es aber sinnvoll, einen anderen Überwachungsdienst als CloudWatch Logs zu nutzen. Wenn Sie zum Beispiel eine hybride Umgebung haben, möchten Sie vielleicht ein Überwachungs- oder Protokollierungssystem verwenden, das eine breitere Palette von Ressourcen auswertet. Oder Sie bevorzugen ein anderes Protokollierungs-Tool, mit dessen Funktionen Sie schon Erfahrung haben, oder dessen Such- und Aggregationsfunktionen für Ihre Zwecke besser geeignet sind.

Außerdem kostet das Speichern von Daten innerhalb von CloudWatch Logs in der Regel mehr, als in S3. Es ist also sinnvoll, Protokolle, die Sie nicht zeitnah verarbeiten, an einem anderen Ort zwischenzuspeichern.

Evaluieren Sie S3-Speicherklassen

Je nachdem, wann und wie oft Sie auf Protokolldaten zugreifen, sollten Sie eine kalte Speicheroption in Betracht ziehen. Die Speicherklasse S3 Standard ist zwar preiswert, doch es geht noch günstiger. Wenn Sie keinen schnellen und häufigen Zugriff auf die Daten benötigen, sollten Sie S3 Glacier in Betracht ziehen, einen Cold-Storage-Dienst, der für die Datenarchivierung entwickelt wurde. Er hat eine Aufbewahrungsrate von 99,999999999 Prozent, was bedeutet, dass das Risiko eines Datenverlusts minimal ist.

So exportieren Sie Protokolle nach S3

Sie können Protokolldaten über die AWS Management Console, die AWS-Kommandozeile (CLI) oder ein SDK (Software Development Kit) mit einer API (Application Programming Interface) in S3 exportieren. Je nach Situation automatisieren Sie dies, oder stoßen den Export manuell an.

Die Automatisierung ist ideal, da es sich um eine regelmäßigen Vorgang handelt, den Sie leicht vergessen können. Außerdem ist es für zu durchsuchende Datensätze hilfreich, wenn diese möglichst konsistent erzeugt werden – auch das ist manuell schwierig.

Folgen Sie dieser Schritt-für-Schritt-Anleitung, um Protokolle mit von AWS CLI automatisch nach S3 zu exportieren.

Schritt 1. Erstellen Sie einen S3-Bucket mit dem nachfolgenden Code. Nennen Sie Ihren Bucket techtarget-bucket-92. Dies ist der S3-Bucket, in dem Sie die CloudWatch-Protokolldaten speichern werden. Passen Sie die Verfügbarkeitszone (in unserem Beispiel us-east-2) an diejenige an, die für Ihre Zwecke am besten geeignet ist.

aws s3api create-bucket --bucket techtarget-bucket-92 --create-bucket-configuration LocationConstraint=us-east-2

Schritt 2. Richten Sie die Zugriffsrichtlinien und -berechtigungen für den S3-Bucket ein; standardmäßig sind alle Buckets privat. Die folgende Richtlinie gibt CloudWatch Zugriff auf den Export von Protokollen nach S3.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "s3:GetBucketAcl",
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::techtarget-bucket-92",
            "Principal": { "Service": "logs.us-east-2.amazonaws.com" }
        },
        {
            "Action": "s3:PutObject" ,
            "Effect": "Allow",
            "Resource": " arn:aws:s3:::techtarget-bucket-92/*",
            "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } },
            "Principal": { "Service": "logs.us-east-2.amazonaws.com" }
        }
    ]
}

Schritt 3. Sobald die Richtlinie erstellt ist, wenden Sie diese auf den S3-Bucket an:

aws s3api put-bucket-policy --bucket techtarget-bucket-92 --policy file://policy.json

Schritt 4. Als letztes beginnen Sie direkt mit dem Export der Protokolle von CloudWatch nach S3:

aws logs create-export-task --profile ExportIAMUser --task-name "cloudwatchtos32022" --log-group-name "cloudwatchtos3" --from 1441490400000 --to 1441494000000 -destination "techtarget-bucket-92" --destination-prefix "log-output"

Wenn dieser Schritt abgeschlossen ist, haben Sie die Protokolldaten erfolgreich von CloudWatch nach S3 verschoben.

Erfahren Sie mehr über Data-Center-Betrieb