Prometheus はオープンソースのモニタリングとアラートのツールセットで、Kubernetes の普及とともに人気が高まっています。元々 SoundCloud で構築された Prometheus は、そのルーツを Borgmon という Google のモニタリング プロジェクトにまでさかのぼることができます。
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 使用率を取得するには、次のクエリを使用します。
特定のエンドポイントに対して行われたリクエストの数を取得するには、次のクエリを使用します。
特定のエンドポイントから返されたエラーの合計数を取得するには、次のクエリを使用します。