CloudWatch Logs にテストデータを送信する方法2パターン(CLI/マネジメントコンソール)
コンサル部@大阪オフィスのYui(@MayForBlue)です。
今回はCloudWatch Logs にテストデータ(ログイベント)を送信する方法を、マネジメントコンソールを使う場合と AWS CLI を使う場合の2パターンご紹介します。
前提条件
- ロググループ、ログストリームが作成されていること
Cloud Watch Logs は階層の概念があり、ログイベントの保存のためにはロググループ、ログイベントの作成が必須となります。
ログイベントを保存するために、ロググループと、その中に一つ以上のログストリームを作成してください。
ログストリームは、対象のロググループの詳細画面の「ログストリームを作成」をクリックしてログストリーム名を入力することで作成できます。
テスト用のログイベントを送信する
マネジメントコンソールの場合
CloudWatch Logs のダッシュボードから対象のロググループを選択し、ログストリームのタブから対象のログストリームを選択します。
ログイベントの一覧が表示されるので、「アクション」をクリックして「Create log event」をクリックします。
テスト用に送信したいメッセージを入力し、「作成」をクリックします。
画面を再読み込みすると、実際にログが送信・保存されていることが確認できます。
タイムスタンプは作成時のものが自動で適用されます。
AWS CLI の場合
AWS CLI の場合は、aws log put-log-events
のコマンドを使用します。
以下が必須の引数となります。
--log-group-name
ロググループ名--log-stream-name
ログストリーム名--log-events
ログイベント内容
ログイベントはタイムスタンプとメッセージ内容を記述する必要があり、以下の2パターンの書き方があります。
- timestamp=long,message=string
- JSON形式(下記が例)
[ { "timestamp": long, "message": "string" } ... ]
実際にやってみる
ログイベントをtimestamp=long,message=string
で記述する方法でやってみます。
CloudWatch Logs に送信するタイムスタンプは13桁のUNIX時間(1970年1月1日00:00:00 UTCからのミリ秒数)である必要があるため、以下のnodeコマンドで取得したタイムスタンプを使用しました。
node -e 'console.log(Date.now())'
テスト用のログイベントを送信します。
aws logs put-log-events --log-group-name test-log-group --log-stream-name test-log-stream --log-events timestamp=$(node -e 'console.log(Date.now())'),message="test log message from AWS CLI"
AWS CLI からpushした内容でログが保存されていることが確認できました。
補足として、こちらの方法では一度ログを送信すると、以下のようにトークンが発行されます。
aws logs put-log-events --log-group-name test-log-group --log-stream-name test-log-stream --log-events timestamp=$(node -e 'console.log(Date.now())'),message="test log message from AWS CLI" { "nextSequenceToken": "496089438006708123456789123456789123456789" }
二回目以降 AWS CLI からログを送信する場合は、--sequence-token
の引数にこのトークンを含める必要があります。
このコマンドの公式ドキュメントは以下となります。
put-log-events
また、以下のブログでも使い方が解説されているので、こちらも読んでみてください。
さいごに
CloudWatch Logs にテストデータを送信する方法 をまとめてみました。
この記事がどなたかのお役に立てば幸いです。
以上、コンサル部@大阪オフィスのYui(@MayForBlue)でしたっ(`・ω・´)