Prometheus とは

Prometheus はオープンソースのモニタリングおよびアラート ツールセットであり、Kubernetes の成長とともに人気が高まっています。もともと SoundCloud で構築された Prometheus は、そのルーツをたどって、Google の Borgmon と呼ばれるモニタリング プロジェクトにさかのぼることができます。

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 プロダクト
  • 100 種類を超えるプロダクトをご用意しています。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。また、すべてのお客様に 25 以上のプロダクトを無料でご利用いただけます(毎月の使用量上限があります)。
Google Cloud