クイックダウンロード:
オープンソースのAPMツールは、ライセンス費用なしで分散型のトレーシングとモニタリングを提供するが、それぞれ異なる環境やスキルセットに適している。
-
JaegerとZipkinは、Docker経由で迅速にデプロイでき、Kubernetesやマイクロサービスアーキテクチャとうまく統合できる軽量な分散トレーシングツールです。
-
PrometheusはGrafanaと組み合わせることで、Kubernetes上での時系列データの監視と可視化を実現し、CNCFとのネイティブ統合と柔軟なアラート機能を提供します。
-
Elastic APMは、既にElasticsearchを導入しているチーム向けにELKスタックとの高度な統合機能を提供しますが、複数のコンポーネントで構成されるため、構成が複雑になります。
-
本番環境への導入を決定する前に、各ツールを自社の導入環境、チームの専門知識、およびストレージ要件に照らし合わせて評価してください。
オープンソースAPM
このガイドでは、DevOpsチームやネットワーク管理者が本番環境のクラウドアプリケーションを管理するために使用する、人気の高いオープンソースのアプリケーションパフォーマンス監視(APM)ツール5つを紹介します。各ツールについて、機能、性能、コミュニティでの普及状況を検証します。
アプリケーション監視ツール
ウェブサイトやモバイルアプリケーションにとって、システムログは、本番環境におけるネットワークハードウェア上でのソフトウェアの動作状況に関するデータの中心的な情報源です。しかし、ウェブサーバーから自動生成されるシステムログの多くは、粗雑で解析されておらず、読みづらいものです。そこで、IT企業は、ネットワーク分析のために、こうしたデータを履歴グラフでより分かりやすく表示する方法として、アプリケーションパフォーマンス監視(APM)ツールを開発しました。
アプリケーションパフォーマンスモニタリング(APM)とは、本番環境におけるクラウドソフトウェアアプリケーションの動作を検出、追跡、診断するためのプロセスです。APMツールは、ネットワークトポロジーの可視性を高め、開発者向けにユーザーエクスペリエンスに関する指標を改善することで、モニタリングを強化します。APMツールの主な利点の1つは、UXの読み込み速度の低下やコードエラーといった一般的な問題の根本原因を診断できることです。

APMは多くの専門分野を含む広範な分野であるため、共通の特徴を以下の表に示します。

オープンソースのAPMツール
APM市場は十分に発展しており、パブリッククラウドサービスプロバイダー、老舗ITベンダー、革新的なスタートアップ企業から多くのDevOpsツールが提供されています。この5つのオープンソースAPMツールのリストでは、クラウドアプリケーションサポートのために本番環境で一般的に使用されているプロジェクトを、その機能と利点の分析に基づいて検証しています。このレビューでは、以下のツールを選定しました。
- イェーガー
- ジプキン
- Prometheus(ユーザーインターフェースとしてGrafanaを使用)
- エラスティックAPM
- ピンポイント
以下のセクションでは、各ツールを主要機能、システムアーキテクチャ、導入の複雑さ、推奨される使用パターン、およびユーザーインターフェースの観点から比較します。評価は、導入の容易さ、ライセンス費用、および本番環境への対応状況を考慮して行われます。
イェーガー
イェーガー Jaegerは、Uberが2017年に開発したオープンソースのエンドツーエンド分散トレーシングツールです。CNCFのインキュベーションプロジェクトであるJaegerは、複雑な分散システムにおけるトランザクションを監視します。マイクロサービスアーキテクチャに基づくあらゆるクラウドランタイムシステムにとって強力な追加機能であり、現在はKubernetesとOpenStackの両方と統合されるRed HatのOpenShift Service Meshの一部となっています。
チームは、クラウドソフトウェアのエラーのデバッグ、トランザクションの監視、ハードウェアパフォーマンスの最適化のために、本番環境でJaegerを使用しています。
アーキテクチャ
- バックエンド: 行く
- UI: React/Javascript
- StorageCassandra 3.4+、Elasticsearch (5.x、6.x、7.x)、Kafka
- コンポーネントエージェント、コレクター、クエリ、およびインジェスター

主な特徴
- 分散トランザクションの監視 – アプリケーションスタック全体(アプリケーションからデータベースサーバーまで)における各トランザクションを追跡する機能。
- パフォーマンスとレイテンシの最適化 – 実行時にシステム動作を監視し、ボトルネックを特定する機能。
- 根本原因分析 – 問題点を特定するのに役立つクエリやシステムについて詳細な分析を提供します。
- サービス依存性分析 ―システム構成要素がどのように相互接続され、どのように通信しているかを視覚化する能力。
- 分散コンテキスト伝播 リクエスト実行中のさまざまなステップからメタデータを渡すことで、システム内の複数のチェックポイントからのデータを接続する。
展開
Jaegerの主要コンポーネントは、エージェント、コレクター、クエリ、インジェスターです。各コンポーネントは、Jaegerのバックエンドにおいてそれぞれ特定の役割を担っています。Jaegerの4つの主要コンポーネントは、Dockerイメージとしてリリースされたオープンソースコードとして利用可能です。KubernetesおよびOpenShift環境へのデプロイには、GitHubでオーケストレーションが提供されています。
これらのイメージとクラウドオーケストレーションにより、Jaegerの導入は、経験豊富なネットワーク管理者やデータセンターエンジニアにとって比較的容易です。
Jaegerは、以下の簡単なDockerコマンドを実行することで、ローカルホストから簡単にデプロイできます。
一度デプロイされると、Jaeger はブラウザ経由でアクセスできます。 https://:1668
ユーザーインターフェース
Jaegerはシンプルなユーザーインターフェースを備えており、管理者は問題のあるトランザクションを追跡し、階層構造やグラフを通して視覚的にプロファイリングすることができます。

推奨される使用法
Jaegerは比較的簡単に統合でき、ハードウェア処理の要件も軽量です。Jaegerは以下の用途に組み込むことを推奨します。
- Kubernetesのデプロイ
- Istioの導入
- マイクロサービスアーキテクチャ
Jaegerは、クラウドサービスメッシュに新たな次元を追加し、実行中のコードやデータベースクエリに干渉しない抽象化レベルで動作することで、コードエラーの追跡を容易にします。
ジプキン
ジプキン Zipkinは、サービスアーキテクチャにおけるレイテンシのトラブルシューティングを行うための分散トレーシングシステムです。2012年にTwitterによってリリースされました。Zipkinには、開発者がHTTP、Kafka、Apache ActiveMQ、gRPC、またはRabbitMQを介してレポートを作成できる計測ライブラリが含まれています。また、Apache CassandraまたはElasticsearchを使用して、履歴検索やグラフ生成のためのメトリクスデータの永続的な保存オプションも用意されています。
アーキテクチャ
- 言語: Java
- StorageCassandra、Elasticsearch、MySQL
- 4つのコンポーネント: コレクター、ストレージ、検索、Web UI
Zipkinにトレースを送信するには、計測ライブラリを作成する必要があります。一般的なクラウドランタイム環境向けに、さまざまなZipkinライブラリが用意されています。チームは通常、ネットワークイベントデータをKafkaまたはHTTP API経由で送信します。履歴データストレージの要件はプロジェクトによって異なります。

主な特徴
- データの収集と検索 アプリケーションの動作を監視し、可視化する。
- 依存関係図 – 各システム層を通過したリクエスト数を表示する機能。
展開
Zipkinをデプロイする最も簡単な方法は、自己完結型のZipkinサーバー実行可能jarファイルを使用することです。
別の方法として、Dockerイメージを使用し、以下のコマンドで実行することもできます。
Zipkinはデプロイされると、以下の場所で利用可能になります。 https://:9411/zipkin/.
イェーガー/ジプキン比較
JaegerはZipkinをベースに構築されており、基本機能にいくつかの重要な機能を追加しています。Jaegerは現在のCNCFエコシステムにより適合しており、より新しいリリースやツールアップデートが行われています。一方、Zipkinは軽量です。さまざまなプラットフォーム向けのライブラリが複数用意されており、それらを基盤として構築できます。どちらのソリューションも分散トレーシングに重点を置いており、同様の結果が得られます。どちらを選択するかは、クラウドソフトウェアのデプロイメントの詳細によって異なります。
| 言語サポート: | コミュニティ: | コンテナタイプのデプロイメント: | コンテナ化されていないデプロイメント: |
|---|---|---|---|
| イェーガー | より多くの公用語がサポートされています | より柔軟で、拡張性が高く、高性能 | |
| ジプキン | 開発者コミュニティがより大規模で、GitHubの貢献者、スター、サポーターの数も多い。 | より成熟していてシンプルで、複雑な追加機能は不要です。 |
ユーザーインターフェース
Jaegerと同様に、Zipkinはトランザクションを追跡するためのシンプルなUIインターフェースを提供します。また、該当する場合はトレースIDに基づいた高度な検索も可能です。

プロメテウス
プロメテウス Prometheusは2012年にSoundCloudによって開発され、Kubernetesに次ぐCNCFの2番目のホスト型プロジェクトであり、クラウドシステムの監視とアラートの自動化を目的として構築されています。Prometheusはデータを時系列データとして収集・保存し、多様な分析アドオン機能を実現します。
アーキテクチャ
- 言語: 行く
- Storageメモリ内およびローカルディスク上にカスタム形式で保存
- 可視化Grafanaまたはその他のAPIコンシューマー
- コンポーネント: Prometheusストレージ、クライアントライブラリ、プッシュゲートウェイ、エクスポーター、アラートマネージャー

Main Features
- 次元データモデル – メトリック名とキー/ペア値で時系列データを表示する機能。
- 強力なクエリ – PromQLは、システムに次元性を追加するのに役立つクエリ言語です。
- 素晴らしいビジュアル表現 データ分析をより分かりやすく表示するための、多様なグラフィックとダッシュボード。
展開
Prometheusは以下のように展開できます。
- Prometheusのダウンロードページで入手可能な、事前に結合されたライブラリを使用する
- Go、Node.js、npmをインストールし、公式GitHubアカウントで入手可能なmakefileを使用してソースからビルドします。
- サードパーティのコントリビューターが提供するAnsible、Chef、Puppet、SaltStackなどを構成管理ソリューションとして使用する。
- DockerHubで入手可能なイメージから簡単なコマンドでビルドしてDockerを使用する方法:
docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheusインストール後、Prometheusは以下で利用可能です。 https://:9090/.
Grafanaによる可視化
Grafana 2.5.0 が 2015 年にリリースされて以来、Prometheus は Grafana の組み込みデータ視覚化サポートを実装しています。Prometheus を使用して Grafana のデータチャートとグラフを統合するには、インストールしてください。 グラファナ 公式の指示に従う。
インストール後、Grafanaは以下の場所で利用できます。 https://:3000/.
次のステップは、Prometheusをデータソースとして追加し、Prometheusグラフを作成することです。詳細については、PrometheusおよびGrafanaのドキュメントを参照してください。
LogicMonitorがAPM、インフラストラクチャ監視、デジタルエクスペリエンスを単一のプラットフォームに統合する方法をご覧ください。
オープンソースのAPMツールは、トレースとメトリクスのための強力な構成要素を提供します。LogicMonitorは、これらのシグナルをインフラストラクチャおよびデジタルエクスペリエンスのモニタリングと統合することで、根本原因をより迅速に特定します。
よくあるご質問
分散トレーシングとAPMの違いは何ですか?
分散トレーシングは、APMのサブセットであり、複数のサービスを通過するリクエストの追跡に特化しています。APMはより広範で、トレーシングに加えて、メトリクスの収集、ログ分析、アラート、パフォーマンスの可視化なども含まれます。JaegerやZipkinなどのツールは分散トレーシングに特化していますが、Elastic APMやPrometheusはより広範なAPMの範囲をカバーしています。
Kubernetesと最も相性の良いオープンソースのAPMツールはどれですか?
PrometheusはCNCFがホストする2番目のプロジェクトとしてKubernetesとネイティブに統合されており、Grafanaは可視化レイヤーを提供します。これら2つが連携して、データ収集、ダッシュボード、アラートを処理します。JaegerもIstioとOpenShift Service Meshを介した分散トレーシングのためにKubernetesと良好に統合されています。
オープンソースのAPMツールは、エンタープライズ規模の環境に対応できるのか?
オープンソースのAPMツールは大規模な運用にも対応できますが、エンタープライズ環境では、ストレージバックエンド、高可用性構成、運用ノウハウへの追加投資が必要となる場合が少なくありません。Jaegerのようなツールは、スケーラブルなストレージとしてCassandraやElasticsearchをサポートしており、Prometheusはマルチクラスタ構成のためのフェデレーション機能を提供しています。各チームは、これらのツールを大規模に管理する際の運用上の負担が、自社のキャパシティと要件に見合うかどうかを評価する必要があります。
LogicMonitorはAPMと分散トレーシングをどのようにサポートしていますか?
LogicMonitorのLM Envisionプラットフォームには、ハイブリッド環境全体にわたるインフラストラクチャ、クラウド、コンテナ、ログ、アプリケーショントレースを網羅する組み込みのAPM機能が搭載されています。オープンソースのトレースおよびメトリクスツールは強力な基盤を提供しますが、LogicMonitorはこれらのシグナルをインターネットパフォーマンス監視、実際のユーザーエクスペリエンスデータ、インフラストラクチャメトリクスと単一のプラットフォームで統合することで、その基盤をさらに強化します。Edwin AIは、トレース、メトリクス、ログ、デジタルエクスペリエンスデータを相互に関連付けることで、アラートノイズを削減し、根本原因を早期に特定できるため、チームは問題が深刻化する前に対応できます。
分散トレーシングにおいて、JaegerとZipkinのどちらを選ぶべきでしょうか?
どちらのツールも同様の分散トレーシング機能を提供します。Jaegerは公式にサポートするプログラミング言語が多く、より柔軟でスケーラブルなコンテナデプロイメントを提供します。Zipkinは開発者コミュニティが大きく、より成熟しており、シンプルな非コンテナ型デプロイメントオプションを備えています。どちらを選ぶかは、既存の技術スタック、コンテナ戦略、コミュニティサポートの好みによって異なります。




