Heroku テレメトリー
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2025年01月08日(水)
テレメトリーとオブザーバビリティは、アプリケーションの健全性とパフォーマンスを維持するために重要です。Heroku のクラウドネイティブテレメトリーサービスを使用すると、アプリケーションからトレース、メトリクス、ログを簡単に収集し、それを Heroku のテレメトリーアドオンパートナーが提供するアーカイブサービス、オブザーバビリティサービス、アラートサービスに転送できます。
Heroku の次世代に当たる Fir は OpenTelemetry を活用して堅牢なオブザーバビリティ機能を提供し、OpenTelemetry プロトコル (OTLP) をサポートしてテレメトリーシグナルのシームレスなエクスポートを実現します。OpenTelemetry (OTel) は、テレメトリーデータ収集の標準として登場しました。OTel はオープンソースのオブザーバビリティフレームワークです。これは、ソフトウェアのパフォーマンスと動作に関するデータを収集して理解するためのツールキットのようなものです。このデータ (多くの場合テレメトリーデータと呼ばれます) には、メトリクス、ログ、トレースが含まれます。
Heroku テレメトリードレインを使用すると、テレメトリーの送信先を全面的にコントロールできます。この記事では、テレメトリーツールのメリットについて説明します。
この機能は、Fir 世代のアプリとスペースでのみ使用できます。
OpenTelemetry の機能
インストルメンテーション: コードにインストルメンテーションを追加するためのツールを提供し、ソフトウェアの動作に関するデータを取得できるようにします。 生成: 標準化された形式でテレメトリーデータを生成します。 収集: ソフトウェアのさまざまな部分から生成されたテレメトリーデータを収集します。 エクスポート: 収集したデータをバックエンドシステムに送信して分析およびビジュアル化します。
主なメリット
- オープンソースでベンダーを問わない: OTLP はあらゆるオブザーバビリティプラットフォームで採用できるオープンソース標準です。特定のベンダーに限定されないため、お好みのツールやプラットフォームを自由に選択できます。
- 統一基準: テレメトリーデータを収集してエクスポートするための共通プロトコルを提供するため、複雑さを軽減して相互運用性を向上させます。
- オブザーバビリティの向上: ソフトウェアのパフォーマンスに関する詳しいインサイトを取得してボトルネックを特定し、問題をより効果的にトラブルシューティングできるようサポートします。
- 設定の簡素化: 複数のエクスポーターやアダプターの必要性を低減します。
- 統合ログ: OTel との緊密なインテグレーションにより、アプリの標準出力とエラーログが OTLP ログに自動的に変換されます。
基本的に OpenTelemetry はテレメトリーデータを測定して収集するための業界標準になりつつあり、開発者と運用チームがソフトウェアをより的確に理解して管理するのに役立ちます。詳細は、OpenTelemetry の公式 Web サイト (https://opentelemetry.io/) を参照してください。
Heroku は Fir 世代のプラットフォームに OpenTelemetry 標準をネイティブに統合します。OpenTelemetry 統合を提供する多くのベンダーとは異なり、当社はアプリケーションの動作だけでなく、プラットフォーム全体に関する詳細なインサイトを提供します。
緊密なプラットフォーム統合に加えて、既製の OpenTelemetry SDK をより簡単に使用できるようになり、トレース、メトリクス、ログを出力するようアプリケーションを設定するのに必要な定型の設定項目が減少します。
アプリケーションレベルとスペースレベルのテレメトリードレイン
このセクションは概要です。詳細は、「OpenTelemetry の概念と Heroku」を参照してください。
Fir ではアプリケーションレベルまたはスペースレベルでテレメトリードレインを設定できます。いずれかを選択する必要があった従来の Cedar 世代とは異なり、Fir ではさまざまなコンテキストのテレメトリードレインを組み合わせることができます。
この柔軟性により、監査目的でグローバルテレメトリードレインを確立しながら、個々のアプリケーションから異なるオブザーバビリティバックエンドに同時にテレメトリーシグナルを送信できるようになります。
テレメトリードレインは追加式です。2 つのアプリケーションを含む Fir スペースの場合、そのスペースに両方のアプリケーションに適用されるテレメトリードレインを設定できます。それぞれのアプリケーションに個別のテレメトリードレインを設定することもできます。たとえば、次のようになります。
heroku telemetry:add --space my-space https://sample-audit.com
heroku telemetry:add --app my-app1 https://app1-vendor.com
heroku telemetry:add --app my-app2 https://app1-vendor.com
my-app1
からapp1-vendor.com
とsample-audit.com
の両方にテレメトリーデータを送信します。my-app2
からapp2-vendor.com
とsample-audit.com
の両方にテレメトリーデータを送信します。- さらに、スペース内で作成された新しいアプリケーションでは、テレメトリーデータが自動で
sample-audit.com
に送信されます。
テレメトリードレインごとに、サポートされているすべての OpenTelemetry シグナルを送信するように設定することも、どのシグナルをどの宛先に送信するかを指定することもできます。この柔軟性により、ログを 1 つの宛先に、アプリケーションのトレースとメトリクスを別の宛先に簡単に送信できます。
たとえば、インシデントの迅速なデバッグや本番環境のサービスの分析のために、忠実度の高いオブザーバビリティバックエンドが必要になることがあります。通常このようなバックエンドは高価であり、コストを節約するために、このバックエンドでの保持を短期間に制限します。Heroku のテレメトリードレインを使用すると、忠実度の高いオブザーバビリティベンダーにテレメトリーを送信しつつ、同じテレメトリーデータを忠実度の低い長期ストレージベンダーに柔軟に送信できます。
Heroku テレメトリードレインの使用を開始する
Fir 世代のアプリまたはスペースにテレメトリードレインを設定するには、「Heroku テレメトリードレインの使用」を参照してください。OTel とのプラットフォーム統合についての詳細は、「OpenTelemetry の概念と Heroku」を参照してください。