Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
CloudWatch Logs Insightsで 定期業務をスマートに みのるんのゲリラ勉強会&インフラ技術基礎勉強会 アイレット株式会社 ⼩巻玖美
Slide 2
Slide 2 text
⾃⼰紹介 2 所属:アイレット株式会社 アジャイル事業部 業務:TSやPythonでのWebアプリケーション開発 (最近は専ら⽣成AI系) ⼩巻 玖美 / こまきち @komakichidev https://zenn.dev/kumao
Slide 3
Slide 3 text
ある⽇、こんなことを⾔われました 3
Slide 4
Slide 4 text
やりたいこと 4 エンドユーザーから時々レスポンスが 遅いと報告が上がっている 数ヶ⽉間、定期的にログを確認して 原因を調査してくれ
Slide 5
Slide 5 text
やりたいこと 5 ● アプリケーションのパフォーマンスをあげたい ボトルネックを探す⼀助として、遅延が発⽣しているリクエストを知りたい ● 1ヶ⽉分のログが対象 API GatewayのLatencyやLambdaのDurationがx秒以上のものを探したい
Slide 6
Slide 6 text
やりたいこと 6
Slide 7
Slide 7 text
最初の数ヶ⽉間、こんな作業をしていました 7
Slide 8
Slide 8 text
これまで⾏っていたこと 8
Slide 9
Slide 9 text
これまで⾏っていたこと 9
Slide 10
Slide 10 text
これまで⾏っていたこと 10
Slide 11
Slide 11 text
これまで⾏っていたこと 11
Slide 12
Slide 12 text
これまで⾏っていたこと 12
Slide 13
Slide 13 text
これまで⾏っていたこと 13
Slide 14
Slide 14 text
これまで⾏っていたこと 14
Slide 15
Slide 15 text
これまで⾏っていたこと 15
Slide 16
Slide 16 text
これまで⾏っていたこと 16
Slide 17
Slide 17 text
これまで⾏っていたこと 17
Slide 18
Slide 18 text
これまで⾏っていたこと 18
Slide 19
Slide 19 text
そんな時に CloudWatch Logs Insights に出会った 19
Slide 20
Slide 20 text
CloudWatch Logs Insightsとは 20 AWS CloudWatchに保存されたログデータをリアルタイムで検索し、 分析するためのクエリツール
Slide 21
Slide 21 text
CloudWatch Logs Insightsとは 21 クエリ構⽂ ロググループをクエリし、特定のログデータを抽出‧分析するための⾔語 コマンド名 説明 display 特定のフィールドをクエリ結果に表⽰する filter クエリをフィルタリングし、条件に⼀致するログイベントのみを返す stats ログフィールドの値を使⽤して統計情報を算出する dedup 指定したフィールドの値に基づいて重複した結果を削除する unmask マスクされたデータの内容を表⽰する
Slide 22
Slide 22 text
CloudWatch Logs Insightsとは 22 クエリ構⽂ ロググループをクエリし、特定のログデータを抽出‧分析するための⾔語 コマンド名 説明 display 特定のフィールドをクエリ結果に表⽰する filter クエリをフィルタリングし、条件に⼀致するログイベントのみを返す stats ログフィールドの値を使⽤して統計情報を算出する dedup 指定したフィールドの値に基づいて重複した結果を削除する unmask マスクされたデータの内容を表⽰する こんな感じ
Slide 23
Slide 23 text
実際にやってみます 23
Slide 24
Slide 24 text
やってみる 24 CloudWatch Logs Insightsに移動する
Slide 25
Slide 25 text
やってみる 25 クエリを書きます <⼊⼒> 対象はLambda関数の実⾏に関するログイベント / 処理に4秒以上かかっている / タイムスタンプで ソート / 20個まで表⽰
Slide 26
Slide 26 text
やってみる 26 クエリを書きます <出⼒> タイムスタンプ / リクエストID / 処理にかかった時間 / CloudWatch Logsのログストリーム / メッセージ
Slide 27
Slide 27 text
やってみる 27
Slide 28
Slide 28 text
やってみる 28 @duration @log / @logStream @message
Slide 29
Slide 29 text
やってみる 29
Slide 30
Slide 30 text
やってみる 30 対象のリクエストもわかる!
Slide 31
Slide 31 text
やってみる 31 対象のリクエストもわかる! ログにも⾶べる!
Slide 32
Slide 32 text
やってみる 32 対象のリクエストもわかる! ログにも⾶べる!
Slide 33
Slide 33 text
やってみる 33 対象のリクエストもわかる! ログにも⾶べる! ただ、この沢⼭のログ ログ設計を⾒直すともっと⾒やすい!!
Slide 34
Slide 34 text
ログをもう少し⾒やすくする (ログ設計のおはなし) 34
Slide 35
Slide 35 text
ログを⾒やすくする 35 ログ形式を意識せずにLambdaを作成すると、取得できる@messageの 表⽰がバラバラ 例: Lambda(Python)でprint出⼒を混ぜた 天気を取得する実装の例 ↑
Slide 36
Slide 36 text
ログを⾒やすくする 36 そこでログ出⼒を共通化することで、欲しいログを探しやすくする fields @timestamp, @duration, @message, @logStream, @log | filter @message like "INFO" // ここではINFOを取り出してみる | limit 100
Slide 37
Slide 37 text
ログを⾒やすくする 37 TIPS:ログの共通化には「Powertools for AWS Lambda」が便利! フォーマットを指定しなくても、Powertoolsが良しなにやってくれる Loggerだけでなく、Validation‧Parser‧Data Maskingなどが簡単に導⼊可能
Slide 38
Slide 38 text
CloudWatch Logs Insights その他の機能 38
Slide 39
Slide 39 text
その他の機能 39 クエリを保存しておく クエリした結果を CloudWatchのダッシュボードに追加も可能 クエリ単体での保存
Slide 40
Slide 40 text
その他の機能 40 ⾃然⾔語を使⽤して Logs Insights CloudWatch クエリを⽣成および更新する ※バージニア北部、オレゴン、東京リージョンでのみ利⽤可能
Slide 41
Slide 41 text
その他の機能 41 ⾃然⾔語を使⽤して Logs Insights CloudWatch クエリを⽣成および更新する ※バージニア北部、オレゴン、東京リージョンでのみ利⽤可能 英語のみ対応…
Slide 42
Slide 42 text
まとめ 42 CloudWatch Logs Insightsを使⽤したことで… ● 数の多い⼿作業の調査から決まったクエリ結果を⾒るだけに ● 遅延の原因特定が迅速に ● ダッシュボードへのクエリ結果追加で、より楽にミスを少なく
Slide 43
Slide 43 text
Appendix 43 ・powertools-lambda-python https://docs.powertools.aws.dev/lambda/python/latest/ ・CloudWatch Logs Insights を使用したログデータの分析 https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/Analy zingLogData.html