

# 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)