AWS CloudWatch Logsコマンドチートシート

AWS CloudWatch Logsコマンドチートシート

CloudWatchのログはCloudWatchインサイトなどの便利な機能もありますが、マネジメントコンソールからだとどうしても見にくいのでCLIで開始と終了を指定して整形してあげれば非常に見やすくすることが可能です。

ロググループをaws logs --log-group-nameでロググループを指定指定して出力します。Amazon Linuxで試しました。

Lambda名 環境
hogeLambda Amazon Linux

aws logs filter-log-eventsコマンドを使用します。

--end-timeを指定しなければ現在時刻までのログが出力されます。+%s000としているのはミリ秒まで指定が必要なためです。+%s%3NでもOKです。

CloudWatchで表示される項目は以下のJSON形式です。

{
"searchedLogStreams": [
{
"searchedCompletely": "全てのログを検索したかどうか", // true or false
"logStreamName": "ログストリーム名"
}
// …オブジェクトが続く
],
"events": [
{
"ingestionTime": "Cloud Watch Logsに受信されたタイムスタンプ(13桁のエポック秒)",
"timestamp": "タイムスタンプ(13桁のエポック秒)",
"message": "ログ出力内容",
"eventId": "イベントID",
"logStreamName": "ログストリーム名"
}
// …オブジェクトが続く
]
}

view raw
cloudwatch.json
hosted with ❤ by GitHub

--queryオプションで表示を指定する

必要な情報のみ出力したい場合は–queryオプションを指定します。ここではtimestampとmessageのみ出力してみます。

--query "sort_by(events, &timestamp)[].{timestamp:timestamp,message:message}"」とすれば、timestampとmessageのみをJSON形式で出力することができます。

messageだけを出力したい場合は、「--query "sort_by(events, &timestamp)[].{message:message}"」と指定すればJSON形式で出力されます。

以下コマンドと出力例です。(timestampだけ表示したい人はいないと思いますが)

出力結果

以下コマンドでタイムスタンプとメッセージを表示することができます。

--filter-pattern

messageの値がJSON形式の場合、エスケープされて\\みたいな表示になってしまい非常に見にくいです。その場合は--filter-pattern "RawContent"も指定しておきます。

出力結果

--output

–outputで出力形式を指定します。省略するとjsonになります。

jsonの他に、text,tableが指定できます。

xx分前~今までのログ

--start-timeに3分前の13桁のエポック秒を指定します。--end-timeは未指定にします。

このコマンドで13桁のエポック秒が取得できます。

以下コマンドで3分前から今までのログを取得することができます。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA