Prometheus はオープンソースのモニタリングおよびアラート ツールセットであり、Kubernetes の成長とともに人気が高まっています。もともと SoundCloud で構築された Prometheus は、そのルーツをたどって、Google の Borgmon と呼ばれるモニタリング プロジェクトにさかのぼることができます。
Prometheus は、pull ベースのモデルを使用してアプリケーションとインフラストラクチャから指標を収集することを主な目的としています。つまり、Prometheus は定期的にターゲットにリクエストを送信し、収集された指標は時系列データベースに保存されます。セルフマネージド Prometheus インスタンスでは、お客様が指標を収集、保存、クエリするためのインフラストラクチャを提供します。マネージド バージョンの Prometheus では、ベンダーがすべてのインフラストラクチャと、サービスの稼働時間に関するサービスレベル契約(SLA)を提供します。
Prometheus は、時系列データをクエリするための PromQL と呼ばれるクエリ言語を提供します。Grafana や Alertmanager など、データの可視化、アラートの作成、モニタリング インフラストラクチャのスケーリングなどの分析タスクや運用タスクに PromQL を活用するプロジェクトが多数あります。
Prometheus は、アプリケーションとインフラストラクチャから指標を収集するために使用されます。これらの指標は、システムの状態の追跡、潜在的な問題の特定、問題のトラブルシューティングに使用できます。
Prometheus を使用する具体的なメリットには、次のようなものがあります。
Prometheus は pull モデルを使用して指標を収集します。つまり、Prometheus サーバーは指標をモニタリングする対象であるシステムまたはアプリケーションをポーリングします。他の多くのモニタリング システムで使用されている push モデルとは対照的です。push モデルでは、サーバーに指標を定期的に送信するようにアプリケーション コードを変更します。
pull モデルでは、モニタリング対象のシステムやアプリケーションが Prometheus サーバーを認識する必要がないため、アプリケーション コードを変更することなくモニタリング システムに追加できます。pull モデルは必要なときにのみ指標を収集するため、Prometheus は使用されていない指標を収集してリソースを浪費することはありません。
さらに、Prometheus は次の方法でデータソースを自動的に検出できます。
Prometheus はリソースを検出すると、リソースを定期的にスクレイピングして指標を取得します。その後、指標は Prometheus のデータベースに保存され、そこでクエリや可視化を行うことができます。
PromQL は、Prometheus によって収集された指標に対する強力かつ柔軟なクエリ言語であり、アドホックなグラフ、テーブル、アラートの作成に使用できます。
PromQL は、ユーザーが時系列データをリアルタイムで選択して集計できるようにする関数クエリ言語を使用します。式の結果は、グラフとして表示する、または Prometheus の式ブラウザで表形式データとして表示することができます。または、HTTP API を介して外部システムで使用することもできます。
Prometheus と PromQL は、次のような目的に使用できます。
PromQL クエリの例を次に示します。
特定のアプリケーションの 1 秒あたりの平均 CPU 使用率を取得するには、次のクエリを使用します。
特定のエンドポイントに対して行われたリクエストの数を取得するには、次のクエリを使用します。
特定のエンドポイントから返されたエラーの合計数を取得するには、次のクエリを使用します。