CLIを使ってLogsInsightsの情報を取得する。
Posted on
はじめに
LogsInsightsの情報の取得にAWS CLIが使用できます。
CloudShell上でログの日本語が文字化けしないかも気になったので 実際に実行して確認してみました。
やること
あらかじめロググループにログを準備しておき CloudShellからクエリ実行します。
やってみた。
1) ログを準備する。
コンソールからロググループ、ストリーム,イベントメッセージを登録します。
- ロググループ : /loginsight/test
- ストリーム : test
- イベントメッセージ : これはテストです
2) Logs Insightsのクエリを実行する。
InsightsのクエリをCLIで実行します。 CLIの出力としてクエリのIDが返ってきます。
コマンドを少し補足すると スキャンするログの開始、終了時刻をUNIXタイムで指定する必要があります。
ここではあらかじめ現在の日時をTODAY
,24時間前の日時をYESTERDAY
に変数にいれて、
Insightsを実行するコマンドの引数に入れています。
■入力
TODAY=$(date +%s)
YESTERDAY=$(date +%s --date '1 days ago')
aws logs start-query \
--log-group-name '/loginsight/test' \
--start-time $YESTERDAY \
--end-time $TODAY \
--query-string 'fields @timestamp, @message | sort @timestamp desc| limit 4'
■出力
{
"queryId": "775673be-bce4-4ef3-8152-e7e7d926fe3a"
}
3) クエリのIDを使って抽出結果を取得する。
先ほどのIDをquery-id の引数にしてCLIを実行します。
出力の @message のvalueがちゃんと[“これはテストです”]となっていることがわかります。
■入力
aws logs get-query-results \
--query-id 'd79c01e7-449f-46b5-9220-082a76b9d38d'
■出力
{
"results": [
[
{
"field": "@timestamp",
"value": "2021-02-23 12:13:45.768"
},
{
"field": "@message",
"value": "これはテストです"
},
{
"field": "@ptr",
"value": "ClkKIQodOTczNDc5NTI5NTQyOi9sb2dpbnNpZ2h0L3Rlc3QQBhI0GhgCBgIuVfAAAAAAumF6TgAGA08UQAAAAAIgASioh732/C4wqIe99vwuOAFAN0iiClDQBhAAGAE="
}
]
],
"statistics": {
"recordsMatched": 1.0,
"recordsScanned": 1.0,
"bytesScanned": 55.0
},
"status": "Complete"
}
まとめ
CloudShellからLogsInsightsのCLIが実行できること
日本語も文字化けしないことを確認できました。
UNIXタイムに変換するのがなかなか大変ですが、dateコマンドをうまく活用していけば大丈夫そうです。