Ubuntu16.04にPrometheusをインストールする方法

提供:Dev Guides
移動先:案内検索

序章

Prometheus は、サービスからメトリックを収集して時系列データベースに保存する、強力なオープンソースの監視システムです。 多次元データモデル、柔軟なクエリ言語、Grafanaなどのツールによる多様な視覚化の可能性を提供します。

デフォルトでは、Prometheusはそれ自体に関するメトリックのみをエクスポートします(例: 受信したリクエストの数、メモリ消費量など)。 ただし、追加のメトリックを生成するオプションのプログラムである exporters をインストールすることにより、Prometheusを大幅に拡張できます。

プロメテウスチームが維持している公式のものとコミュニティが提供しているものの両方のエクスポーターは、インフラストラクチャ、データベース、Webサーバーからメッセージングシステム、APIなどすべてに関する情報を提供します。

最も人気のある選択肢のいくつかは次のとおりです。

  • node_exporter -これにより、現在のCPU、メモリ、ディスクの使用状況、I / O、ディスクから読み取られたバイト数やサーバーの平均負荷などのネットワーク統計など、インフラストラクチャに関するメトリックが生成されます。
  • blackbox_exporter -これは、エンドポイントの可用性、応答時間などを決定するために、HTTPやHTTPSなどのプロービングプロトコルから派生したメトリックを生成します。
  • mysqld_exporter -これは、実行されたクエリの数、平均クエリ応答時間、クラスターレプリケーションステータスなど、MySQLサーバーに関連するメトリックを収集します。
  • javbitmq_exporter -これは、 RabbitMQ メッセージングシステムに関するメトリックを出力します。これには、公開されたメッセージの数、配信の準備ができているメッセージの数、キュー内のすべてのメッセージのサイズが含まれます。
  • nginx-vts-exporter -これは、 Nginx VTSモジュールを使用するNginxWebサーバーに関するメトリックを提供します。これには、開いている接続の数、送信された応答の数(応答コードでグループ化)が含まれます。 、および送信または受信したリクエストの合計サイズ(バイト単位)。

PrometheusのWebサイトで、公式およびコミュニティが提供するエクスポーターのより完全なリストを見つけることができます。

このチュートリアルでは、PrometheusとNode Exporterをインストール、構成、および保護して、サーバーのパフォーマンスの監視を容易にするメトリックを生成します。

前提条件

このチュートリアルを実行する前に、次のことを確認してください。

ステップ1—サービスユーザーの作成

セキュリティ上の理由から、prometheusnode_exporterの2つの新しいユーザーアカウントを作成することから始めます。 チュートリアル全体でこれらのアカウントを使用して、Prometheusのコアファイルとディレクトリの所有権を分離します。

これらの2人のユーザーを作成し、--no-create-homeおよび--shell /bin/falseオプションを使用して、これらのユーザーがサーバーにログインできないようにします。

sudo useradd --no-create-home --shell /bin/false prometheus
sudo useradd --no-create-home --shell /bin/false node_exporter

Prometheusバイナリをダウンロードする前に、Prometheusのファイルとデータを保存するために必要なディレクトリを作成します。 標準のLinux規則に従って、Prometheusの構成ファイル用に/etcにディレクトリを作成し、そのデータ用に/var/libにディレクトリを作成します。

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus

次に、新しいディレクトリのユーザーとグループの所有権をprometheusユーザーに設定します。

sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus

ユーザーとディレクトリが整ったら、Prometheusをダウンロードして、Prometheusを初めて実行するための最小限の構成ファイルを作成できます。

ステップ2—Prometheusをダウンロードする

まず、Prometheusの現在の安定バージョンをホームディレクトリにダウンロードして解凍します。 最新のバイナリとそのチェックサムは、Prometheusダウンロードページで見つけることができます。

cd ~
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz

次に、sha256sumコマンドを使用して、ダウンロードしたファイルのチェックサムを生成します。

sha256sum prometheus-2.0.0.linux-amd64.tar.gz

このコマンドの出力をPrometheusダウンロードページのチェックサムと比較して、ファイルが本物であり、破損していないことを確認します。

Outpute12917b25b32980daee0e9cf879d9ec197e2893924bd1574604eb0f550034d46  prometheus-2.0.0.linux-amd64.tar.gz

チェックサムが一致しない場合は、ダウンロードしたファイルを削除し、前の手順を繰り返してファイルを再ダウンロードします。

次に、ダウンロードしたアーカイブを解凍します。

tar xvf prometheus-2.0.0.linux-amd64.tar.gz

これにより、2つのバイナリファイル(prometheusおよびpromtool)を含むprometheus-2.0.0.linux-amd64というディレクトリ、Webインターフェイスを含むconsolesおよびconsole_librariesディレクトリが作成されます。ファイル、ライセンス、通知、およびいくつかのサンプルファイル。

2つのバイナリを/usr/local/binディレクトリにコピーします。

sudo cp prometheus-2.0.0.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.0.0.linux-amd64/promtool /usr/local/bin/

バイナリのユーザーとグループの所有権を、手順1で作成したprometheusユーザーに設定します。

sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool

consolesおよびconsole_librariesディレクトリを/etc/prometheusにコピーします。

sudo cp -r prometheus-2.0.0.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.0.0.linux-amd64/console_libraries /etc/prometheus

ディレクトリのユーザーとグループの所有権をprometheusユーザーに設定します。 -Rフラグを使用すると、ディレクトリ内のファイルにも所有権が設定されます。

sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

最後に、残ったファイルは不要になったため、ホームディレクトリから削除します。

rm -rf prometheus-2.0.0.linux-amd64.tar.gz prometheus-2.0.0.linux-amd64

Prometheusがインストールされたので、最初の実行の準備として、構成ファイルとサービスファイルを作成します。

ステップ3—Prometheusを構成する

/etc/prometheusディレクトリで、nanoまたはお気に入りのテキストエディタを使用して、prometheus.ymlという名前の構成ファイルを作成します。 今のところ、このファイルには、Prometheusを初めて実行するのに十分な情報が含まれています。

sudo nano /etc/prometheus/prometheus.yml

警告:Prometheusの構成ファイルはYAML形式を使用します。これはタブを厳密に禁止し、インデントに2つのスペースを必要とします。 構成ファイルの形式が正しくないと、Prometheusの起動に失敗します。


global設定で、メトリックをスクレイピングするためのデフォルトの間隔を定義します。 個々のエクスポーター自身の設定がグローバルをオーバーライドしない限り、Prometheusはこれらの設定をすべてのエクスポーターに適用することに注意してください。

Prometheus設定ファイルパート1-/etc/prometheus/prometheus.yml

global:
  scrape_interval: 15s

このscrape_interval値は、Prometheusに15秒ごとにエクスポーターからメトリックを収集するように指示します。これは、ほとんどのエクスポーターにとって十分な長さです。

次に、次のscrape_configsディレクティブを使用して、Prometheus自体をエクスポーターのリストに追加してスクレイプします。

Prometheus設定ファイルパート2-/etc/prometheus/prometheus.yml

...
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

Prometheusはjob_nameを使用して、クエリやグラフでエクスポーターにラベルを付けます。そのため、ここで説明的なものを選択してください。

また、Prometheusは、パフォーマンスの監視とデバッグに使用できる自身に関する重要なデータをエクスポートするため、グローバルscrape_intervalディレクティブを15秒から5秒にオーバーライドして、より頻繁に更新します。

最後に、Prometheusはstatic_configsおよびtargetsディレクティブを使用して、エクスポーターが実行されている場所を判別します。 この特定のエクスポーターはPrometheus自体と同じサーバーで実行されているため、デフォルトのポート9090とともに、IPアドレスの代わりにlocalhostを使用できます。

構成ファイルは次のようになります。

Prometheus設定ファイル-/etc/prometheus/prometheus.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

ファイルを保存して、テキストエディタを終了します。

次に、構成ファイルのユーザーとグループの所有権を、手順1で作成したprometheusユーザーに設定します。

sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml

構成が完了したら、Prometheusを初めて実行してテストする準備が整いました。

ステップ4—Prometheusを実行する

prometheus ユーザーとしてPrometheusを起動し、構成ファイルとデータディレクトリの両方へのパスを指定します。

sudo -u prometheus /usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

出力には、Prometheusの読み込みの進行状況、構成ファイル、および関連サービスに関する情報が含まれています。 また、Prometheusがポート9090でリッスンしていることも確認します。

Outputlevel=info ts=2017-11-17T18:37:27.474530094Z caller=main.go:215 msg="Starting Prometheus" version="(version=2.0.0, branch=HEAD, re
vision=0a74f98628a0463dddc90528220c94de5032d1a0)"
level=info ts=2017-11-17T18:37:27.474758404Z caller=main.go:216 build_context="(go=go1.9.2, user=root@615b82cb36b6, date=20171108-
07:11:59)"
level=info ts=2017-11-17T18:37:27.474883982Z caller=main.go:217 host_details="(Linux 4.4.0-98-generic #121-Ubuntu SMP Tue Oct 10 1
4:24:03 UTC 2017 x86_64 prometheus-update (none))"
level=info ts=2017-11-17T18:37:27.483661837Z caller=web.go:380 component=web msg="Start listening for connections" address=0.0.0.0
:9090
level=info ts=2017-11-17T18:37:27.489730138Z caller=main.go:314 msg="Starting TSDB"
level=info ts=2017-11-17T18:37:27.516050288Z caller=targetmanager.go:71 component="target manager" msg="Starting target manager...
"
level=info ts=2017-11-17T18:37:27.537629169Z caller=main.go:326 msg="TSDB started"
level=info ts=2017-11-17T18:37:27.537896721Z caller=main.go:394 msg="Loading configuration file" filename=/etc/prometheus/promethe
us.yml
level=info ts=2017-11-17T18:37:27.53890004Z caller=main.go:371 msg="Server is ready to receive requests."

エラーメッセージが表示された場合は、構成ファイルでYAML構文を使用していることを再確認してから、画面の指示に従って問題を解決してください。

次に、CTRL+Cを押してPrometheusを停止し、新しいsystemdサービスファイルを開きます。

sudo nano /etc/systemd/system/prometheus.service

サービスファイルは、systemdに、 prometheus ユーザーとしてPrometheusを実行し、構成ファイルを/etc/prometheus/prometheus.ymlディレクトリに配置し、そのデータを/var/lib/prometheusに保存するように指示します。 ]ディレクトリ。 (systemdサービスファイルの詳細はこのチュートリアルの範囲を超えていますが、 Systemdユニットとユニットファイルについてで詳細を学ぶことができます。)

次のコンテンツをファイルにコピーします。

Prometheusサービスファイル-/etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

最後に、ファイルを保存してテキストエディタを閉じます。

新しく作成したサービスを使用するには、systemdをリロードします。

sudo systemctl daemon-reload

これで、次のコマンドを使用してPrometheusを起動できます。

sudo systemctl start prometheus

Prometheusが実行されていることを確認するには、サービスのステータスを確認してください。

sudo systemctl status prometheus

出力には、Prometheusのステータス、メインプロセス識別子(PID)、メモリ使用量などが表示されます。

サービスのステータスがactiveでない場合は、チュートリアルを続行する前に、画面の指示に従い、前の手順をたどって問題を解決してください。

Output● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-21 11:40:40 UTC; 3s ago
 Main PID: 2104 (prometheus)
    Tasks: 7
   Memory: 13.8M
      CPU: 470ms
   CGroup: /system.slice/prometheus.service
...

先に進む準備ができたら、Qを押してstatusコマンドを終了します。

最後に、起動時にサービスを開始できるようにします。

sudo systemctl enable prometheus

Prometheusが稼働しているので、追加のエクスポーターをインストールして、サーバーのリソースに関するメトリックを生成できます。

ステップ5—ノードエクスポーターのダウンロード

Prometheusをそれ自体に関するメトリックを超えて拡張するために、NodeExporterと呼ばれる追加のエクスポーターをインストールします。 Node Exporterは、CPU、ディスク、メモリ使用量など、システムに関する詳細情報を提供します。

まず、NodeExporterの現在の安定バージョンをホームディレクトリにダウンロードします。 最新のバイナリとそのチェックサムは、Prometheusのダウンロードページで見つけることができます。

cd ~
curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.15.1/node_exporter-0.15.1.linux-amd64.tar.gz

sha256sumコマンドを使用して、ダウンロードしたファイルのチェックサムを生成します。

sha256sum node_exporter-0.15.1.linux-amd64.tar.gz

チェックサムをダウンロードページのチェックサムと比較して、ダウンロードしたファイルの整合性を確認します。

Output7ffb3773abb71dd2b2119c5f6a7a0dbca0cff34b24b2ced9e01d9897df61a127  node_exporter-0.15.1.linux-amd64.tar.gz

チェックサムが一致しない場合は、ダウンロードしたファイルを削除して、前の手順を繰り返します。

次に、ダウンロードしたアーカイブを解凍します。

tar xvf node_exporter-0.15.1.linux-amd64.tar.gz

これにより、[X37X] という名前のバイナリファイル、ライセンス、および通知を含むnode_exporter-0.15.1.linux-amd64というディレクトリが作成されます。

バイナリを/usr/local/binディレクトリにコピーし、ユーザーとグループの所有権を手順1で作成したnode_exporterユーザーに設定します。

sudo cp node_exporter-0.15.1.linux-amd64/node_exporter /usr/local/bin
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

最後に、残ったファイルは不要になったため、ホームディレクトリから削除します。

rm -rf node_exporter-0.15.1.linux-amd64.tar.gz node_exporter-0.15.1.linux-amd64

Node Exporterをインストールしたので、起動時に起動するようにサービスファイルを作成する前に、NodeExporterを実行してテストしてみましょう。

ステップ6—NodeExporterを実行する

Node Exporterを実行する手順は、Prometheus自体を実行する手順と同様です。 NodeExporterのSystemdサービスファイルを作成することから始めます。

sudo nano /etc/systemd/system/node_exporter.service

このサービスファイルは、デフォルトのコレクターセットを有効にしてnode_exporterユーザーとしてNodeExporterを実行するようにシステムに指示します。

次のコンテンツをサービスファイルにコピーします。

ノードエクスポーターサービスファイル-/etc/systemd/system/node_exporter.service

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

コレクターは、NodeExporterが生成するメトリックを定義します。 Node Exporter READMEファイルで、Node Exporterのコレクターの完全なリスト(デフォルトで有効になっているものと非推奨になっているものを含む)を確認できます。

コレクターのデフォルトリストをオーバーライドする必要がある場合は、次のように--collectors.enabledフラグを使用できます。

ノードエクスポーターサービスファイル部分-/etc/systemd/system/node_exporter.service

...
ExecStart=/usr/local/bin/node_exporter --collectors.enabled meminfo,loadavg,filesystem
...

上記の例では、meminfoloadavg、およびfilesystemコレクターのみを使用してメトリックを生成するようにNodeExporterに指示します。 コレクターは必要な数または多数に制限できますが、コンマの前後に空白スペースがないことに注意してください。

ファイルを保存して、テキストエディタを閉じます。

最後に、systemdをリロードして、新しく作成されたサービスを使用します。

sudo systemctl daemon-reload

これで、次のコマンドを使用してNodeExporterを実行できます。

sudo systemctl start node_exporter

statusコマンドを使用して、NodeExporterが正しく実行されていることを確認します。

sudo systemctl status node_exporter

以前と同様に、この出力はノードエクスポータのステータス、メインプロセス識別子(PID)、メモリ使用量などを示します。

サービスのステータスがactiveでない場合は、画面に表示されるメッセージに従い、前の手順をたどって問題を解決してから続行してください。

Output● node_exporter.service - Node Exporter
   Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-21 11:44:46 UTC; 5s ago
 Main PID: 2161 (node_exporter)
    Tasks: 3
   Memory: 1.4M
      CPU: 11ms
   CGroup: /system.slice/node_exporter.service

最後に、NodeExporterを起動時に開始できるようにします。

sudo systemctl enable node_exporter

Node Exporterが完全に構成され、期待どおりに実行されたら、Prometheusに新しいメトリックのスクレイピングを開始するように指示します。

ステップ7—ノードエクスポーターをスクレイプするためのPrometheusの構成

Prometheusは、構成ファイルのscrape_configs部分で定義されているエクスポーターのみをスクレイプするため、Prometheus自体の場合と同様に、NodeExporterのエントリを追加する必要があります。

構成ファイルを開きます。

sudo nano /etc/prometheus/prometheus.yml

scrape_configsブロックの最後に、node_exporterという新しいエントリを追加します。

Prometheus設定ファイルパート1-/etc/prometheus/prometheus.yml

...
  - job_name: 'node_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9100']

このエクスポーターはPrometheus自体と同じサーバー上でも実行されているため、ノードエクスポーターのデフォルトポート9100とともに、IPアドレスの代わりにlocalhostを再度使用できます。

構成ファイル全体は次のようになります。

Prometheus設定ファイル-/etc/prometheus/prometheus.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9100']       

続行する準備ができたら、ファイルを保存してテキストエディタを終了します。

最後に、Prometheusを再起動して、変更を有効にします。

sudo systemctl restart prometheus

もう一度、statusコマンドを使用して、すべてが正しく実行されていることを確認します。

sudo systemctl status prometheus

サービスのステータスがactiveに設定されていない場合は、画面の指示に従い、前の手順をたどってから次に進んでください。

Output● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-21 11:46:39 UTC; 6s ago
 Main PID: 2219 (prometheus)
    Tasks: 6
   Memory: 19.9M
      CPU: 433ms
   CGroup: /system.slice/prometheus.service

これで、PrometheusとNode Exporterがインストール、構成、および実行されました。 Webインターフェイスに接続する前の最後の予防策として、基本HTTP認証を使用してインストールのセキュリティを強化し、許可されていないユーザーがメトリックにアクセスできないようにします。

ステップ8—プロメテウスの保護

Prometheusには、組み込みの認証やその他の汎用セキュリティメカニズムは含まれていません。 一方では、これは、構成の制約が少なく、柔軟性の高いシステムを実現していることを意味します。 一方、それはあなたのメトリクスと全体的なセットアップが十分に安全であることを保証するのはあなた次第であることを意味します。

簡単にするために、Nginxを使用して基本HTTP認証をインストールに追加します。これは、Prometheusとその推奨データ視覚化ツールであるGrafanaの両方が完全にサポートしています。

apache2-utilsをインストールすることから始めます。これにより、パスワードファイルを生成するためのhtpasswdユーティリティにアクセスできるようになります。

sudo apt-get update
sudo apt-get install apache2-utils

次に、htpasswdにファイルを保存する場所と、認証に使用するユーザー名を指定して、パスワードファイルを作成します。

ノート: htpasswd will prompt you to enter and re-confirm the password you’d like to associate with this user. Also, make note of both the username and password you enter here, as you’ll need them to log into Prometheus in Step 9.


sudo htpasswd -c /etc/nginx/.htpasswd sammy

このコマンドの結果は、/etc/nginxディレクトリにある.htpasswdという名前の新しく作成されたファイルで、入力したユーザー名とパスワードのハッシュバージョンが含まれています。

次に、新しく作成されたパスワードを使用するようにNginxを構成します。

まず、問題が発生した場合に後でデフォルトに戻すことができるように、デフォルトのNginx構成ファイルのPrometheus固有のコピーを作成します。

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/prometheus

次に、新しい構成ファイルを開きます。

sudo nano /etc/nginx/sites-available/prometheus

serverブロックの下にあるlocation /ブロックを見つけます。 次のようになります。

/ etc / nginx / sites-available / default

...
    location / {
        try_files $uri $uri/ =404;
    }
...

すべてのトラフィックをPrometheusに転送するため、try_filesディレクティブを次のコンテンツに置き換えます。

/ etc / nginx / sites-available / prometheus

...
    location / {
        auth_basic "Prometheus server authentication";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass http://localhost:9090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
...

これらの設定により、ユーザーは新しい各セッションの開始時に認証を行う必要があります。 さらに、リバースプロキシは、このブロックによって処理されるすべての要求をPrometheusに転送します。

変更が完了したら、ファイルを保存してテキストエディタを閉じます。

次に、/etc/nginx/sites-enabledディレクトリにあるデフォルトのNginx構成ファイルへのリンクを削除して非アクティブ化し、新しい構成ファイルへのリンクを作成してアクティブにします。

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/prometheus /etc/nginx/sites-enabled/

Nginxを再起動する前に、次のコマンドを使用して構成にエラーがないか確認してください。

sudo nginx -t

出力は、syntax is okおよびtest is successfulを示しているはずです。 エラーメッセージが表示された場合は、画面の指示に従って問題を修正してから、次の手順に進んでください。

Output of Nginx configuration testsnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

次に、Nginxをリロードして、すべての変更を組み込みます。

sudo systemctl reload nginx

Nginxが稼働していることを確認します。

sudo systemctl status nginx

出力にサービスのステータスがactiveであることが示されていない場合は、画面上のメッセージに従い、前の手順をたどって問題を解決してから続行してください。

出力

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running) since Mon 2017-07-31 21:20:57 UTC; 12min ago
  Process: 4302 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s r
 Main PID: 3053 (nginx)
    Tasks: 2
   Memory: 3.6M
      CPU: 56ms
   CGroup: /system.slice/nginx.service

この時点で、完全に機能し、セキュリティで保護されたPrometheusサーバーができたので、Webインターフェイスにログインしてメトリックの確認を開始できます。

ステップ9—プロメテウスのテスト

Prometheusは、Prometheusとそのエクスポーターのステータスを監視し、クエリを実行し、グラフを生成するための基本的なWebインターフェイスを提供します。 ただし、インターフェイスが単純なため、Prometheusチームは、テストやデバッグよりも複雑なものについては、Grafanaのインストールと使用を推奨します。

このチュートリアルでは、組み込みのWebインターフェイスを使用して、PrometheusとNode Exporterが稼働していることを確認します。また、簡単なクエリとグラフについても見ていきます。

まず、Webブラウザでhttp://your_server_ipを指定します。

[HTTP認証]ダイアログボックスで、手順8で選択したユーザー名とパスワードを入力します。

ログインすると、 Expression Browser が表示され、カスタムクエリを実行して視覚化できます。

式を実行する前に、まず画面上部の Status メニューをクリックし、次に Targets メニューオプションをクリックして、PrometheusとNodeExplorerの両方のステータスを確認します。 Prometheusをそれ自体とNodeExporterの両方をスクレイプするように構成したので、両方のターゲットがUP状態でリストされているはずです。

エクスポータが見つからないか、エラーメッセージが表示される場合は、次のコマンドを使用してサービスのステータスを確認してください。

sudo systemctl status prometheus
sudo systemctl status node_exporter

両方のサービスの出力は、Active: active (running)のステータスを報告する必要があります。 サービスがまったくアクティブになっていないか、アクティブであるがまだ正しく機能していない場合は、画面の指示に従い、前の手順を再度トレースしてから続行してください。

次に、エクスポーターが正しく機能していることを確認するために、NodeExporterに対していくつかの式を実行します。

まず、画面上部のグラフメニューをクリックして、式ブラウザに戻ります。

Expression フィールドにnode_memory_MemAvailableと入力し、 Execute ボタンを押して、Consoleタブをサーバーのメモリ容量で更新します。

デフォルトでは、NodeExporterはこの量をバイト単位で報告します。 メガバイトに変換するには、数学演算子を使用して1024で2回除算します。

Expression フィールドに、node_memory_MemAvailable/1024/1024と入力し、Executeボタンを押します。

コンソールタブに結果がメガバイト単位で表示されるようになりました。

結果を確認したい場合は、端末からfreeコマンドを実行してください。 (-hフラグは、freeに人間が読める形式で報告するように指示し、メガバイト単位の量を提供します。)

free -h

この出力には、 available 列に表示される使用可能なメモリなど、メモリ使用量に関する詳細が含まれています。

Output              total        used        free      shared  buff/cache   available
Mem:           488M        144M         17M        3.7M        326M        324M
Swap:            0B          0B          0B

基本的な演算子に加えて、Prometheusクエリ言語は結果を集計するための多くの機能も提供します。

Expression フィールドに、avg_over_time(node_memory_MemAvailable[5m])/1024/1024と入力し、Executeボタンをクリックします。 結果は、過去5分間の平均使用可能メモリ(メガバイト単位)になります。

次に、グラフタブをクリックして、実行された式をテキストではなくグラフとして表示します。

最後に、このタブを押したまま、グラフの上にマウスを置くと、グラフのX軸とY軸に沿った特定のポイントに関する詳細が表示されます。

Prometheusの組み込みWebインターフェイスでの式の作成について詳しく知りたい場合は、公式ドキュメントの QueryingPrometheusの部分を参照してください。

結論

このチュートリアルでは、1つの追加のエクスポーターを使用して、完全なPrometheusインストールをダウンロード、構成、保護、およびテストしました。

Prometheusが内部でどのように機能するかについて詳しく知りたい場合は、 Ubuntu14.04でPrometheusをクエリする方法をご覧ください。 (すでにPrometheusがインストールされているので、最初のステップをスキップできます。)

Prometheusが他に何ができるかを確認するには、公式のPrometheusドキュメントにアクセスしてください。

また、Prometheusの拡張の詳細については、利用可能なエクスポーターのリスト公式のGrafanaWebサイトを確認してください。