Prometheusの最初の一歩

Prometheusへようこそ!Prometheusは、監視対象ターゲット上のHTTPエンドポイントからメトリクスをスクレイピングすることにより、監視対象ターゲットからメトリクスを収集するモニタリングプラットフォームです。このガイドでは、Prometheusをインストール、設定し、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']

例の設定ファイルには、globalrule_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サーバーによって公開される時系列データをスクレイピングします。ジョブには、静的に設定された単一のターゲットである、ポート9090localhostが含まれています。Prometheusは、/metricsのパスにあるターゲットでメトリクスが利用可能であることを期待します。したがって、このデフォルトのジョブは、URL:http://localhost:9090/metricsを介してスクレイピングしています。

返される時系列データは、Prometheusサーバーの状態とパフォーマンスを詳しく説明します。

構成オプションの完全な仕様については、構成ドキュメントを参照してください。

Prometheusの起動

新しく作成した設定ファイルを使用してPrometheusを開始するには、Prometheusバイナリを含むディレクトリに変更し、次を実行します

./prometheus --config.file=prometheus.yml

Prometheusが起動するはずです。また、http://localhost:9090で自身に関するステータスページを参照することもできます。自身のHTTPメトリクスエンドポイントから自身に関するデータを収集するのに約30秒かかります。

また、自身のメトリクスエンドポイント:http://localhost:9090/metricsに移動することで、Prometheusが自身に関するメトリクスを提供していることを確認できます。

式ブラウザの使用

Prometheusが自身について収集したデータをいくつか見てみましょう。Prometheusの組み込みの式ブラウザを使用するには、http://localhost:9090/graphに移動し、「グラフ」タブ内の「テーブル」ビューを選択します。

http://localhost: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)

式言語の詳細については、式言語ドキュメントを参照してください。

グラフインターフェースの使用

式をグラフ化するには、http://localhost:9090/graphに移動し、「グラフ」タブを使用します。

たとえば、次の式を入力して、自己スクレイピングされたPrometheusで発生している、ステータスコード200を返す1秒あたりのHTTPリクエストレートをグラフ化します

rate(promhttp_metric_handler_requests_total{code="200"}[1m])

グラフ範囲のパラメータやその他の設定を試すことができます。

他のターゲットのモニタリング

Prometheusからのみメトリクスを収集するのは、Prometheusの機能を十分に表現しているとは言えません。Prometheusが何ができるかをよりよく理解するには、他のエクスポーターに関するドキュメントを調べることをお勧めします。Node Exporterを使用したLinuxまたはmacOSホストメトリクスのモニタリングガイドは、始めるのに適した場所です。

まとめ

このガイドでは、Prometheusをインストールし、リソースを監視するようにPrometheusインスタンスを設定し、Prometheusの式ブラウザで時系列データを操作する基本を学びました。Prometheusについて学習を続けるには、次に何を調べるかについてのアイデアについては、概要を確認してください。

このドキュメントはオープンソースです。問題またはプルリクエストを提出して改善にご協力ください。