今更聞けないAWSのログ運用

3K Views

July 24, 24

スライド概要

JAWS-UG初心者支部#61 初心者向けオンラインLT大会 にて登壇しました。
https://jawsug-bgnr.connpass.com/event/324349/

profile-image

ソフトウェアエンジニア

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

今更聞けないAWSでのログ運用 Takuma Kobayashi, Finatext © 2024 Finatext Holdings Ltd.

2.

Outline ● 自己紹介 ● なぜログが必要なのか ● ECSからの使い方 ● ALBからの使い方 ● つまりログのフォーマットは構造化が大事! ● 社内loggerライブラリの話 ● まとめ © 2024 Finatext Holdings Ltd. 1

3.

自己紹介 ● 小林拓磨(X: @takuma5884rbb) ● 2023 (株)Finatext 入社 ● ソフトウェア・AWSエンジニア ○ Go・AWSを用いた証券取引サービスの開発・運用 ○ Terraformを用いたIaC ● 2024 Japan AWS Jr. Champions ● 趣味 ○ 料理 ○ ランニング © 2024 Finatext Holdings Ltd. 2

4.

はじめに DevOps、してますか? © 2024 Finatext Holdings Ltd. 3

5.

Webサービス開発・運用における日々 環境でのデバッグ、障害対応、etc. 「何が起こったのか」の情報がないと、 ● 再現に時間がかかる ● 環境依存の問題など、再現が難しい事象も →原因がわからなければ、対応のしようがない © 2024 Finatext Holdings Ltd. 4

6.

アプリケーションには声を上げさせる error rate, latency などの集計 一連の処理がどのような 道筋を辿ったか ある処理(あるコードの箇所) において 何が起こったのか https://github.com/cncf/tag-observability/blob/8cfd111503564e15d353cafac4fe2560618a740d/whitepaper.md © 2024 Finatext Holdings Ltd. 5

7.

なぜログが必要なのか? ある時に起こった事象がログから追える! ログの構造を工夫すれば、トレース・メトリクスも追える! (後述します) もちろん、適材適所は大事 © 2024 Finatext Holdings Ltd. 6

8.

具体的な使い方を見ていきます まずはECS+CloudWatch © 2024 Finatext Holdings Ltd. 7

9.

CloudWatch Logs ● 様々なリソースからログデータを収集・集計・分析が可能 ● リソースの関係は以下 Log event Log stream Log event Log group Log event Log stream Log event 1つ1つのアクティビティのレコード イベントソースを共有する ログイベントのまとまり © 2024 Finatext Holdings Ltd. 監視やアクセス制御の設定を 共有する単位 8

10.

CloudWatch Logs/Log group ● 監視対象のAWSリソースごとにLog groupを作成可能 © 2024 Finatext Holdings Ltd. 9

11.

CloudWatch Logs/Log stream ● Log groupはさらにLog streamという単位に分割される ● ECSの場合はtask単位 ECSの場合、ここが <prefix>/<service name>/<task ID> © 2024 Finatext Holdings Ltd. 10

12.

CloudWatch Logs/Log event ● 様々なリソースからログデータを収集・集計・分析が可能 © 2024 Finatext Holdings Ltd. 11

13.

CloudWatch Logs/Logs Insights ● Log streamに対してクエリを投げてデータ取得・分析が可能 © 2024 Finatext Holdings Ltd. 12

14.

ECS→CloudWatch Logs ログの書き込みに必要なリソースは以下 1. ログの書き込み先を指定したタスク定義 2. ログを書き込むためのIAM Policy © 2024 Finatext Holdings Ltd. 13

15.

ECS→CloudWatch Logs ● タスク定義 © 2024 Finatext Holdings Ltd. 14

16.

ECS→CloudWatch Logs ● タスク実行ロールにログの書き込み権限が必要 ● Managed PolicyでよければAmazonECSTaskExecutionRolePolicy © 2024 Finatext Holdings Ltd. 15

17.

ECS→CloudWatch Logs ● 標準出力がLog eventとして表示される © 2024 Finatext Holdings Ltd. 16

18.

閑話休題 AWS ManagedであるALBのアクセスログから、 AWSにおけるログ運用を学んでみる © 2024 Finatext Holdings Ltd. 17

19.

ALB 問題のあったエンドポイント・パスに対して、 問題のあった期間にアクセスのあった全量を知りたい © 2024 Finatext Holdings Ltd. 18

20.

ALB/アクセスログの設定方法 © 2024 Finatext Holdings Ltd. 19

21.

ALB/アクセスログの設定方法 ● アクセスログの保存先として、S3バケットを指定可能 © 2024 Finatext Holdings Ltd. 20

22.

ALB/Athenaからクエリを投げる場合のテーブル定義(一部省略) © 2024 Finatext Holdings Ltd. 21

23.

ALBのアクセスログ形式から学べること Athenaからサクッと集計できる ↓ 構造化が大事!!! © 2024 Finatext Holdings Ltd. 22

24.

ログフォーマットを担保するための実装/社内loggerライブラリ ● 一行書くだけで、時間や発生箇所なども構造的に出力 © 2024 Finatext Holdings Ltd. 23

25.

ログフォーマットを担保するための実装/アクセスログ ● labstack/echo と合わせたアクセスログの収集 ● 様々なリソースからログデータを収集・集計・分析が可能 © 2024 Finatext Holdings Ltd. 24

26.

ログフォーマットを担保するための実装/アクセスログ ● 実際のアクセスログ ユーザーID © 2024 Finatext Holdings Ltd. 25

27.

Logs Insightsで調査してみる ● あるパスのレスポンス状況は? © 2024 Finatext Holdings Ltd. 26

28.

Logs Insightsで調査してみる ● サービスが利用不可能だった時間帯は?(サーバーとしては生きている前提) © 2024 Finatext Holdings Ltd. 27

29.

Logs Insightsが超便利 ● クエリでトレースからメトリクスまで出せる ○ もちろん、定期的に計測したいならメトリクスフィルターとかを使った方がいい ● ただし半構造化データにしてフォーマットを整えていくことが必要 ● CloudWatchは料金が高いイメージがあるが、実際掛かっているのは書き込み部分 だけで、トータルで見るとS3+Athena構成とそんなに変わらない © 2024 Finatext Holdings Ltd. 28

30.

何よりも大事なこと ● 構造化されたフォーマットでログ出力する ● 適切な箇所でログ出力する ○ アクセスログ、エラーログ、etc. ● 知りたい情報に応じてクエリを作る ● どんな場合にどんな情報が必要かを考え、その通りに実装し、その通りに調査する ● 運用で困った経験から、より良い実装・設計を考えるヒントが得られる ● ソフトウェアエンジニアとしての成長につながる © 2024 Finatext Holdings Ltd. 29

31.

何よりも大事なこと 開発と運用は表裏一体! © 2024 Finatext Holdings Ltd. 30

32.

まとめ ● CloudWatch Logsを活用することで、 アプリケーションの利用状況を様々な断面から調査できる ● ただし、構造化されたログフォーマットと、ログ出力の実装を知っていることが必要 ● 開発と運用のサイクルを回してくことが大事 © 2024 Finatext Holdings Ltd. 31

33.

まとめ より良いログ運用について学び、 エンジニアとして圧倒的成長💪 © 2024 Finatext Holdings Ltd. 32