テレメトリーデータの定義

テレメトリーデータは、システムがどのように動作しているかについての基本的なインサイトを提供します。これは、プロアクティブな問題解決や情報に基づく意思決定のために不可欠なものです。ただし、そのためには、生データに頼るだけでは不十分で、リアルタイムのインサイトにアクセスできる必要があります。それこそが、テレメトリーデータの役割です。

テレメトリーは、サーバー、アプリケーション、監視デバイスなどのリモートソースからデータを収集、送信し、分析するプロセスです。このプロセスは、次の各手順から構成されます。

  1. データ収集:センサー、ソフトウェア、その他の監視ツールが、ユーザーの振る舞い、パフォーマンスメトリック、環境条件などのデータを収集します。
  2. データ送信:収集したデータを中央のシステムに送信します。
  3. 分析と監視:受信したデータを処理、分析し、表示することで、監視対象システムのステータス、パフォーマンス、振る舞いに関するインサイトを取得します。

これを達成するには、適切なテレメトリーデータを確保する必要があります。これは、ログ、メトリック、イベントなどを含むすべての生データです。また、システム、アプリケーション、デバイスによって作成されるその他のトレースも含まれます。この生データがなければ、分析や監視が有用で正確なものにはなりません。

テレメトリーデータのタイプ

ログ

ログは、システムまたはアプリケーション内で発生した個別のイベントを記録するテキストレコードのリストです。各レコードは、タイムスタンプを付けられたうえで、デバッグや分析のための詳細情報を提供します。これらはデバッグやトラブルシューティング、コンプライアンスレポート、ユーザーの振る舞いの把握、各種の監査などに不可欠です。

ログには、アプリケーションログ、システムログ、ネットワークログ、アクセスログなどのタイプがあります。そのすべてが貴重なテレメトリーデータであり、何が起こったか、いつ起こったか、誰が(何が)関わっていたかを正確に把握するために使用できます。

トレース

トレースは基本的に、リクエストがシステム内を移動する際に残す一連の痕跡です。これはリクエストがたどった経路の記録であり、複数のサービスにわたる流れと正確なタイミングを示しています。これには、分散アプリケーショントレースや、マイクロサービスアーキテクチャ内のエンドツーエンドのリクエストトレースなどが含まれます。

テレメトリーデータとして、これらのトレースは、パフォーマンスの最適化、システムの依存関係の把握、根本原因の分析、ボトルネックの特定などに役立つ貴重なデータを提供します。

メトリック

メトリックは、システム、ソフトウェア、アプリケーションの実行時にキャプチャされる測定数値です。これらのメトリックにより、パフォーマンスの経時的な定量分析が可能になり、これにはCPU使用状況、リクエストレート、エラーレート、応答時間、メモリー使用状況などが含まれます。

テレメトリーでは、これらのメトリックは、システムの健全性、パフォーマンス、振る舞いなどを可視化するうえで重要な役割を果たします。この可視化を通じて、パフォーマンス監視や異常検知から、キャパシティプランニングやSLAコンプライアンス監視まで、さまざまなツールに対してインサイトを提供できます。

イベント

イベントは、システム内で注意を要する事象の発生や状態変化の記録です。システムやビジネスに影響を与える重要な瞬間や変化を捕捉するものであり、多くの場合は追加のコンテキスト情報を含むという点で、ログとは異なります。これらのイベントには、ログインや購入などのユーザーアクション、システムの状態変化、ビジネス固有のイベントなどが含まれます。

追加のコンテキストデータが含まれるため、イベントは、ビジネスインテリジェンス、システム健全性監視、コンプライアンス監査、自動化のトリガーなどに不可欠です。また、ユーザーがいつ何を行ったかが正確にわかるため、ユーザーの振る舞い分析にも利用できます。

テレメトリーデータの設定および使用方法

手順1:目標の定義

テレメトリーデータの設定での最初の手順は、何を達成しようとするのかを正確に決定することです。テレメトリーデータを収集する具体的な目的を特定する必要があります。たとえば、システムのパフォーマンスの改善、ユーザーエクスペリエンスの強化、セキュリティ脅威の特定などです。そのための良い方法は、テレメトリーの目標を既存のビジネス目標に合わせることです。

次に、どのようなKPI(重要業績評価指標)やメトリックを追跡する必要があるのかを決定します。たとえば、目標がシステムのパフォーマンスの改善であれば、応答時間、エラーレート、リソース使用状況などを追跡します。テレメトリーの目標を決定する際には、プライバシーとコンプライアンスも重要な考慮事項です。関連する規制(CCPA、GDPRなど)を確認し、これらの規制を満たしユーザーのプライバシーが尊重されるようにデータ収集のガイドラインを定義する必要があります。

手順2:ツールの設定

次の手順は、目標を満たすための適切なツールを選択し、設定することです。目標達成に役立つと同時に、既存の技術スタックと簡単に統合できるテレメトリー収集ツールを選択する必要があります。たとえば、アプリケーションパフォーマンス監視(APM)ツールや、ログアグリゲータ、カスタムSDKなどです。

収集メカニズムを実装し、ロギングフレームワークまたは監視エージェントをアプリケーションに統合する必要があります。OpenTelemetryは、そのためのベンダーニュートラルなオプションとして優れています。これには、コードインストルメンテーションの追加や、必要なデータを受け取るための既存のシステムの設定などが含まれます。

収集パラメーターを設定するには、サンプリングレート、キャプチャするイベントのタイプ、ログの詳細レベルなど、データ収集に関する詳細を設定する必要があります。さらに、機密情報を除外するためのデータのフィルタリングや、プライバシー規制に準拠するための匿名化を設定します。

手順3:データの送信

次に、テレメトリーデータを実際に送信する必要があります。まず、データを送信するための送信プロトコルを実装します。これは、Webアプリの場合は HTTPS(またはHTTP)、IoTデバイスの場合はMQTT、またはOpenTelemetry(OTLP)などの専用プロトコルを使用する場合もあります。また、暗号化や認証のメカニズムを使用して、転送が安全に行われるようにする必要があります。

ネットワークの中断を処理し、信頼性を確保するために、ローカルのデータバッファリングやリトライロジックも設定します。また、データ送信の量や頻度を調整して、アプリケーションのパフォーマンスやネットワーク帯域幅への潜在的な影響を最小限に抑える必要があります。

手順4:データの格納

次に、テレメトリーデータを受け取るための最も適切なストレージソリューションを選択する必要があります。データタイプごとに異なるストレージを設定することもできますが、Elasticsearchを使用して分散ストレージアプローチを採用すると、ずっとシンプルになります。その場合、Elasticsearchのクラスター横断検索とレプリケーションを使用して、データメッシュを作成できます。

次に、保持ポリシーを実装して、各タイプのデータをどのくらいの期間格納するかを定義する必要があります。これを決定するには、そのデータに適用される分析要件と規制要件の両方を考慮します。テレメトリーデータの格納に関する決定では、多くの場合、分析パフォーマンスのニーズと格納コストとの間でバランスを取ることが必要になります。

もう1つの考慮事項は、パーティショニングとインデックスです。時間ベースのパーティショニングとインデックスなどを使用して、クエリのパフォーマンスが最適化されるようストレージを編成します。また、データの損失を防ぎ、テレメトリーデータへの継続的なアクセスを確保するために、バックアップと災害復旧も準備しておく必要があります。

手順5:テレメトリーデータの分析

最後に、テレメトリーデータを分析し、可視化する必要があります。これには、主要なメトリックやトレンドを表示するためのダッシュボードとビジュアライゼーションの開発が含まれます。また、アラートシステムを実装して、メトリックが定義済みの閾値を超えたり、異常が検出されたりしたときに通知されるようにします。

テレメトリーデータを最大限に活用するために、統計分析や機械学習などの高度な分析を設定して、パターンの特定や将来のトレンドの予測を向上させます。これは特に、異なるデータタイプからのインサイトを組み合わせて、システムのアクティビティやユーザーの振る舞いを包括的に把握する場合に役立ちます。

テレメトリーデータのメリット

データを使用した効果的なテレメトリープロセスを構築することで得られる主なメリットをいくつか示します。

  • リアルタイムの可視性:重要なメトリックやログを追跡し、分析することで、何がうまくいっていて、どこに改善の余地があるのかに関するインサイトが即座に得られます。
  • プロアクティブな問題検出と解決:テレメトリーデータにより、潜在的な問題を示している可能性のある異常やパターンを、問題が進行する前に特定できます。
  • 運用効率の向上:自動化された監視とデータ収集を実装することで、ワークフローを合理化し、生産性を高めることができます。
  • トラブルシューティングの迅速化:詳細なテレメトリーデータにより、問題の根本原因をすばやく特定して、平均復旧時間(MTTR)を短縮できます
  • 意思決定の向上:必要なデータをすべて入手できることで、データ主導の意思決定を行い、リソース割り当て、製品開発、UX改善などに関して、情報に基づく戦略的な選択ができるようになります。

テレメトリーデータからすべてのメリットを得るためには、一元化されたデータプラットフォームを使用してテレメトリーデータを統合することが重要です。それにより、さまざまなソースからのデータを1か所にまとめ、アプリの切り替えを減らすことができます。

この統合は、上記のメリットを提供するだけでなく、スケーラビリティと費用対効果を高めながら、データ処理の全体を通して一貫性を確保するために役立ちます。OpenTelementry Semantic Conventions(Otel SemConv)のようなオープンスタンダードは、そのためにも重要です。それらは、異なるツールやプラットフォーム間での相互運用性を保証します。

テレメトリーデータに関する課題

他のあらゆるテクノロジーと同様に、テレメトリーデータの使用にはメリットとともに課題もあります。これらの課題を克服するためには、各課題について理解し、どのように対処するかの計画を立てる必要があります。

  • データのセキュリティとプライバシー:ユーザーやお客様のデータについては、安全性とプライバシーが非常に重要です。これらは当然の要件であると同時に、企業の評判や規制に関連して大きな影響を及ぼす可能性があります。それに対処するために、暗号化、アクセス制御、包括的なロギングなどの堅牢なセキュリティ対策を実装する必要があります。また、機密情報を保護し、データアクセスに対して厳密な制御を維持する必要があります。
  • レガシーソフトウェアとの統合:柔軟なデータインジェストを実装することで、さまざまなデータ形式やデータソースに対応できるようにする必要があります。それにより、最新システムと従来のシステムの両方からのテレメトリーデータを、一元化されたプラットフォームに取り込めるようになります。
  • 費用対効果に優れたストレージ:階層化されたストレージオプションや情報ライフサイクル管理(ILM)ポリシーを使用すると、データのアクセス性を確保しながらストレージのコストを最適化できます。Hot-Warm-Coldアーキテクチャも、パフォーマンスと費用対効果のバランスを取るために役立ちます。
  • オープンスタンダードのサポート:相互運用性を確保するために、OpenTelemetryなどのオープンスタンダードをできるだけ早い段階から使用します。それにより、テレメトリーのインフラストラクチャーの将来性が担保され、他のツールやプラットフォームと簡単に統合できるようになります。

OpenTelemetryとElastic

このガイドの前半でも触れたOpenTelemetryは、データの収集を一元化し、テレメトリーデータの形式を標準化する、オープンソースのオブザーバビリティフレームワークです。また、テレメトリーに対するベンダーニュートラルなアプローチとしてロックインの回避に役立つほか、大容量データの処理に対して高い拡張性を備えています。

これはElasticでのオープンスタンダードへの取り組みと非常によく適合しているため、ElasticではOpenTelemetryに対して、オープンソース仕様であるElastic Common Schema(ECS)を提供しています。

また、幅広いオブザーバビリティ機能の一環として、OTel形式のデータをElasticsearchにシームレスにインジェストできるようにしています。それにより、OTelデータに対してElasticsearchの高度な分析や検索を使用でき、オブザーバビリティプラットフォームの将来性が担保されます。

このElasticとOpenTelemetryの組み合わせにより、直面する可能性のある多くの主要な課題に対処できます。

  • 異種混合のデータソースの統合
  • データのセキュリティとプライバシーの確保
  • レガシーソフトウェアとの統合の管理
  • ストレージコストの最適化
  • 多様なデータタイプの処理
  • 相互運用性のためのオープンスタンダードのサポート