B-3 ログと徹底的に向き合うデータドリブンなサービス運用
デブサミでメモしたことをつらつら書いていきます。
持って帰って欲しいこと
ログをデータドリブン開発の一部として利用できる仕組み
ログ出力の基本
![](https://assets.st-note.com/img/1708653727396-vhphx41wTd.png?width=1200)
ログの出力形式
・タイムスタンプ
ログの出力時刻
・出力元の情報
ホスト名、プロセスID、スレッドID等
・ログレベル
INFO、WARN、ERROR等
・トレース識別情報
サービスを跨いでリスクエストを追跡するための情報
・処理結果
所要時間、ステータスコード
・詳細情報
バックトレース等
ログ例
スタックトレース(バックトレース)は出していい
![](https://assets.st-note.com/img/1708653796375-22ACrZWvLU.jpg?width=1200)
ログの出力先
・CloudWatch Logs(クラウドのログ基盤)
コンテナの出力するログ
・S3(オブジェクトストレージ)
VPC Flow Log、ALBのログ等、AWS内部で自動的に取得するもの
・BigQuery(データウェアハウス)
リクエストログの一部は、CloudWatch LogsではなくBigQueryに連携
Google AnalyticsのログもBigQueryに連携
・Sentry/Datadog(イベントトラッキングサービス)
アプリケーションのエラー情報
リクエストログの一部
ログの出力タイミング
・エラーが発生した場合
アプリケーションエラー
不具合の可能性もあるので早急に対応が必要
・エラーではないが、特定の条件に合致した場合
入力のValidationエラー、ログイン認証の失敗、サービス規約上の上限や制限超過等
アプリケーション的には想定通りの挙動だが、ユーザー側はうまく利用できていない状況の記録
発生頻度が多いようであれば、何かしら改善の余地がある可能性がある
・常時
リクエストログ、監査ログ等
長時間かかる処理の進捗状況
うるるでの仕組み
![](https://assets.st-note.com/img/1708653917619-XxGwmbD2yU.jpg?width=1200)
サービスの状態とは
・リクエスト数
そのサービスがどれくらい呼ばれているか
DatadogやBigQueryに格納したログの集計で把握
・レスポンス
遅延がないかDatadogで把握
500エラーが多発していないかALBのメトリクスで把握
・システムリソース
CPUやメモリ等が過負荷になっていないか
CloudWatch、Datadogで把握
エラーの種類
・アプリの不具合(バグ)
アプリからのログと通知(イレギュラーな事象)
主にSentryで検知
・プラットフォームの不具合(サーバーダウン等)
死活監視、AWSからの通知
アプリからのログと通知(DB接続エラー等)
・過負荷によるスローダウン
Datadogのアラート
エラーの見やすさ
・量を絞る
一目で確認できる量には限界がある
Sentryで通知頻度を制御
・フォーマットを工夫する
必要な情報だけに整理する
Web画面で整理された情報を確認(Sentry/Datadog)
セキュリティ関連のログ
・外部からの攻撃や侵入の記録
GuardDuty
WAFのログ
VPCフローログ
・監査ログ
データベースへログを記録
・システム変更
CloudTrail
AWSConfig
利用情報
・ユーザーの操作情報
アクセス情報
UA
リファラー
ユーザーを特定できる情報(IDなど)
この記事が気に入ったらサポートをしてみませんか?