---
title: AWS オブザーバビリティ入門 LambdaとECSで実践するベストプラクティス
tags:  #aws #オブザーバビリティ #aws x-ray  
author: [Takuya Yamazaki](https://www.docswell.com/user/kkmtyyz)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/LEL2Z89R7R.jpg?width=480
description: 2025年5月27日に開催した社内イベント「AWSランチセッション第6回」の発表資料です。  オブザーバビリティとは何か、その3本柱からAWS LambdaやECSを使ったアーキテクチャでのベストプラクティスな実践方法を紹介しています。 システムが複雑になってきてトラブルシューティングに勘や時間が必要になってきた方にもおすすめの内容です。
published: May 28, 25
canonical: https://www.docswell.com/s/kkmtyyz/ZYD4RV-2025-05-28-212913
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/LEL2Z89R7R.jpg)

2025-05-27 AWSランチセッション 第6回
AWS オブザーバビリティ入門
―LambdaとECSで実践するベストプラクティス―
山崎 拓也


# Page. 2

![Page Image](https://bcdn.docswell.com/page/4JM8V6ZPJW.jpg)

山崎 拓也
所属: SIer
仕事:
• システム開発など
• アプリとAWSインフラ両方
好き: 低レイヤ、SF、AWS
AWS関連:
• 2024 Japan AWS Top Engineer
• 2022～2024 Japan AWS All Certifications Engineer


# Page. 3

![Page Image](https://bcdn.docswell.com/page/PJR52P6YE9.jpg)

アジェンダ
• オブザーバビリティとは
• AWSにおける実践方法のベストプラクティス
• Lambda
• ECS
• まとめ


# Page. 4

![Page Image](https://bcdn.docswell.com/page/PEXKD3M4JX.jpg)

オブザーバビリティとは


# Page. 5

![Page Image](https://bcdn.docswell.com/page/3EK5XYGPJD.jpg)

システムは様々な価値を提供している


# Page. 6

![Page Image](https://bcdn.docswell.com/page/L73K59N475.jpg)

蓋を開けると複雑


# Page. 7

![Page Image](https://bcdn.docswell.com/page/87D3DGW5JG.jpg)

様々な問題が起こる
レスポンスが遅い
処理が失敗する
データが遅延する


# Page. 8

![Page Image](https://bcdn.docswell.com/page/VJP4X39D78.jpg)

ビジネスに直接的な影響を与える
ユーザー離れ
レスポンスが遅い
取り返しのつかない重大インシデント
処理が失敗する
安全性や品質の低下
データが遅延する


# Page. 9

![Page Image](https://bcdn.docswell.com/page/2EVXL4MGJQ.jpg)

原因を調査したり、兆候をつかむには？
全てのログやコードを追いかける？
ベテランの勘に頼る？
いつどこで何が起こってる？
仮説を立ててデバッグする？
今はどういう状態なの？


# Page. 10

![Page Image](https://bcdn.docswell.com/page/57GVX1XD7L.jpg)

原因を調査したり、兆候をつかむには？
全てのログやコードを追いかける？
ベテランの勘に頼る？
いつどこで何が起こってる？
仮説を立ててデバッグする？
オブザーバビリティで解決・軽減できる
今はどういう状態なの？


# Page. 11

![Page Image](https://bcdn.docswell.com/page/4EQ68D8XEP.jpg)

オブザーバビリティとは
• システムの状態を外側から理解することを可能にする能力
• トラブルシューティングや対処が容易になる
• 結果として
• 満足度や信頼性の向上
• 機会損失の回避
• 運用コストの最適化
• システムは外部へ状態を伝える必要がある
• 意味のある実用的な情報のみを発することが重要


# Page. 12

![Page Image](https://bcdn.docswell.com/page/KJ442Z22J1.jpg)

オブザーバビリティの3本柱
ログ
• イベントやエラーなどの情報
メトリクス
• リクエスト数やCPU使用率などの数値
トレース
• 処理の流れや所要時間


# Page. 13

![Page Image](https://bcdn.docswell.com/page/LE14MRMKEG.jpg)

AWSにおける実践方法のベストプラクティス


# Page. 14

![Page Image](https://bcdn.docswell.com/page/GEWX313P72.jpg)

Lambdaを使用したアーキテクチャ
• オブザーバビリティの3本柱を実践する


# Page. 15

![Page Image](https://bcdn.docswell.com/page/47Z6VPV673.jpg)

Lambda Powertools
• Lambda関数でベストプラクティスを実装するための公式ツールキット
• オブザーバビリティのベストプラクティスも実装できる
• 様々な言語に対応
• Python
• TypeScript
• Java
• .NET
https://github.com/aws-powertools


# Page. 16

![Page Image](https://bcdn.docswell.com/page/YJ625M5L7V.jpg)

Lambda関数にレイヤーとして追加することで使用可能


# Page. 17

![Page Image](https://bcdn.docswell.com/page/GJ52YZYMJ4.jpg)

ログをデータとして扱う
• 構造化されたログを出力することがベストプラクティス
• PowertoolsのLoggerを使うだけでOK
構造化されていないログ
構造化されたログ


# Page. 18

![Page Image](https://bcdn.docswell.com/page/LE3K5959E5.jpg)

構造化によりクエリやプログラム処理が容易になる
• CloudWatch Logs Insightsでのクエリ


# Page. 19

![Page Image](https://bcdn.docswell.com/page/8ED3DGD87G.jpg)

CloudWatch EMFでメトリクスを送信（Embedded metric format）
• 日本語では埋め込みログフォーマットと言う
• CloudWatch Metricsではなく、
CloudWatch Logsへメトリクスを送信する
• EMFでLogsへログ出力すると
自動でメトリクスとして抽出してくれる
• メリット
• 非同期実行のため処理をブロックしない
• コストを抑えられる
EMFフォーマットの例
それなりに複雑
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Specification.html
https://aws.amazon.com/jp/blogs/mt/lowering-costs-and-focusing-on-our-customers-with-amazon-cloudwatch-embedded-custom-metrics/


# Page. 20

![Page Image](https://bcdn.docswell.com/page/V7P4X3XWE8.jpg)

PowertoolsのMetricsで簡単にEMF準拠のログを出力できる
※注意
デコレーターによりLambda関数
終了後にログ出力するため、
metrics.flush_metrics()にて
エラーハンドリングする必要あり


# Page. 21

![Page Image](https://bcdn.docswell.com/page/2JVXL4L97Q.jpg)

X-Rayで処理全体をトレースする
• Lambda関数の設定からX-Rayを有効化すると一気通貫のトレースが可能
• X-Rayと統合されているサービス
• Lambda
• API Gateway
• SQS
• SNS
• ELB
• DAOT
• Elastic Beanstalk
• EventBridge
https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-services.html


# Page. 22

![Page Image](https://bcdn.docswell.com/page/5EGVX1X4EL.jpg)

X-Rayのトレース画面
SQSを挟んだLambda以降
の処理もトレースされる
リクエスト全体で4.19秒
対応するLambda関数
のログも表示される


# Page. 23

![Page Image](https://bcdn.docswell.com/page/4JQ68D8RJP.jpg)

X-Ray SDKでさらに詳細にトレースできる
• PowertoolsレイヤーにX-Ray SDKも含まれている
• コード内の任意の区間をトレースできる
• サポートされているライブラリの関数呼び出しは自動でトレースできる
• botocore, boto3
• mysql-connector-python
• psycopg2
• sqlite3
• などなど
この区間をトレース
1秒スリープする
https://docs.aws.amazon.com/ja_jp/xray/latest/devguide/xray-sdk-python-patching.html


# Page. 24

![Page Image](https://bcdn.docswell.com/page/K7442Z2Q71.jpg)

X-Ray SDKによる詳細なトレース
SQSやDynamoDB
のAPI呼び出しもトレース
独自関数f()には
1秒かかっている


# Page. 25

![Page Image](https://bcdn.docswell.com/page/LJ14MRMLJG.jpg)

正常応答したリクエストの後ろに潜む障害も一目瞭然
APIリクエストは正常
（200）に返っている
内部では障害が起こっている
トレースのおかげで原因の
リクエストをすぐに特定可能
DynamoDB呼び出しの後で
エラーとなっている


# Page. 26

![Page Image](https://bcdn.docswell.com/page/GJWX313QE2.jpg)

（補足）Application Signalsについて
• Application Signalsでもトレースできる
• 考慮点
• X-Ray SDKと併用できない
• 特定の関数を個別にトレースすることができない
• MySQLやPostgreSQLなどのライブラリの関数がトレースできない
初回のみ「サービス検出を開始」が必要
各Lambdaの設定画面


# Page. 27

![Page Image](https://bcdn.docswell.com/page/4EZ6VPV3E3.jpg)

ECSを使用したアーキテクチャ
• ADOT Collectorをサイドカーとしてトレースとメトリクスを収集する


# Page. 28

![Page Image](https://bcdn.docswell.com/page/Y7625M5ZEV.jpg)

ADOT Collectorとは（AWS Distro for OpenTelemetry Collector）
OpenTelemetry Collectorとは
• オブザーバビリティのオープンな標準としてOpenTelemetry（OTel）がある
• OTel Collectorは、ログ、メトリクス、トレースを収集・処理・送信を行うコンポーネント
• テレメトリデータ配信プロトコルはOpenTelemetryプロトコル（OTLP）
ADOT Collectorとは
• AWS Distro for OpenTelemetry Collectorの略
• AWSに最適化されたOTel CollectorのAWS公式ディストリビューション
• アプリにX-Rayなどの特別なコードが不要となる
• CloudWatch Logs / Metrics / X-Rayへの送信を標準サポート
• サードパーティ観測ツールとの連携も簡単になる
• ECRにコンテナイメージが用意されている
https://aws-observability.github.io/observability-best-practices/ja/patterns/otel
https://opentelemetry.io/ja/docs/what-is-opentelemetry/


# Page. 29

![Page Image](https://bcdn.docswell.com/page/G752YZY974.jpg)

OTel SDKでトレースをADOT Collectorへ送信できる
この区間をトレース
3秒スリープする


# Page. 30

![Page Image](https://bcdn.docswell.com/page/9J24GRG57R.jpg)

AWS SDKのAPI呼び出しは自動でトレースできる
• AWSからJava用のOTel自動計装エージェントが配布されている
• コード変更なしにトレース生成してくれる
Dockerfile
https://aws.amazon.com/jp/blogs/news/new-for-aws-distro-for-opentelemetry-tracing-support-is-now-generally-available/
https://github.com/aws-observability/aws-otel-java-instrumentation
https://aws-otel.github.io/docs/getting-started/java-sdk/auto-instr


# Page. 31

![Page Image](https://bcdn.docswell.com/page/DEYMVDV6EM.jpg)

X-Rayのトレース画面
DynamoDBのトレースが
自動で取得される
リクエスト全体で5.85秒
3秒スリープ


# Page. 32

![Page Image](https://bcdn.docswell.com/page/VJNWM6G1J8.jpg)

AWSからオブザーバビリティのベストプラクティスが公開されている
• AWS Observability Best Practices
https://aws-observability.github.io/observability-best-practices/ja/


# Page. 33

![Page Image](https://bcdn.docswell.com/page/YE9XNLWY73.jpg)

トピックやサービスごとに大量のベストプラクティスがある


# Page. 34

![Page Image](https://bcdn.docswell.com/page/GE82KXNKED.jpg)

まとめ
• オブザーバビリティにより、トラブルシューティングや対処が容易になる
• Lambda Powertoolsにより、ベストプラクティスに沿った計装が簡単に
実現できる
• ADOT CollectorによりアプリにAWS SDKを組み込まなくとも、X-Rayや
CloudWatchなどAWSサービス、さらにサードパーティ観測ツールともス
ムーズに連携できる


# Page. 35

![Page Image](https://bcdn.docswell.com/page/LEL2Z8PP7R.jpg)

ご清聴ありがとうございました。


