1

Ich habe im letzten Monat eine Rechnung von Amazon für Cloudwatch-Dienste im Wert von $ 1.200 erhalten (speziell für 2 TB Protokolldatenaufnahme in "AmazonCloudWatch PutLogEvents"), als ich einige zehn Dollar erwartete. Ich habe mich im Abschnitt Cloudwatch der AWS-Konsole angemeldet und kann feststellen, dass eine meiner Protokollgruppen etwa 2 TB Daten verwendet hat. In dieser Protokollgruppe gibt es jedoch Tausende verschiedener Protokolldatenströme. Wie kann ich feststellen, welche Datei diesen Betrag verwendet hat? von Dateien?Mein AWS Cloudwatch Rechnung ist riesig. Wie finde ich heraus, welcher Log-Stream das verursacht?

Antwort

1

Okay, ich bin answering my own question hier, aber hier gehen wir (mit allen anderen Antworten willkommen):

Sie eine Kombination von AWS CLI-Tool verwenden können, das csvfix CSV-Paket und eine Tabelle, dies zu erarbeiten.

  • Melden Sie sich bei der AWS Cloudwatch Console an und wählen Sie den Namen der Protokollgruppe, die alle Daten generiert hat. In meinem Fall heißt es "test01-ecs".
  • Leider können Sie in der Cloudwatch Console die Streams nicht nach "Stored Bytes" sortieren (was Ihnen sagen würde, welche die größten sind). Wenn in der Protokollgruppe zu viele Streams vorhanden sind, um in der Konsole nachzusehen, müssen Sie sie irgendwie ablegen. Hierfür können Sie die AWS CLI-Tool verwenden:

    $ aws logs describe-log-streams --log-group-name test01-ecs

  • Der obige Befehl geben Sie JSON-Ausgang (vorausgesetzt, Ihr AWS CLI-Tool zu JSON Ausgang gesetzt - setzen Sie ihn auf output = json in ~/.aws/config wenn nicht) und es wird in etwa so aussehen:

    { "logStreams": [ { "creationTime": 1479218045690, "arn": "arn:aws:logs:eu-west-1:902720333704:log-group:test01-ecs:log-stream:test-spec/test-spec/0307d251-7764-459e-a68c-da47c3d9ecd9", "logStreamName": "test-spec/test-spec/0308d251-7764-4d9f-b68d-da47c3e9ebd8", "storedBytes": 7032 } ] }

  • Rohr dieser Ausgabe in eine JSON-Datei - in meinem Fall die Datei war 31 MB in Größe:

    $ aws logs describe-log-streams --log-group-name test01-ecs >> ./cloudwatch-output.json

  • Verwenden Sie das in2csv Paket (Teil csvfix), um die JSON-Datei in eine CSV-Datei zu konvertieren, die leicht in ein Tabellenkalkulationsprogramm importiert werden kann, dafür, dass Sie die logStreams Schlüssel definieren, verwendet werden soll importieren auf:

    $ in2csv cloudwatch-output.json --key logStreams >> ./cloudwatch-output.csv

  • Import der resultierenden CSV-Datei in eine Tabelle (ich benutze LibreOffice mich, wie es mit CSV zu tun haben scheint groß) dafür, dass die storedBytes Feld wird als Ganzzahl importiert.

  • Sortieren Sie die Spalte storedBytes in der Tabelle, um herauszufinden, welcher Protokolldatenstrom oder welche Datenströme die meisten Daten generieren.
  • In meinem Fall funktionierte das - es stellte sich heraus, dass einer meiner Protokollströme (mit Protokollen von einem defekten TCP-Rohr in einer Redis-Instanz) 4000 mal so groß war wie alle anderen Ströme zusammen!

    Verwandte Themen