【Next Tokyo ’24】8/1 - 2 パシフィコ横浜にて開催!最新技術やトレンド、顧客事例、専門家によるセッションなど、ビジネス変革を加速させるヒントが満載です。

Prometheus とは

Prometheus はオープンソースのモニタリングとアラートのツールセットで、Kubernetes の普及とともに人気が高まっています。元々 SoundCloud で構築された Prometheus は、そのルーツを Borgmon という Google のモニタリング プロジェクトにまでさかのぼることができます。

Prometheus は、pull ベースのモデルを使用してアプリケーションとインフラストラクチャから指標を収集する主要な提案者です。これは、Prometheus がターゲットにリクエストを定期的に送信し、収集された指標が時系列データベースに保存されることを意味します。セルフマネージド Prometheus インスタンスでは、指標を収集、保存、クエリするためのインフラストラクチャを提供します。Prometheus のマネージド バージョンでは、ベンダーがすべてのインフラストラクチャと、サービスの稼働時間に関するサービスレベル契約(SLA)を提供します。

Prometheus には、時系列データをクエリするための PromQL というクエリ言語が用意されています。Grafana や Alertmanager など、PromQL を活用してデータの可視化、アラートの作成、モニタリング インフラストラクチャのスケーリングなどの分析タスクや運用タスクを行うプロジェクトが多数あります。 

Prometheus の用途とは

Prometheus は、アプリケーションとインフラストラクチャから指標を収集するために使用されます。これらの指標は、システムの状態の追跡、潜在的な問題の特定、問題のトラブルシューティングに使用できます。

Prometheus のメリット

Prometheus を使用する具体的なメリットは次のとおりです。

  • オープン性: Prometheus はオープンソースであり、Cloud Native Computing Foundation(CNCF)の一部であり、無料で使用できます。
  • 信頼性: Prometheus は信頼性が高く、世界の大企業で本番環境での実績が実証されています。
  • コミュニティ サポート: Prometheus には、サポート、ドキュメント、改善を提供する大規模で活発なコミュニティがあります。また、他のツールとの統合も多数用意されており、システムやインフラストラクチャをモニタリングし、データを可視化できます。
  • Kubernetes との連携: Kubernetes の事実上のデフォルトのモニタリング ソリューションであるほとんどのサードパーティ アプリケーションは、すでに Prometheus 指標の測定が組み込まれています。
  • どこでも動作: ほとんどのケースで Kubernetes Deployment が採用されていますが、Prometheus は VM や一部のサーバーレス環境にも使用できます。

Prometheus のコンポーネントは何ですか。

  • Prometheus サーバー: Prometheus モニタリング システムの中心となるコンポーネント。時系列データを格納し、そのデータのクエリとアラート用の HTTP API を公開します。
  • Prometheus エクスポータ: さまざまなシステムから指標を収集して Prometheus に公開するソフトウェア エージェント。
  • Alertmanager: Prometheus からアラートを受信し、アラートを適切な担当者またはシステムに転送するサービス。
  • Prometheus 連携: 複数の Prometheus サーバー間でデータを共有できるようにする機能。
  • Prometheus Pushgateway: サービスをスクレイピングすることなく Prometheus に push できるコンポーネント。この機能は、短期的なジョブに最適です。
  • Prometheus ブラックボックス エクスポータ: HTTP、TCP、DNS の各エンドポイントの可用性のモニタリングに使用できるサービスです。

Prometheus はどのように指標を収集しますか。

Prometheus は pull モデルを使用して指標を収集します。つまり、Prometheus サーバーは指標のモニタリング対象のシステムまたはアプリケーションにポーリングします。これは、他の多くのモニタリング システムで使われている push モデルとは対照的です。push モデルでは、サーバーに指標を定期的に送信するようにアプリケーション コードを変更します。

pull モデルでは、モニタリング対象のシステムやアプリケーションが Prometheus サーバーを認識する必要がないため、アプリケーション コードを変更せずにモニタリング システムに追加できます。pull モデルは必要なときにのみ指標を収集するため、Prometheus は使用されていない指標を収集してリソースを無駄にすることはありません。

さらに、Prometheus は次の方法でデータソースを自動的に検出できます。

  • サービス ディスカバリ: Prometheus では、さまざまなサービス ディスカバリ メカニズムを使用して、指標を公開するサービスを実行しているホストを見つけることができます。たとえば、Prometheus は Kubernetes API を使用して、Prometheus エクスポータを実行している Pod を検出できます。
  • 静的構成: 特定のリソースをスクレイピングするように Prometheus を静的に構成することもできます。これは、他の方法では検出できないリソースに対して有用です。
  • ファイルの検出: Prometheus は、指標を含むファイルを探すことでリソースを検出することもできます。たとえば、Prometheus は collectd や NagiOS によって生成されたファイルを検出できます。

Prometheus は、リソースを検出すると、そのリソースを定期的にスクレイピングして指標を取得します。その後、これらの指標は Prometheus のデータベースに保存され、そこでクエリや可視化を行うことができます。

Prometheus の 4 つの指標タイプは何ですか。

  • カウンタは、増加のみ可能な累積値を追跡します。多くの場合、処理されたリクエスト、エラー、転送されたバイト数などを追跡するために使用されます。
  • ゲージは、増減できる比率を追跡します。一般的には、1 秒あたりのレートを測定します。多くの場合、メモリ使用量、CPU 使用率、ディスク容量などを追跡するために使用されます。
  • ヒストグラムは値の分布を追跡します。多くの場合、リクエストのレイテンシやレスポンス サイズなどを追跡するために使用されます。
  • 要約はヒストグラムと似ていますが、分位も追跡します。これにより、外れ値を特定し、値の全体的な分布を把握しやすくなります。

PromQL とは

PromQL は、Prometheus で収集された指標に対する強力で柔軟なクエリ言語で、アドホックなグラフ、テーブル、アラートの作成に使用できます。

PromQL では、ユーザーがリアルタイムで時系列データを選択して集計できる、実用的なクエリ言語が使用されています。式の結果は、グラフとして表示するか、Prometheus の式ブラウザで表形式データとして表示するか、HTTP API を介して外部システムで使用することができます。

Prometheus と PromQL は次のような用途に使用できます。

  • アプリケーションとインフラストラクチャの健全性のモニタリング: Prometheus は潜在的な問題に関する指標とアラートを収集します。
  • 潜在的な問題の特定: Prometheus は現在の指標を過去のデータと比較し、重大な偏差があればアラートを送信します。
  • 問題のトラブルシューティング: Prometheus では、システムの状態の詳細が表示され、ユーザーは特定の指標やリソースをドリルダウンして問題の根本原因を特定できます。
  • データの可視化: Prometheus は PromQL クエリ言語を使用して時系列データをクエリし、結果をグラフ、テーブル、アラートなどのさまざまな形式で表示します。
  • アラートの作成: Prometheus は PromQL クエリ言語を使用して時系列データをクエリし、結果が特定の条件を満たすと通知を送信します。
  • サードパーティ ツールでの可視化: Grafana や Kiali などの Prometheus Query API を理解するフロントエンドであれば、Prometheus サーバーに対してクエリを実行してデータを表示できます。

PromQL クエリの例

PromQL クエリの例を次に示します。

1 秒あたりの平均 CPU 使用率

特定のアプリケーションの 1 秒あたりの平均 CPU 使用率を取得するには、次のクエリを使用します。

1 秒あたりの CPU 使用率のクエリ

エンドポイント リクエストの数

特定のエンドポイントに対して行われたリクエストの数を取得するには、次のクエリを使用します。

エンドポイント リクエストの数を示す promql クエリ

エンドポイント リクエスト エラーの数

特定のエンドポイントから返されたエラーの合計数を取得するには、次のクエリを使用します。

promql エンドポイント リクエスト エラーのクエリの例

Google Cloud でビジネスの課題を解決する

新規のお客様には、Google Cloud で使用できる無料クレジット $300 分を差し上げます。
お客様独自の課題を詳細に検討するには、Google Cloud のセールス スペシャリストまでご相談ください。
Google Cloud
  • ‪English‬
  • ‪Deutsch‬
  • ‪Español‬
  • ‪Español (Latinoamérica)‬
  • ‪Français‬
  • ‪Indonesia‬
  • ‪Italiano‬
  • ‪Português (Brasil)‬
  • ‪简体中文‬
  • ‪繁體中文‬
  • ‪日本語‬
  • ‪한국어‬
コンソール
Google Cloud