Prometheus を使い始める
Prometheus へようこそ! Prometheus は、監視対象のターゲットからメトリック HTTP エンドポイントをスクレイピングしてメトリックを収集する監視プラットフォームです。このガイドでは、Prometheus をインストール、設定し、最初のリソースを監視する方法を示します。Prometheus をダウンロード、インストール、実行します。また、エクスポーター(ホストやサービス上で時系列データを公開するツール)もダウンロードしてインストールします。最初のエクスポーターは Prometheus 自身であり、メモリ使用量、ガベージコレクションなどに関するさまざまなホストレベルのメトリックを提供します。
Prometheus のダウンロード
お使いのプラットフォームに合った Prometheus の最新リリースをダウンロードし、展開してください。
tar xvfz prometheus-*.tar.gz
cd prometheus-*
Prometheus サーバーは、`prometheus` (Microsoft Windows の場合は `prometheus.exe`) という単一のバイナリです。`--help` フラグを渡すことで、バイナリを実行し、オプションに関するヘルプを表示できます。
./prometheus --help
usage: prometheus [<flags>]
The Prometheus monitoring server
. . .
Prometheus を起動する前に、設定を行います。
Prometheus の設定
Prometheus の設定はYAML形式です。Prometheus のダウンロードには、`prometheus.yml` という名前のサンプル設定ファイルが付属しており、これを開始点として使用できます。
例のファイルからほとんどのコメント(`#` で始まる行)を削除して、より簡潔にしました。
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "first.rules"
# - "second.rules"
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
設定例ファイルには、`global`、`rule_files`、`scrape_configs` の3つの設定ブロックがあります。
`global` ブロックは、Prometheus サーバーのグローバル設定を制御します。ここでは2つのオプションが設定されています。最初の `scrape_interval` は、Prometheus がターゲットをスクレイピングする頻度を制御します。これは個々のターゲットに対して上書きできます。この場合、グローバル設定は15秒ごとにスクレイピングするようになっています。`evaluation_interval` オプションは、Prometheus がルールを評価する頻度を制御します。Prometheus はルールを使用して新しい時系列を作成し、アラートを生成します。
rule_files
ブロックは、Prometheus サーバーがロードするルールの場所を指定します。今のところ、ルールはありません。
最後のブロック scrape_configs
は、Prometheus が監視するリソースを制御します。Prometheus はそれ自身のデータも HTTP エンドポイントとして公開するため、Prometheus は自身の健全性をスクレイピングし、監視することができます。デフォルトの設定では、prometheus
という単一のジョブがあり、Prometheus サーバーによって公開される時系列データをスクレイピングします。このジョブには、ポート 9090
の localhost
という単一の静的に設定されたターゲットが含まれています。Prometheus は、ターゲットの /metrics
パスでメトリックが利用可能であることを期待しています。したがって、このデフォルトジョブは、URL https://:9090/metrics を介してスクレイピングします。
返される時系列データは、Prometheus サーバーの状態とパフォーマンスを詳細に示します。
設定オプションの完全な仕様については、設定ドキュメントを参照してください。
Prometheus の起動
新しく作成した設定ファイルで Prometheus を起動するには、Prometheus バイナリを含むディレクトリに移動して実行します。
./prometheus --config.file=prometheus.yml
Prometheus が起動するはずです。また、https://:9090 で自身のステータスページを参照できるはずです。自身の HTTP メトリックエンドポイントからデータを収集するのに約30秒かかります。
Prometheus が自身のメトリックを提供していることは、自身のメトリックエンドポイント https://:9090/metrics にアクセスすることで確認できます。
式ブラウザの使用
Prometheus が収集したデータの一部を見てみましょう。Prometheus の組み込み式ブラウザを使用するには、https://:9090/graph にアクセスし、「Graph」タブ内で「Table」ビューを選択します。
https://:9090/metrics からわかるように、Prometheus が自身についてエクスポートするメトリックの1つは promhttp_metric_handler_requests_total
(Prometheus サーバーが処理した /metrics
リクエストの総数) と呼ばれます。これを式コンソールに入力してください。
promhttp_metric_handler_requests_total
これにより、メトリック名 `promhttp_metric_handler_requests_total` は同じだが、ラベルが異なる時系列がいくつか返されます(それぞれの最新の値も含まれます)。これらのラベルは、異なるリクエストステータスを表します。
HTTP コード `200` になったリクエストにのみ興味がある場合は、このクエリを使用してその情報を取得できます。
promhttp_metric_handler_requests_total{code="200"}
返された時系列の数を数えるには、次のように記述できます。
count(promhttp_metric_handler_requests_total)
式言語の詳細については、式言語のドキュメントを参照してください。
グラフインターフェースの使用
式をグラフ化するには、https://:9090/graph にアクセスし、「Graph」タブを使用します。
たとえば、以下の式を入力すると、自己スクレイピングされている Prometheus で発生しているステータスコード 200 を返す HTTP リクエストの1秒あたりのレートをグラフ化できます。
rate(promhttp_metric_handler_requests_total{code="200"}[1m])
グラフの範囲パラメータやその他の設定を試すことができます。
他のターゲットの監視
Prometheus からのメトリック収集だけでは、Prometheus の機能が十分に表現されているとは言えません。Prometheus が何ができるかをよりよく理解するために、他のエクスポーターに関するドキュメントを探索することをお勧めします。ノードエクスポーターを使用した Linux または macOS ホストのメトリック監視ガイドは、良い出発点です。
概要
このガイドでは、Prometheus をインストールし、リソースを監視するように Prometheus インスタンスを設定し、Prometheus の式ブラウザで時系列データを操作するいくつかの基本を学びました。Prometheus についてさらに学習するには、次に探索すべきことのアイデアについては、概要を確認してください。