

# OPS 4 ワークロードの状態を理解するために、ワークロードをどのように設計すればよいですか?
<a name="ops-04"></a>

 ワークロードを設計する際には、すべてのコンポーネント (メトリクス、ログ、トレースなど) にわたって内部状態を理解するために必要な情報が送出されるようにします。そうすることによって、適時に有用な返答を提供できるようになります。 

**Topics**
+ [OPS04-BP01 アプリケーションテレメトリーを実装する](ops_telemetry_application_telemetry.md)
+ [OPS04-BP02 ワークロードテレメトリーを実装して設定する](ops_telemetry_workload_telemetry.md)
+ [OPS04-BP03 ユーザーアクティビティテレメトリーを実装する](ops_telemetry_customer_telemetry.md)
+ [OPS04-BP04 依存関係のテレメトリーを実装する](ops_telemetry_dependency_telemetry.md)
+ [OPS04-BP05 トランザクショントレーサビリティを実装する](ops_telemetry_dist_trace.md)

# OPS04-BP01 アプリケーションテレメトリーを実装する
<a name="ops_telemetry_application_telemetry"></a>

 アプリケーションテレメトリーは、ワークロードの可観測性の基盤です。アプリケーションは、アプリケーションの状態やビジネス成果の達成に関するインサイトを提供するテレメトリーを送信する必要があります。トラブルシューティングから新しい機能の効果測定に至るまで、アプリケーションテレメトリーを使用することで、ワークロードの構築、運用、展開方法に関する情報を得ることができます。 

 アプリケーションテレメトリーは、メトリクスとログで構成されます。メトリクスは、脈や体温などの診断情報を指します。複数のメトリクスを使用することで、アプリケーションの状態を知ることができます。長期間にわたるメトリクスの収集は、ベースラインの開発や異常の検知に役立ちます。ログは、アプリケーションの内部の状態や発生したイベントに関してアプリケーションが送信するメッセージです。記録されるイベントには、エラーコード、トランザクション識別子、ユーザーアクションなどが含まれます。 

 **期待される成果:** 
+  アプリケーションは、アプリケーションの状態とビジネス成果の達成に関するメトリクスとログを送信します。 
+  ワークロードのすべてのアプリケーションのメトリクスとログは、一元的に保存されます。 

 **一般的なアンチパターン:** 
+  アプリケーションがテレメトリーを送出しない。何か問題が生じたときは、顧客から通知してもらう以外に方法はありません。 
+  お客様から、アプリケーションが応答しないと報告されました。テレメトリーを備えておらず、現在のユーザーエクスペリエンスを理解するために自らアプリケーションを使用することなく、問題が存在することを確認したり、問題の特徴を把握したりできない。 

 **このベストプラクティスを活用するメリット:** 
+  アプリケーションの状態、ユーザーエクスペリエンス、ビジネス成果の達成を理解できます。 
+  アプリケーションの状態の変化にすばやく対応できます。 
+  アプリケーションの状態の傾向を知ることができます。 
+  アプリケーションの改善に関する情報に基づく意思決定を行えます。 
+  アプリケーションの問題をすばやく検知して解決できます。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** 高 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 アプリケーションテレメトリーを 3 つ手順で実装する: テレメトリーを保存する場所の特定、アプリケーションの状態を示すテレメトリーの特定、アプリケーションへのテレメトリー送信機能の追加によって、アプリケーションテレメトリーを実装します。 

 **お客様事例** 

AnyCompany Retail はマイクロサービスベースのアーキテクチャを獲得しました。アーキテクチャ設計プロセスの一環として、この会社は各マイクロサービスの状態を理解するのに役立つアプリケーションテレメトリーを特定しました。例えば、ユーザーのカートサービスは、カートへの追加、カートの削除、アイテムがカートに追加されるまでの時間などのイベントに関するテレメトリーを送信します。すべてのマイクロサービスは、エラー、警告、トランザクション情報を記録します。テレメトリーは Amazon CloudWatch に送信され、保存および分析されます。

 **実装手順** 

1.  1ワークロード内のアプリケーションテレメトリーを一元保存する場所を特定します。この場所は、テレメトリーの収集機能と分析機能の両方をサポートしていなくてはなりません。異常検出と自動インサイトが推奨機能です。 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch) はテレメトリー収集、ダッシュボード、分析、およびイベント生成機能を提供します。 

1.  必要なテレメトリーを特定するには、次の質問から始めます。アプリケーションの状態はどうなっているか? アプリケーションは、この質問に対してまとめて回答を提示するログやテレメトリーを送信する必要があります。既存のアプリケーションテレメトリーを使用してこの質問に答えられない場合、ビジネスおよびエンジニアリングの関係者と協力して、テレメトリー要件の一覧を作成します。 

   1.  新しいアプリケーションテレメトリーの特定と開発に関しては、AWS アカウント チームに技術的なアドバイスを求めることができます。 

1.  新しいアプリケーションテレメトリーを特定できたら、エンジニアリングのステークホルダーと協力して、アプリケーションにテレメトリーの送信機能を追加します。 

   1.  [AWS Distro for Open Telemetry](https://aws-otel.github.io/) は、アプリケーションテレメトリーを収集する API、ライブラリ、エージェントを提供します。[この例は、カスタムメトリクスを使用して JavaScript アプリケーションの状態を計測する方法を示します](https://aws-otel.github.io/docs/getting-started/js-sdk/metric-manual-instr)。 

   1.  bAWS が提供する可観測性サービスを理解するには、[One Observability Workshop](https://catalog.workshops.aws/observability/en-US) を実施するか、担当の AWS アカウントチームにサポートをリクエストしてください。 

   1.  アプリケーションテレメトリーの詳細については、Amazon Builder’s Library の[運用の可視性を高めるために分散システムを装備する](https://aws.amazon.com/builders-library/instrumenting-distributed-systems-for-operational-visibility/)の記事をお読みください。この記事では、Amazon によるアプリケーションの計測方法、およびお客様の計測ガイドラインの開発に Amazon がどのように役立つかを紹介しています。 

 **実装計画に必要な工数レベル:** 高。アプリケーションの計測やテレメトリストレージの一元化には、多大な投資が必要な場合があります。 

## リソース
<a name="resources"></a>

 **関連するベストプラクティス:** 

[OPS04-BP02 ワークロードテレメトリーを実装して設定する](ops_telemetry_workload_telemetry.md) - アプリケーションテレメトリーはワークロードテレメトリーのコンポーネントの 1 つです。ワークロード全体の状態を理解するには、ワークロードを構成する個別のアプリケーションの状態を理解する必要があります。

[OPS04-BP03 ユーザーアクティビティテレメトリーを実装する](ops_telemetry_customer_telemetry.md) - ユーザーアクティビティテレメトリーは、アプリケーションテレメトリーのサブセットになることがあります。カートへの追加イベント、ストリームのクリック、トランザクションの完了などのユーザーアクティビティは、ユーザーエクスペリエンスに関するインサイトを提供します。

[OPS04-BP04 依存関係のテレメトリーを実装する](ops_telemetry_dependency_telemetry.md) - 依存関係チェックはアプリケーションテレメトリーに関連しているため、アプリケーションに追加することができます。アプリケーションが DNS やデータベースなどの外部システムに依存している場合、アプリケーションはアクセス性、タイムアウト、および他のイベントに関するメトリクスとログを送信できます。

[OPS04-BP05 トランザクショントレーサビリティを実装する](ops_telemetry_dist_trace.md) - ワークロード全体のトランザクションを追跡するには、各アプリケーションが共有したイベントをどのように処理したかについての情報を送信する必要があります。各アプリケーションがこれらのイベントを処理した方法は、アプリケーションテレメトリーを介して送信されます。

[OPS08-BP02 ワークロードのメトリクスを定義する](ops_workload_health_design_workload_metrics.md) - ワークロードメトリクスは、ワークロードの状態を示す重要なインジケーターです。主要なアプリケーションメトリクスは、ワークロードメトリクスの一部です。

 **関連するドキュメント:** 
+  [AWS Builders' Library - 運用の可視性を高めるために分散システムを装備する](https://aws.amazon.com/builders-library/instrumenting-distributed-systems-for-operational-visibility/) 
+  [AWS Distro for OpenTelemetry](https://aws-otel.github.io/) 
+  [AWS Well-Architected 運用上の優秀性の柱のホワイトペーパー - Design Telemetry (テレメトリーの設計)](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/design-telemetry.html) 
+  [フィルターを使用したログイベントからのメトリクスの作成](https://docs.aws.amazon.com/Amazon/latest/logs/MonitoringLogData.html) 
+  [Implementing Logging and Monitoring with Amazon CloudWatch](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/welcome.html) (Amazon CloudWatch を使用したログ記録とモニタリングの実装) 
+  [Monitoring application health and performance with AWS Distro for OpenTelemetry](https://aws.amazon.com/blogs/opensource/monitoring-application-health-and-performance-with-aws-distro-for-opentelemetry/) (AWS Distro for OpenTelemetry を使用したアプリケーションの状態とパフォーマンスのモニタリング) 
+  [New – How to better monitor your custom application metrics using Amazon CloudWatch Agent](https://aws.amazon.com/blogs/devops/new-how-to-better-monitor-your-custom-application-metrics-using-amazon-cloudwatch-agent/) (新規 - Amazon CloudWatch エージェントを使用してカスタムアプリケーションメトリクスをより効果的にモニタリングする方法) 
+  [AWS における可観測性](https://aws.amazon.com/products/management-and-governance/use-cases/monitoring-and-observability/) 
+  [シナリオ - CloudWatch へのメトリクスの公開](https://docs.aws.amazon.com/Amazon/latest/monitoring/PublishMetrics.html) 
+  [構築の開始 - アプリケーションを効率的にモニタリングする方法](https://aws.amazon.com/startups/start-building/how-to-monitor-applications/) 
+  [AWS SDK での CloudWatch の使用](https://docs.aws.amazon.com/Amazon/latest/monitoring/sdk-general-information-section.html) 

 **関連動画:** 
+  [AWS re:Invent 2021 - Observability the open-source way](https://www.youtube.com/watch?v=vAnIhIwE5hY) (re:Invent 2021 - オープンソースの可観測性) 
+  [Collect Metrics and Logs from Amazon EC2 instances with the CloudWatch Agent](https://www.youtube.com/watch?v=vAnIhIwE5hY) (CloudWatch エージェントを使用して Amazon EC2 インスタンスからメトリクスとログを収集する) 
+  [How to Easily Setup Application Monitoring for Your AWS Workloads - AWS Online Tech Talks](https://www.youtube.com/watch?v=LKCth30RqnA) (AWS ワークロードのアプリケーションモニタリングを簡単に設定する方法 - AWS オンラインテックトーク) 
+  [Mastering Observability of Your Serverless Applications - AWS Online Tech Talks](https://www.youtube.com/watch?v=CtsiXhiAUq8) (サーバーレスアプリケーションの可観測性をマスターする - AWS オンラインテックトーク) 
+  [Open Source Observability with AWS - AWS Virtual Workshop](https://www.youtube.com/watch?v=vAnIhIwE5hY) (AWS におけるオープンソースの可観測性 - AWS 仮想ワークショップ) 

 **関連する例:** 
+  [AWS のログ記録およびモニタリングの例に関するリソース](https://github.com/aws-samples/logging-monitoring-apg-guide-examples) 
+  [AWS ソリューション: Amazon CloudWatch モニタリングフレームワーク](https://aws.amazon.com/solutions/implementations/amazon-cloudwatch-monitoring-framework/?did=sl_card&trk=sl_card) 
+  [AWS ソリューション: 集中ロギング](https://aws.amazon.com/solutions/implementations/centralized-logging/) 
+  [1 つの可観測性ワークショップ](https://catalog.workshops.aws/observability/en-US) 

 **関連サービス:** 
+ [ Amazon CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)

# OPS04-BP02 ワークロードテレメトリーを実装して設定する
<a name="ops_telemetry_workload_telemetry"></a>

 内部状態や現在のステータスに関する情報 (API 呼び出しのボリューム、HTTP ステータスコード、スケーリングイベントなど) が送出されるよう、ワークロードを設計および設定します。この情報を使用して、応答が必要とされるタイミングを特定します。 

 Amazon CloudWatch などの [サービスを](https://aws.amazon.com/cloudwatch/) を使用して、ワークロードコンポーネントからのログとメトリクスを集計します (例: API ログ、 [AWS CloudTrail](https://aws.amazon.com/cloudtrail/)、 [AWS Lambda メトリクス](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html)、 [Amazon VPC フローログ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)、および [その他のサービス](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/aws-services-sending-logs.html))。 

 **一般的なアンチパターン:** 
+  顧客が、パフォーマンスが低いことについて苦情を申し立てています。アプリケーションに最近の変更はないため、あなたは、ワークロードコンポーネントに問題があると考えています。あなたは、パフォーマンスの低さに影響しているコンポーネントを特定するために分析を行うテレメトリーを備えていません。 
+  あなたは、アプリケーションにアクセスできません。あなたには、ネットワーキングの問題であるかどうかを判断するためのテレメトリーがありません。 

 **このベストプラクティスを確立するメリット:** ワークロード内で何が起こっているかを理解することで、必要に応じて対応できます。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** 高 

## 実装のガイダンス
<a name="implementation-guidance"></a>
+  ログとメトリクステレメトリーを実装する: 内部状態、ステータス、およびビジネス成果の達成に関する情報が送出されるよう、ワークロードを計測します。この情報を使用して、応答が必要とされるタイミングを特定します。 
  +  [Gaining better observability of your VMs with Amazon CloudWatch - AWS Online Tech Talks (Amazon CloudWatch で VM の可観測性を改善する - AWS オンラインテックトーク)](https://youtu.be/1Ck_me4azMw) 
  +  [Amazon CloudWatch の仕組み](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_architecture.html) 
  +  [Amazon CloudWatch とは](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
  +  [Amazon CloudWatch メトリクスを使用する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) 
  +  [Amazon CloudWatch Logs とは](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 
    +  ワークロードテレメトリーを実装して設定する: 内部状態や現在のステータスに関する情報 (API 呼び出しのボリューム、HTTP ステータスコード、スケーリングイベントなど) が送出されるよう、ワークロードを設計および設定します。 
      +  [Amazon CloudWatch metrics and dimensions reference (Amazon CloudWatch のメトリクスとディメンションのリファレンス)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html) 
      +  [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) 
      +  [AWS CloudTrail とは](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 
      +  [VPC フローログ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 

## リソース
<a name="resources"></a>

 **関連するドキュメント:** 
+  [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) 
+  [Amazon CloudWatch ドキュメント](https://docs.aws.amazon.com/cloudwatch/index.html) 
+  [Amazon CloudWatch metrics and dimensions reference (Amazon CloudWatch のメトリクスとディメンションのリファレンス)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html) 
+  [Amazon CloudWatch の仕組み](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_architecture.html) 
+  [Amazon CloudWatch メトリクスを使用する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) 
+  [VPC フローログ](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) 
+  [AWS CloudTrail とは](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 
+  [Amazon CloudWatch Logs とは](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 
+  [Amazon CloudWatch とは](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 

 **関連動画:** 
+  [Application Performance Management on AWS (AWS でのアプリケーションのパフォーマンスメトリクス)](https://www.youtube.com/watch?v=5T4stR-HFas) 
+  [Gaining Better Observability of Your VMs with Amazon CloudWatch (Amazon CloudWatchで VM の可観測性を改善する)](https://youtu.be/1Ck_me4azMw) 
+  [Gaining better observability of your VMs with Amazon CloudWatch - AWS Online Tech Talks (Amazon CloudWatch で VM の可観測性を改善する - AWS オンラインテックトーク)](https://youtu.be/1Ck_me4azMw) 

# OPS04-BP03 ユーザーアクティビティテレメトリーを実装する
<a name="ops_telemetry_customer_telemetry"></a>

ユーザーアクティビティに関する情報が送出されるよう、アプリケーションコードをインストルメント化します。ユーザーアクティビティの例としては、クリックストリームのほか、開始、放棄、完了済みトランザクションなどの情報があります。この情報を使用して、アプリケーションの使用方法や使用パターンを理解したり、応答が必要とされるタイミングを特定したりできます。実際のユーザーアクティビティをキャプチャすることで、模擬アクティビティを構築して本稼働環境のワークロードのモニターやテストに使用できます。

 **期待される成果:** 
+  ワークロードから、すべてのアプリケーションにまたがるユーザーアクティビティに関するテレメトリが送信されます。 
+  模擬ユーザーアクティビティを活用して、オフピーク時のアプリケーションをモニターできます。 

 **一般的なアンチパターン:** 
+ 開発者は、ユーザーのテレメトリーなしで新しい機能をデプロイした。顧客が当該機能を使用しているかどうかが、顧客に問い合わせない限りわからない。
+ フロントエンドアプリケーションのデプロイ後、使用量が増加した。ユーザーアクティビティのテレメトリがないため、正確な問題を特定するのが難しい。
+  オフピーク時にアプリケーションで問題が発生した。模擬ユーザーアクティビティを構成していなかったため、朝になってユーザーがオンラインになるまで問題に気付かなかった。 

 **このベストプラクティスを活用するメリット:** 
+  一般的なユーザーパターンや意図しない動作を理解して、アプリケーションの機能をビジネス目標に合うように最適化できます。 
+  ユーザー視点でアプリケーションをモニターし、リンクの不具合やクリック応答速度の低下など、ユーザーエクスペリエンスに関する問題を検出できます。 
+  影響を受けたユーザーが行った手順を追跡することで、問題の根本原因を特定できます。 
+  模擬ユーザーアクティビティは、オフピーク時のパフォーマンス低下に対して早期に警告サインを出すため、実際のユーザーに影響が出る前に修正アクションを取ることができます。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 ユーザーアクティビティに関する情報が送出されるよう、アプリケーションコードを設計します。この情報を使用して、アプリケーションの使用方法や使用パターンを理解したり、応答が必要とされるタイミングを特定したりできます。模擬ユーザーアクティビティを利用して、アプリケーションのオフピーク時のパフォーマンスに関するインサイトを取得します。 

 **お客様事例** 

 AnyCompany Retail は、アプリケーションの複数のレイヤーにユーザーアクティビティテレメトリを実装しています。フロントエンドテレメトリがマウスの挙動や移動に関するイベントを追跡し、バックエンドのマイクロサービスが、ユーザーの買い物カゴに商品を追加する、会計するなどのイベントを追跡したテレメトリを送信します。これら両方を合わせてユーザーエクスペリエンスに関する可観測性が提供されます。AnyCompany Retail はまた、模擬ユーザーテレメトリを使用して、ワークロードを利用するユーザーが少ないときに問題を捕捉します。 

 **実装手順** 

1.  ユーザーアクティビティに関するテレメトリ (メトリクス、イベント、ログ、トレース) を送信するようにアプリケーションをインストルメント化します。インストルメント化すると、ユーザーがユーザーインターフェイスを操作するたびに、フロントエンドコンポーネントが自動的にテレメトリを送信します。バックエンドアプリケーションは、ユーザーイベントとトランザクションのテレメトリを送信します。 

   1.  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) を使用して、フロントエンドアプリケーションのエンドユーザーエクスペリエンスに関するインサイトを取得できます。 

   1.  [AWS Distro for Open Telemetry](https://aws-otel.github.io/) を使用して、アプリケーションをインストルメント化し、テレメトリをキャプチャできます。 

   1.  [Amazon Pinpoint](https://docs.aws.amazon.com/pinpoint/latest/developerguide/welcome.html) を使用して、キャンペーンを通したユーザーの行動を分析し、ユーザーエンゲージメントに関するインサイトを取得できます。 

   1.  Enterprise Support を利用しているお客様は、テクニカルアカウントマネージャーから、[モニタリング戦略の策定ワークショップ](https://aws.amazon.com/premiumsupport/technology-and-programs/proactive-services/)をリクエストできます。このワークショップは、お客様がワークロードの可観測性戦略を策定するのを支援します。 

1.  模擬ユーザーアクティビティを作成して、アプリケーションをモニターします。模擬ユーザーアクティビティはユーザーアクションをシミュレートし、アプリケーションが正常に動作しているかを検証します。 

   1.  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) は、canary を使用してユーザーアクティビティをシミュレートできます。 

 **実装計画に必要な工数レベル:** 高。アプリケーションを完全にインストルメント化してユーザーアクティビティのテレメトリを収集するには、大規模な開発工数がかかる場合があります。 

## リソース
<a name="resources"></a>

 **関連するベストプラクティス:** 
+  [OPS04-BP01 アプリケーションテレメトリーを実装する](ops_telemetry_application_telemetry.md) - ユーザーアクティビティテレメトリを構築するには、アプリケーションテレメトリが必要です。 
+  [OPS04-BP02 ワークロードテレメトリーを実装して設定する](ops_telemetry_workload_telemetry.md) - 一部のユーザーアクティビティテレメトリは、ワークロードテレメトリとみなされます。 

 **関連するドキュメント:** 
+ [アプリケーションを効率的にモニタリングする方法](https://aws.amazon.com/startups/start-building/how-to-monitor-applications/)

 **関連動画:** 
+ [AWS re:Invent 2020: Monitoring production services at Amazon ](https://www.youtube.com/watch?v=hnPcf_Czbvw)(AWS re:Invent 2020: Amazon における製造サービスのモニタリング)
+ [AWS re:Invent 2021 - Optimize applications through end user insights with Amazon CloudWatch RUM ](https://www.youtube.com/watch?v=NMaeujY9A9Y)(AWS re:Invent 2021 - Amazon CloudWatch RUM を使用してエンドユーザーインサイトを介しアプリケーションを最適化する)
+ [ Testing and Monitoring APIs on AWS - AWS Online Tech Talks ](https://www.youtube.com/watch?v=VQM38CZyjFY)(AWS での API のテストとモニタリング - AWS Online Tech Talks)

 **関連する例:** 
+ [ Amazon CloudWatch RUM Web Client ](https://github.com/aws-observability/aws-rum-web)
+ [AWS Distro for Open Telemetry ](https://aws-otel.github.io/)
+ [ Implementing Real User Monitoring of Amplify Application using Amazon CloudWatch RUM ](https://aws.amazon.com/blogs/mobile/implementing-real-user-monitoring-of-amplify-application-using-amazon-cloudwatch-rum/)(Amazon CloudWatch RUM を使用して実際のユーザーのモニタリングを実装し、アプリケーションを増強する)
+ [1 つの可観測性ワークショップ](https://catalog.workshops.aws/observability/en-US/intro)

 **関連サービス:** 
+ [ Amazon CloudWatch RUM ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html)
+ [ Amazon CloudWatch Synthetics ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html)
+ [ Amazon Pinpoint ](https://docs.aws.amazon.com/pinpoint/latest/developerguide/welcome.html)

# OPS04-BP04 依存関係のテレメトリーを実装する
<a name="ops_telemetry_dependency_telemetry"></a>

ワークロードが依存するリソースのステータスに関する情報が送出されるよう、ワークロードを設計および設定します。これらは、ワークロードの外にあるリソースです。外部依存関係の例としては、外部データベース、DNS、ネットワーク接続などがあります。この情報を使用して、対応が必要な場合を判断したり、ワークロードの状態に関する追加のコンテキストを提供したりします。

 **期待される成果:** 
+  ワークロードは、外部依存のステータスに関するテレメトリを送信します。 
+  依存関係に異常がある場合は通知されます。 

 **一般的なアンチパターン:** 
+ ユーザーがサイトにアクセスできない。DNS の問題であるかどうかを判断するには、手動で DNS プロバイダーが動作しているかどうかを確認する必要がある。
+ ショッピングカートアプリケーションがトランザクションを完了できない。クレジットカード処理プロバイダーの問題であるかどうかを確認するには、そのプロバイダーに連絡する必要がある。

 **このベストプラクティスを活用するメリット:** 
+  外部依存関係をモニタリングすると、問題について高度な通知が提供されます。 
+  依存関係の正常性を認識できると、トラブルシューティングに役立ちます。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** 中 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 関係者と協力して、ワークロードが依存している外部依存関係を特定します。外部依存関係には、外部データベース、API、ワークロードと他の環境にあるリソース間のネットワーク接続性などがあります。モニタリング戦略を策定して、依存関係の正常性を把握し、ステータスが変化するとプロアクティブに警告します。 

 **お客様事例** 

 AnyCompany Retail の E コマースワークロードは、別の環境にあるデータベースに依存しています。毎晩、データがデータベースに入力され、E コマースプラットフォームで使用されます。ネットワーク接続とデータベースのサポートは他のチームが所有しています。E コマースチームは複数の canary アラームを構成し、ネットワーク接続性が低下したり、データベースにアクセスできなかったり、ジョブが完了できなかったりした場合はアラートを発報するようにしました。 

 **実装手順** 

1.  ワークロードが依存している外部依存関係を特定します。依存関係の正常性または到達可能性を追跡するテレメトリを実装します。 

   1.  AWS のお客様は、[AWS Health Dashboard](https://docs.aws.amazon.com/health/latest/ug/what-is-aws-health.html) を使用して AWS のサービスの正常性をモニターし、正常性に関するイベントの通知を受け取ることができます。 

   1.  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) を使用して、API、URL、ウェブサイトコンテンツをモニターできます。 

1.  依存関係に異常があったりアクセスできない場合は組織に通知するアラートをセットアップします。 

   1.  Enterprise Support を利用しているお客様は、テクニカルアカウントマネージャーから、[モニタリング戦略の策定ワークショップ](https://aws.amazon.com/premiumsupport/technology-and-programs/proactive-services/)をリクエストできます。このワークショップは、お客様がワークロードの可観測性戦略を策定するのを支援します。 

1.  依存関係に異常があった場合に備えて、依存関係の連絡先を特定します。依存関係の所有者への連絡方法、サービスアグリーメント、エスカレーションプロセスを文書化します。 

 **実装計画に必要な工数レベル:** 中。依存関係テレメトリの実装には、カスタムモニタリングソリューションの構築が必要になる場合があります。 

## リソース
<a name="resources"></a>

 **関連するベストプラクティス:** 
+  [OPS04-BP01 アプリケーションテレメトリーを実装する](ops_telemetry_application_telemetry.md) - 依存関係モニタリングをアプリケーションテレメトリに構築できます。 

 **関連するドキュメント:** 
+ [ Monitor your private internal endpoints 24x7 using CloudWatch Synthetics ](https://aws.amazon.com/blogs/mt/monitor-your-private-endpoints-using-cloudwatch-synthetics/)(CloudWatch Synthetics を使用して、プライベート内部エンドポイントを 24 時間 365 日モニターする)

 **関連動画:** 
+ [AWS re:Invent 2018: Monitor All Your Things: Amazon CloudWatch in Action with BBC ](https://www.youtube.com/watch?v=uuBuc6OAcVY)(AWS re:Invent 2018: あらゆるものをモニターする: BBC による Amazon CloudWatch の実践)
+ [AWS re:Invent 2022 - Developing an observability strategy ](https://www.youtube.com/watch?v=Ub3ATriFapQ)(AWS re:Invent 2022 - 可観測性戦略の策定)
+ [AWS re:Invent 2022 - Observability best practices at Amazon ](https://www.youtube.com/watch?v=zZPzXEBW4P8)(AWS re:Invent 2022 - Amazon における可観測性のベストプラクティス)

 **関連する例:** 
+ [1 つの可観測性ワークショップ](https://catalog.workshops.aws/observability/en-US/intro)
+ [ Well-Architected Labs - Dependency Monitoring ](https://www.wellarchitectedlabs.com/operational-excellence/100_labs/100_dependency_monitoring/)(Well-Architected ラボ - 依存関係のモニタリング)

 **関連サービス:** 
+  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 
+ [AWS Health](https://docs.aws.amazon.com/health/latest/ug/what-is-aws-health.html)

# OPS04-BP05 トランザクショントレーサビリティを実装する
<a name="ops_telemetry_dist_trace"></a>

アプリケーションコードを実装し、イベントを発行するようにワークロードのコンポーネントを設定します。このイベントは、単一の論理演算の結果としてトリガーされ、ワークロードのさまざまな境界を越えて統合されます。マップを生成して、ワークロードとサービス全体にわたるトレースの流れを確認します。コンポーネント間の関係のインサイトを取得し、問題を特定して分析します。収集した情報を使用して、応答が必要とされるタイミングを特定し、問題につながる要素の特定に役立てます。

 **期待される成果:** 
+  ワークロード全体にわたるトランザクショントレースを収集して、コンポーネント間の関係のインサイトを取得できます。 
+  マップを生成して、ワークロードのトランザクションとイベントの流れをより明確に把握できます。 

 **一般的なアンチパターン:** 
+  あなたは、複数のアカウントにまたがるサーバーレスマイクロサービスアーキテクチャを実装しました。断続的なパフォーマンスの問題が顧客に発生しています。トランザクショントレーサビリティがないので、どの機能またはコンポーネントが原因であるかを検出できません。 
+ ワークロードでパフォーマンスのボトルネックが発生しています。トランザクショントレーサビリティがないため、アプリケーションコンポーネント間の関係を確認してボトルネックを特定することができません。
+  トレースに使用される識別子はグローバルで一意ではないため、ワークロードの動作分析をすると、トレースの競合が発生します。 

 **このベストプラクティスを活用するメリット:** 
+  ワークロード全体のトランザクションフローを理解することで、ワークロードトランザクションの予想される動作についてのインサイトが得られます。 
+  ワークロード全体の予想される動作のバリエーションを理解できるため、必要に応じて対応できます。 
+  トランスアクションを、生成された場所を問わず、一意に生成された識別子によって特定できます。 

 **このベストプラクティスが確立されていない場合のリスクレベル:** 低 

## 実装のガイダンス
<a name="implementation-guidance"></a>

 システムコンポーネント全体のトランザクションフローに関する情報を送出するよう、アプリケーションとワークロードを設計します。トランザクションに含めるべきデータは、グローバルに一意のトランザクション ID、トランザクションステージ、アクティブコンポーネント、アクティビティ完了までの時間です。この情報を使用して、進行中のもの、完了しているもの、および完了したアクティビティの結果を特定できます。 

 **お客様事例** 

 AnyCompany Retail では、すべてのトランザクションでグローバルに一意な UUID が生成されています。この UUID は、トランザクション中にマイクロサービス間で渡されます。UUID は、ユーザーのワークロードとのインタラクション時にトランザクショントレース作成に使用されます。このトレースを使用してワークロードトポロジのマップが生成され、ワークロードの問題のトラブルシューティングとパフォーマンスの向上に使用されます。 

 **実装手順** 

1.  ワークロードのアプリケーションを計測して、トランザクショントレースを発行します。これを実行するには、トランザクションごとに一意の識別子を生成して、アプリケーション間で識別子を渡します。 

   1.  [AWS Distro for OpenTelemetry](https://aws-otel.github.io/) の自動インストルメント化を使用して、アプリケーションコードを変更する必要なく、既存のアプリケーションにトレースを実装できます。 

1.  アプリケーショントポロジのマップを生成します。このマップを使用して、パフォーマンスを向上し、インサイトを取得し、トラブルシューティングに役立てます。 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) でワークロード内のアプリケーションのマップを生成できます。 

 **実装計画に必要な工数レベル:** 中。トランザクショントレースの実装には、中程度の開発作業が必要になる場合があります。 

## リソース
<a name="resources"></a>

 **関連するベストプラクティス:** 
+  [OPS04-BP01 アプリケーションテレメトリーを実装する](ops_telemetry_application_telemetry.md) - アプリケーションテレメトリーはトランザクションのトレーサビリティと処理をカバーしており、最初に実装する必要があります。 

 **関連するドキュメント:** 
+ [ Discover application issues and get notifications with AWS X-Ray Insights ](https://aws.amazon.com/blogs/mt/discover-application-issues-get-notifications-aws-x-ray-insights/)(AWS X-Ray Insights を使用してアプリケーションの問題を検出し、通知を受け取る)
+ [ How Wealthfront utilizes AWS X-Ray to analyze and debug distributed applications ](https://aws.amazon.com/blogs/mt/wealthfront-utilizes-aws-x-ray-analyze-debug-distributed-applications/)(Wealthfront が AWS X-Ray を使用して分散アプリケーションの分析とデバッグを行っている方法)
+ [AWS Distro for OpenTelemetry の新機能 – トレースのサポートが一般的に利用可能に](https://aws.amazon.com/blogs/aws/new-for-aws-distro-for-opentelemetry-tracing-support-is-now-generally-available/)

 **関連動画:** 
+ [AWS re:Invent 2018: Deep Dive into AWS X-Ray: Monitor Modern Applications (DEV324) ](https://www.youtube.com/watch?v=5MQkX57eTh8)(AWS re:Invent 2018: AWS X-Ray Deep Dive: モダンアプリケーションのモニタリング (DEV324))
+ [AWS re:Invent 2022 - Building observable applications with OpenTelemetry (BOA310) ](https://www.youtube.com/watch?v=efk8XFJrW2c)(AWS re:Invent 2022 - OpenTelemetry を使用したオブザーバブルなアプリケーションの構築 (BOA310))
+ [AWS re:Invent 2021 - Observability the open-source way (COP301-R) ](https://www.youtube.com/watch?v=2IJPpdp9xU0)(AWS re:Invent 2021 - オープンソースのオブザーバビリティ)
+ [ Capturing Trace Data with the AWS Distro for OpenTelemetry ](https://www.youtube.com/watch?v=837NtV0McOA)(AWS Distro for OpenTelemetry を使用してトレースデータをキャプチャする)
+ [ Optimize Application Performance with AWS X-Ray](https://www.youtube.com/watch?v=5lIdNrrO_o8)(AWS X-Ray を使用してアプリケーションのパフォーマンスを最適化する)

 **関連する例:** 
+ [AWS X-Ray Multi API Gateway Tracing Example ](https://github.com/aws-samples/aws-xray-multi-api-gateway-tracing-example) (AWS X-Ray の マルチ API ゲートウェイトレースの例)

 **関連サービス:** 
+  [AWS Distro for OpenTelemetry](https://aws-otel.github.io/) 
+  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 