OpenTelemetryやPrometheusなどの可観測性ツールは、クラウドネイティブアプリケーションで最適なパフォーマンスと信頼性を確保するために不可欠です。OpenTelemetryは包括的な テレメトリー データ収集、トレース、ログ、およびシステム全体の可観測性のためのメトリックをサポートし、Prometheus は時系列データの監視と分析に優れています。
PrometheusとOpenTelemetryは併用できますが、それぞれに明確な違いがあります。Prometheusは動的システムや個々のコンポーネントの集中監視に理想的で、OpenTelementryは分散システム全体にわたる統一されたビューを提供します。OpenTelemetryとPrometheusはどちらもデータ収集のオプションを提供していますが、 大幅に異なる 互いに。
OpenTelemetry と Prometheus のこの包括的な概要では、両方のツールの主な機能と特徴、および利点と欠点について説明します。
主要な取り組み
OpenTelemetry (OTel) とは何ですか?
クラウドネイティブアプリケーションにとって、OpenTelemetryは計測の未来です。これは、企業が監視し、 アプリケーションのパフォーマンスを向上させるOpenTelemetry は複数のプログラミング言語とテクノロジーもサポートしています。
主な特徴と機能
OpenTelemetry は、アプリケーション全体のテレメトリ データを収集するだけでなく、それらのアプリケーション向けのサービスとサポート インフラストラクチャも提供します。これは、業界全体で使用されているベンダー中立のテレメトリ標準です。OTel は、クラウド テクノロジー、オーケストレーション エンジン、コンテナーを組み合わせて、デジタル イノベーションの迅速化を促進します。
「クラウドネイティブ アプリケーションにとって、OpenTelemetry は計測の未来であり、企業がアプリケーション パフォーマンスを監視および改善するための重要な第一歩を提供します。」
もちろん、OpenTelemetry は企業に柔軟性を提供し、ベンダー ロックインを減らして相互運用性を高めながら、データ収集方法を標準化できるようにします。 企業が前進するための最善の方法は、顧客のニーズと、顧客がオンライン体験とどのように関わっているかを理解することです。
サポートされているプログラミング言語とテクノロジー
OpenTelemetry のベンダー中立のオープンソース ツール、API、SDK は、Go、Java、Python などの複数のプログラミング言語をサポートしています。これらのツールは連携して、測定対象を指定し、関連データを収集し、情報をクリーンアップして整理し、データを監視バックエンドにエクスポートすることで、測定を実行します。
プロメテウスとは何ですか?
プロメテウスは メトリクス監視ツール 時間の経過とともに変化する時系列データを監視するために使用されます。2012年にSoundCloudで最初に開発されたPrometheusは、オープンソースシステムKubernetesに続いて財団から卒業する予定の2016番目のプロジェクトとしてXNUMX年にCloudNative Computing Foundationに承認されました。
主な特徴と機能
Prometheus は精度よりも信頼性を優先するため、マイクロサービスなどのクラウドベースの動的システムに最適なソリューションです。このシステムは、精度が求められる課金アプリケーションでも機能し、相対的な監視アプリケーションやインフラストラクチャに最適なソリューションとなる可能性があります。
歴史的背景とコミュニティのサポート
SoundCloud はもともと、アラートおよび監視システム用のツールキットとして Prometheus を開発しました。これは無料のオープンソース ソフトウェア アプリケーションなので、ネイティブに統合するのは簡単です。リリース以来、多くの組織や企業が Prometheus を採用しており、このプロジェクトにはアクティブなユーザーおよび開発者コミュニティがあります。
「Prometheus は、精度よりも信頼性を優先するマイクロサービスなどのクラウドベースの動的システムに最適です。」
パフォーマンスとスケーラビリティ
OTel はテレメトリ データ生成の業界標準になりつつあります。分散システムは、その健全性を評価するために可観測性に大きく依存しており、テレメトリ データによって可観測性が実現します。OpenTelemetry を使用すると、企業は複数のベンダーに依存せずにテレメトリ データを生成できます。
OpenTelemetry を使用すると、企業はプロバイダーに関係なくテレメトリ データを収集できます。分散システムは、状態を監視するためにテレメトリ データに大きく依存しています。したがって、マイクロサービスとポリグロット アーキテクチャにはグローバル スタンダードが必要です。現時点では、OTel はこの空白を埋めるのに適した立場にあります。
さらに、OpenTelemetry のコンポーネントは統合オプションを提供するために疎結合されています。主な OpenTelemetry コンポーネントは次のとおりです。
- アプリケーション プログラミング インターフェイス (API): コードを計測し、システム全体にわたってデータ収集を調整します。
- データ仕様: データ仕様は、OpenTelemetry プロトコル (OTLP) と、アプリケーションで使用される関連するセマンティック規則を定義します。
- ソフトウェア開発キット (SDK): ライブラリを使用して、SDK はデータの収集、処理、およびエクスポート用の API を実装およびサポートします。 SDK も、API と同様に言語固有です。
- OpenTelemetry コレクター: オープンソースでも商用でも、幅広いシステムで使用できます。
つまり、OpenTelemetry API、SDK、ライブラリ、統合により、テレメトリ データ (トレース、メトリック、ログ) を収集および管理できます。OpenTelemetry プロジェクトは、OpenCensus と OpenTracing の合併によって作成されました。Cloud Native Computing Foundation (CNCF) も Kubernetes を育成しました。
プロメテウスはどのように構築されていますか?
Prometheus はデータをローカルのディスクに保存するため、データにすばやくアクセスしてクエリを実行できます。また、メトリックをリモートに保存することもできます。Prometheus サーバーはスタンドアロンであり、リモート サービスやネットワーク ストレージに依存しません。
Prometheus モニタリングはどのように機能しますか?
Prometheus では、データは基礎となるプル モデルによって生成される時系列として収集されます。特定の時間間隔で、Prometheus はデータ ソースまたはエクスポーターのリストをクエリします。参照とクエリのために、Prometheus データはメトリックに保存されます。
Prometheus はデータをローカルのディスクに保存するため、すばやくアクセスしてクエリを実行できます。また、メトリックをリモートに保存することもできます。さらに、Prometheus サーバーはスタンドアロンであり、リモート サービスやネットワーク ストレージに依存しません。
多次元データ モデルとして、Prometheus は PromQL* をサポートしています。これは、企業が収集したメトリック データをクエリできるようにする言語です。Prometheus を使用すると、企業は HTTP 経由でモデル データ収集を取得できるだけでなく、基本的な視覚化レイヤーもサポートされ、アラートを処理するアラート マネージャーも提供されます。
PromQL とは何ですか?
Prometheus クエリ言語 (PromQL) は、データの選択と集約のために Prometheus が提供するクエリ言語です。時系列データベースと連携して動作するように正確に調整されており、時間関連のクエリ機能を提供します。
プロメテウスの特徴は?
プロメテウスの主な機能は次のとおりです。
- 分散ストレージに依存しない自律的な専用サーバーノード
- メトリック名とキー/値のペアによって時系列データを識別するデータモデル
- 内部グラフィック表示をサポートする統合ダッシュボード
- ターゲットの検出には静的構成またはサービス検出を選択可能
- 時系列収集のための HTTP 接続経由のプル モデルの使用
- 中間ゲートウェイを介してプッシュされた時系列
- 次元を活用するためのPromQLによる柔軟なクエリ
OTelはどのように機能しますか?
OpenTelemetry は、トレース、メトリック、ログという 3 つの主要なテレメトリ データ形式に対応しています。OTel は、システム内のリクエストを追跡して、パフォーマンスの問題や障害を特定するのに役立ちます。メトリックに関しては、システムはヒストグラム、ゲージ、その他のわかりやすいグラフィカル レポートを通じてプロセスを追跡し、レポートします。最後に、ログ メッセージを分析する最後の方法は、特定のアプリケーションに固有のメッセージを分析することです。
トレース、メトリクス、およびロギングは、ライフサイクル全体にわたってシステムを観察するために常に重要です。 ただし、最新のアプリケーションとリソース層の複雑さにより、すべてのサービスにわたってトレースを実装することは困難です。 たとえば、情報を一貫してサイロ化する必要があるため、あいまいなログ データと組み合わせると、XNUMX つのインシデントを何時間も追跡できます。
OpenTelemetry (および他の類似製品) は、メトリック、トレース、およびログの統合システムを通じてこの問題を修正しようとしています。GitHub は、コミュニティに参加して OpenTelemetry をオープンソース プロジェクトとして影響を与え、改善することに関心のある人向けのプラットフォームを提供しています。テレメトリ データを分析すると、多層エコシステムの作成に役立ちます。その結果、企業はパフォーマンスの問題に効率的に対処できるようになります。
OTelの特徴は何ですか?
OpenTelemetry の主な機能は次のとおりです。
- すべての主要なプログラミングで一貫した形式のテレメトリ データをサポート
- テレメトリデータを複数の形式で選択したバックエンドにエクスポートします
- ログ記録、メトリックの監視、テレメトリデータのトレースが可能
- 多言語およびテクノロジーに依存しない計測をサポート
OpenTelemetryとPrometheusの主な違い
データ収集と指標
- オープンテレメトリ: 統合されたデータ収集、メトリック、トレース、およびログの処理を提供します。
- プロメテウス: 主にメトリックと時系列データに焦点を当てます。
柔軟性と統合
- オープンテレメトリ: ベンダー中立で、高い柔軟性と幅広いエコシステム統合を備えています。
- プロメテウス: 他の CNCF プロジェクトとうまく統合されますが、メトリクス中心です。
可視化と保存
- オープンテレメトリ: 組み込みの視覚化レイヤーがなく、外部ツールに依存しています。
- プロメテウス: 内蔵ストレージによる基本的な視覚化機能が含まれています。
長所と短所
オープンテレメトリ
Advantages
- よりよい性能: 管理し、 テレメトリを効率的に生成します。
- コレクタ: 企業がさまざまな形式でテレメトリ データを受信、処理、エクスポートできるようにします。
- 使いやすい: ビジネスフレンドリーで、バグのトラブルシューティングと修復に関するドキュメントが付属しています。
- 言語サポート: C++、Go、Java、Javascriptをサポート Python 、 もっと。
- ライブラリ: コードベースの変更要件を削減するための自動インストルメント フレームワークとライブラリを提供します。
- 可観測性: 統合ポイントにより、収集されたデータを可観測性プラットフォームに取り込むことができます。
- パートナーと支援者: Google、Microsoft、およびその他の著名なクラウド ベンダーが含まれます。
- 柔軟性: ベンダー中立なので、企業はツールを切り替えることができます。
デメリット
- ストレージの不足: 視覚化レイヤーやバックエンド ストレージは提供されません。
- 貧弱なサポート: サポートとドキュメントの改善の余地あり。
プロメテウス
Advantages
- プルビルド: 積極的に ターゲットを削る メトリックを取得するには、サーバーが HTTP 呼び出しを開始して、エンドポイントからエクスポーターにシステム/アプリ メトリックを取得します。
- コントロール: プルベースのシステムにより、複数のスクラップ構成で柔軟性のあるレート制御が可能になります。異なるターゲットに対する複数のレートにより、より優れたサーバー制御が可能になります。
デメリット
- 限られた使用例: メトリックの監視には最適なツールですが、それ以上のことはできません。
- フルスタック: フルスタックのアプリケーション監視ツールではありません。
- ログ: メトリックのみを追跡するため、ユーザーはログ記録に他のツールに依存する必要があります。
- 静的: 単一のマシン用に設計されており、柔軟性に欠け、水平方向に拡張できません。
- 時間: 貴重な視覚化のためにエクスポーターを効果的に設定するには、労力と時間が必要です。
- トレース: トレースや根本原因分析はサポートされていません。
「OpenTelemetry と Prometheus を組み合わせることで、統合されたデータ収集と堅牢なメトリック監視を組み合わせた強力な可観測性戦略が実現します。」
既存システムとの統合に関するベストプラクティス
OpenTelemetryの統合
これらのプラクティスに従うことで、スムーズで効果的な OTel 統合を実現できます。
- 互換性: OpenTelemetry が既存の監視ツールおよびバックエンドと連携できることを確認します。
- 協調性: 開発チームおよび運用チームと緊密に連携し、観測可能性の目標について合意を確保します。
- 段階的な導入: アプリケーションのクリティカル パスをインストルメント化することから始め、必要に応じて徐々にカバレッジを拡大します。
- カスタム計装: 自動オプションが実行できない場合は、手動計測を使用します。
- バージョン管理: 最新の改善点を活用するために、OpenTelemetry ライブラリを最新の状態に保ってください。
プロメテウスの統合
これらのプラクティスに従うことで、Prometheus を既存のシステムに効果的に統合できます。
- コアサービスから始める: 最も重要なサービスを監視することで、高い可用性とパフォーマンスを確保します。
- エクスポーターを使用する: 公式およびコミュニティのエクスポーターを活用して、データベース、キャッシュ、ハードウェアなどのさまざまなシステムを監視します。
- スクレイピング間隔を調整する: データの重要度と性質に基づいてスクレイプ間隔を調整し、パフォーマンスとリソース使用量のバランスをとります。
- アラート: 問題がユーザーに影響を与える前に通知を受け取るために、Prometheus でアラートしきい値を設定します。
- データ保持: データ保持ポリシーを管理して、ストレージ コストと履歴データの必要性のバランスをとります。
- サービスディスカバリを活用する: サービス検出を使用して、インフラストラクチャの拡張や変更に応じてターゲットを動的に管理します。
- ドキュメント: 追跡されたメトリック、アラート ルール、ダッシュボードの設定など、Prometheus の構成を徹底的に文書化します。
- セキュリティ: 認証アクセスとネットワーク制限を採用して Prometheus インスタンスを保護し、機密メトリックへの不正アクセスを防止します。
OpenTelemetry を設定するための簡単なガイド
このステップバイステップ ガイドでは、Go を使用した OpenTelemetry のセットアップの例を示します。
- Goのインストールを確認する: システムにGoがインストールされていることを確認してください。これは、'移動バージョン' をターミナルに入力します。
- Goプロジェクトを設定する: プロジェクトディレクトリに移動するか、' を使用して新しいプロジェクトディレクトリを作成します。go mod 初期化' を使用して、依存関係を管理する Go モジュールを初期化します。
- 依存関係をインストールする: 走る 'go.opentelemetry.io/otel にアクセスしてください' OpenTelemetry パッケージをインストールします。
- トレーサーを設定する: トレーサー プロバイダーを初期化し、トレースをエクスポートするように構成します。
- 機器コード: トレーサーを使用して、監視するコードの周囲にスパンを作成します。
- アプリケーションを実行します。 Go アプリケーションを実行すると、テレメトリ データが収集され、エクスポートされます。
- データを分析する: 選択したバックエンドを使用してエクスポートされたデータを確認します。
OTelの設定の詳細については、 OpenTelemetry Go ガイド.
Prometheus の設定に関する簡単なガイド
Prometheus を使い始めるのは非常にシンプルで簡単です。これらの手順は、Prometheus のセットアップを開始するのに役立ちます。
- プロメテウスをダウンロード: 最新バージョンを入手するには、 プロメテウスのウェブサイト.
- 抽出して構成する: ファイルを解凍し、フォルダーに移動して、prometheus.yml を編集し、スクレイプ ターゲットを定義します。
- Prometheusを実行する: Prometheusを'で起動します./prometheus –config.file=prometheus.yml'。
- Web UI にアクセスする: ブラウザで http://localhost:9090 を開き、Prometheus ダッシュボードにアクセスします。
- 監視を開始: UI を使用してシステムを照会および監視します。
この Prometheus 入門ガイド Prometheus の設定に関するより詳細な情報を提供します。
OpenTelemetry が重要な理由
テレメトリ データを収集してバックエンド プラットフォームに送信するには、OpenTelemetry が不可欠です。 共通のインストルメンテーション フォーマットにより、すべてのサービスの可視性のギャップが解消されます。 さらに、エンジニアは、バックエンド プラットフォームが変更されるたびに、新しい独自のエージェントをインストールできます。
OpenTelemetry は、製品を連携させるために統合する必要がある商用ソリューションとは異なり、新しいテクノロジーも扱います。アラート、トラブルシューティング、デバッグを簡素化するだけでなく、OTel データは監視にも役立ちます。
テレメトリ データの収集と分析は、システムの動作を理解するために常に使用されてきました。しかし、最近のネットワークの複雑さにより、これはより困難になっています。このような複雑なシステムでは、個々のインシデントの原因を突き止めるのに数時間から数日かかることがあります。
OpenTelemetry は、アプリケーションやサービス全体からのトレース、ログ、メトリックを相関させ、可観測性を向上させるのに役立ちます。また、このオープンソース プロジェクトでは、計測の障害を取り除くことで、APM (アプリケーション パフォーマンス監視) やその他の重要な機能も有効になります。最終的には、サービスの信頼性が向上し、ダウンタイムが短縮され、インシデントの特定と解決が効率化されます。
OpenTelemetry のユースケース
分散トレース
組織は、複雑なマイクロサービス アーキテクチャ全体のリクエストをトレースするために、OpenTelemetry を広く使用しています。これにより、開発者はパフォーマンスのボトルネックを特定し、リクエストのフローを追跡できます。Shopify は、分散システムのトレースに OTel を使用しています。
クラウドネイティブアプリケーションの監視
OpenTelemetry は、クラウド ネイティブ環境全体にわたる統一された可観測性を提供し、さまざまな種類の最新インフラストラクチャ上で実行されているアプリケーションを効果的に監視できるようにします。 グーグル OpenTelemetry をクラウド ネイティブ サービスに統合し、顧客に優れたクラウド監視機能を提供します。
メトリクスとログによる可観測性の強化
OpenTelemetryは、メトリクス、トレース、ログを収集して相関させることで、チームにシステムの包括的なビューを提供し、根本原因の分析を提供します。MicrosoftはOpenTelemetryを採用しています。 Azureサービス クラウド プラットフォーム全体の観測可能性を標準化します。
プロメテウスが重要なのはなぜですか?
Prometheus は、メトリックの監視、アラートの提供、オーケストレーション システムによる変化する状況への対応の自動化などの強力な機能を備えているため、人気があります。アプリケーションやインフラストラクチャに関するメトリック (日付、時刻、説明値などのイベントの簡潔な説明) を収集するだけでなく、Prometheus はパフォーマンスを監視することもできます。Prometheus ソフトウェアは、1 つの事柄について大量のデータを収集するのではなく、多くの事柄について少量のデータのみを収集します。
Prometheusの使用例
インフラ監視
ユーザーは、サーバー、コンテナ、ネットワーク機器を監視し、システムの健全性とパフォーマンスに関するリアルタイム データを提供するために Prometheus を利用しています。Reddit は、大規模なインフラストラクチャの監視、環境の監視、問題の迅速な特定に Prometheus を利用しています。
アプリケーションパフォーマンスモニタリング(APM)
Prometheus は、アプリケーションからメトリックを収集してパフォーマンスを追跡し、接続された環境全体で信頼性の高い操作を保証します。GitLab は、CI/CD パイプラインのパフォーマンスを監視し、アプリケーション サービスを監視するために Prometheus を採用し、高可用性を維持し、アプリケーション パフォーマンスを最適化します。
アラート
Prometheusは以下のようなアラートツールと統合できます。 アラートマネージャー カスタムしきい値に基づいてチームに問題を通知し、インシデントへの迅速な対応を保証します。 SoundCloudがPrometheus の先駆者であるは、そのアラート機能を活用して、ストリーミング サービスのインフラストラクチャの問題を迅速に通知します。
未来は何か
OpenTelemetryの将来
OpenTelemetry は、ログ、メトリック、トレースのサポートの改善を中心に、全般的に機能を強化することに注力する予定です。 OTel は、さまざまなバックエンドとの統合の改善と自動化機能の向上に重点を置く可能性があります。ユーザーは、コミュニティ コラボレーションの進歩、実装を簡素化するための幅広いツールセット、複雑なクラウド エコシステムでの OpenTelemetry の使用を期待できます。 OTel はまた、モバイル環境での監視を強化し、モバイル プラットフォームとのより深い統合をもたらすことも期待しています。
プロメテウスの未来
プロメテウスは ロードマップ これは、プラットフォームに対する開発者の野望を概説したものです。計画には、スケーラビリティの向上、可用性機能の強化、他のクラウドネイティブ システムとのスムーズな統合などが含まれています。Prometheus は、長期ストレージ ソリューションの開発を継続し、サービス検出のサポート強化に努め、クエリ パフォーマンスの向上を目指します。Prometheus コミュニティは、より堅牢な視覚化機能やアラート機能の開発など、ユーザー エクスペリエンスの改善にも注力しています。
まとめ
可観測性のレベルが高い組織では、問題を追跡して解決するのがはるかに簡単になり、より信頼性の高い運用とダウンタイムの減少につながります。OpenTelemetryやPrometheusなどのツールは、組織が可観測性の目標を達成するのに役立ちます。 さまざまな方法Prometheus はクラウドネイティブ エコシステムの一部として豊富なクエリ、メトリック、相互運用性をサポートしますが、OpenTelemetry はメトリック、トレース、メタデータ、ログを収集し、組織の成長に合わせて拡張します。
クラウドネイティブ環境の包括的な監視を可能にし、シームレスに LogicMonitorを統合する OpenTelemetry と Prometheus を使用。今すぐ詳細をご覧ください。
私たちのブログを購読する
このような記事をあなたの受信箱に直接お届けします