Lightsail で Prometheus を使用してシステムリソースとアプリケーションをモニタリングする - Amazon Lightsail

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lightsail で Prometheus を使用してシステムリソースとアプリケーションをモニタリングする

Prometheus は、さまざまなシステムリソースとアプリケーションを管理するためのオープンソースの時系列監視ツールです。多次元データモデル、収集されたデータのクエリ機能、Grafana による詳細なレポート作成とデータの視覚化を提供します。

デフォルトでは、Prometheus はインストール先のサーバーでメトリクスを収集できるようになっています。ノードエクスポータを使用すると、ウェブサーバー、コンテナ、データベース、カスタムアプリケーション、その他のサードパーティシステムなどの他のリソースからメトリクスを収集できます。このチュートリアルでは、Lightsail インスタンスにノードエクスポーターを使用して Prometheus をインストールおよび設定する方法を示します。使用可能なエクスポーターの詳細なリストについては、Prometheus ドキュメントの「Exporters and integrations」(エクスポーターとインテグレーション) を参照してください。

目次

ステップ 1: 前提条件を満たす

Amazon Lightsail インスタンスに Prometheus をインストールする前に、次の操作を行う必要があります。

ステップ 2: Lightsail インスタンスにユーザーとローカルシステムディレクトリを追加する

SSH を使用して Lightsail インスタンスに接続し、ユーザーとシステムディレクトリを追加するには、次の手順を実行します。この手順では、次の Linux ユーザーアカウントを作成します。

  • prometheus – このアカウントは、サーバー環境のインストールと構成に使用されます。

  • exporter – このアカウントは、node_exporter 拡張の構成に使用されます。

これらのユーザーアカウントは管理のみを目的として作成されるため、この設定の範囲を超える追加のユーザーサービスや権限は必要ありません。この手順では、Prometheus がリソースを監視するために使用するファイル、サービス設定、およびデータを保存および管理するためのディレクトリも作成します。

  1. Lightsail コンソール にサインインします。

  2. インスタンス管理ページの [接続] タブで、[SSH を使用して接続] を選択します。

    Lightsail コンソールで SSH を使用して接続する
  3. 接続後に、次のコマンドを 1 つずつ入力して、2 つの Linux ユーザーアカウント (prometheus および exporter) を作成します。

    sudo useradd --no-create-home --shell /bin/false prometheus
    sudo useradd --no-create-home --shell /bin/false exporter
  4. 次のコマンドを 1 つずつ入力して、ローカルシステムディレクトリを作成します。

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

ステップ 3: Prometheus バイナリパッケージをダウンロードする

次の手順を実行して、Prometheus バイナリパッケージを Lightsail インスタンスにダウンロードします。

  1. ローカルコンピュータでウェブブラウザを開き、Prometheus のダウンロードページに移動します。

  2. ページの上部で、[Operating system] (オペレーティングシステム) ドロップダウンから [Linux] を選択します。[Architecture] (アーキテクチャ) で [amd64] を選択します。

    Prometheus 用のダウンロードフィルターを選択する
  3. 表示される [Prometheus] ダウンロードリンクを選択または右クリックし、リンクアドレスをコンピュータ上のテキストファイルにコピーします。表示される [node_exporter] ダウンロードリンクにも同じ操作を行います。この手順の後半で、コピーした両方のアドレスを使用します。

    Prometheus のダウンロードリンクをコピー
  4. SSH を使用して Lightsail インスタンスに接続します。

  5. 次のコマンドを入力して、ディレクトリをホームディレクトリに変更します。

    cd ~
  6. 以下のコマンドを入力して、Prometheus バイナリパッケージをインスタンスにダウンロードします。

    curl -LO prometheus-download-address

    を、この手順の前半でコピーしたアドレスprometheus-download-addressに置き換えます。アドレスの追加時は、コマンドは次の例のようになります。

    curl -LO https://github.com/prometheus/prometheus/releases/download/v2.37.0/prometheus-2.37.0.linux-amd64.tar.gz
  7. 以下のコマンドを入力して、node_exporter バイナリパッケージをインスタンスにダウンロードします。

    curl -LO node_exporter-download-address

    node_exporter-download-address を、この手順の前のステップでコピーしたアドレスに置き換えます。アドレスの追加時は、コマンドは次の例のようになります。

    curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
  8. 次のコマンドを 1 つずつ実行して、ダウンロードされた Prometheus と Node Exporter ファイルの内容を抽出します。

    tar -xvf prometheus-2.37.0.linux-amd64.tar.gz
    tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz

    ダウンロードしたファイルの内容が抽出された後、いくつかのサブディレクトリが作成されます。

  9. 次のコマンドを 1 つずつ入力して、prometheus および promtool の抽出されたファイルを /usr/local/bin プログラムのディレクトリにコピーします。

    sudo cp -p ./prometheus-2.37.0.linux-amd64/prometheus /usr/local/bin
    sudo cp -p ./prometheus-2.37.0.linux-amd64/promtool /usr/local/bin
  10. 次のコマンドを入力して、prometheus および promtool のファイルをこのチュートリアルの前半で作成した prometheus ユーザーに変更します。

    sudo chown prometheus:prometheus /usr/local/bin/prom*
  11. 次のコマンドを 1 つずつ入力して、consolesconsole_libraries のサブディレクトリを /etc/prometheus にコピーします。-r オプションは階層内のすべてのディレクトリを再帰的にコピーします。

    sudo cp -r ./prometheus-2.37.0.linux-amd64/consoles /etc/prometheus
    sudo cp -r ./prometheus-2.37.0.linux-amd64/console_libraries /etc/prometheus
  12. 次のコマンドを 1 つずつ入力して、コピーしたファイルの所有権をこのチュートリアルの前半で作成した prometheus ユーザーに変更します。-R オプションは階層内のすべてのファイルおよびディレクトリの所有権を再帰的に変更します。

    sudo chown -R prometheus:prometheus /etc/prometheus/consoles
    sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
  13. 次のコマンドを 1 つずつ入力して、設定ファイル prometheus.yml/etc/prometheus ディレクトリにコピーし、コピーしたファイルの所有権をこのチュートリアルの前半で作成した prometheus ユーザーに変更します。

    sudo cp -p ./prometheus-2.37.0.linux-amd64/prometheus.yml /etc/prometheus
    sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
  14. 以下のコマンドを入力して、./node_exporter* サブディレクトリから /usr/local/bin プログラムのディレクトリに node_exporter ファイルをコピーします。

    sudo cp -p ./node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin
  15. 次のコマンドを入力して、このチュートリアルの前半で作成した exporter ユーザーにファイルの所有権を変更します。

    sudo chown exporter:exporter /usr/local/bin/node_exporter

ステップ 4: Prometheus を設定する

Prometheus を設定するには、次の手順を実行します。この手順では、prometheus.yml ファイルを開いて編集します。このファイルには、Prometheus ツールのさまざまな設定が含まれています。Prometheus は、ファイルに設定した設定に基づいて監視環境を確立します。

  1. SSH を使用して Lightsail インスタンスに接続します。

  2. prometheus.yml ファイルを開いて編集する前に、次のコマンドを入力してこのファイルのバックアップコピーを作成します。

    sudo cp /etc/prometheus/prometheus.yml /etc/prometheus/prometheus.yml.backup
  3. 次のコマンドを入力して、 Vim を使用し、prometheus.yml ファイルを開きます。

    sudo vim /etc/prometheus/prometheus.yml

    以下に、prometheus.yml ファイルに設定する必要があるいくつかの重要なパラメータを示します。

    • scrape_interval — このパラメータは、global ヘッダーの下に置かれ、Prometheus が特定のターゲットのメトリックスデータをどの頻度で収集するか、またはスクレイプするかの時間間隔 (秒) を定義します。global タグで示されているように、この設定は Prometheus が監視するすべてのリソースに共通です。この設定は、個々のエクスポーターがグローバル値をオーバーライドする別の値を提供しない限り、エクスポーターにも適用されます。このパラメータは、現在の 15 秒に設定したままにしておくことができます。

    • job_namescrape_configs ヘッダー下に配置されるこのパラメータは、データクエリまたはビジュアルディスプレイの結果セット内のエクスポーターを識別するラベルです。ジョブ名の値は、環境内で監視されているリソースを最もよく反映するように指定できます。たとえば、ウェブサイトを管理するジョブに business-web-app というラベルを付けたり、データベースに mysql-db-1 というラベルを付けることができます。この初期設定では、Prometheus サーバーのみを監視しているので、最新の prometheus 値を保つことができます。

    • targetsstatic_configs ヘッダー下に配置される targets 設定では、特定のエクスポーターが実行されている場所を識別するために ip_addr:port キーバリューのペアを使用します。この手順のステップ 4~7 で、デフォルト設定を変更できます。

      Prometheus YAML ファイル
    注記

    この初期セットアップでは、alerting および rule_files のパラメータを設定する必要はありません。

  4. Vim で開いている prometheus.yml ファイルでは、[I] キーを押して Vim 挿入モードに移ります。

  5. static_configs ヘッダーの下に置かれている targets パラメータをスクロールして見つけます。

  6. デフォルト設定を <ip_addr>:9090 に変更します。インスタンスの静的 IP アドレスを <ip_addr> に置き換えます。変更されたパラメータは、次の例のようになります。

    Prometheus YAML ファイルが static_configs パラメータを変更しました
  7. [Esc] キーを押して挿入モードを終了し、[:wq!] と入力して変更内容を保存して Vim を終了します。

  8. (オプション) 何か問題が発生した場合は、次のコマンドを入力してこの手順で前に作成したバックアップと prometheus.yml を置き換えます。

    sudo cp /etc/prometheus/prometheus.yml.backup /etc/prometheus/prometheus.yml

ステップ 5: Prometheus をスタートする

インスタンスで Prometheus サービスを開始するには、次のステップを実行します。

  1. SSH を使用して Lightsail インスタンスに接続します。

  2. 次のコマンドを入力して 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

    コマンドラインは、起動プロセスやその他のサービスの詳細を出力します。また、サービスがポート 9090 でリッスンしていることも示しているはずです。

    Prometheus スタート出力

    サービスが起動しない場合、このポートでのトラフィックを許可するインスタンスファイアウォールルールの作成については、このチュートリアルの「ステップ 1: 前提条件を満たす」セクションを参照してください。その他のエラーについては、prometheus.yml ファイルを見直して構文エラーがないことを確認します。

  3. 実行中のサービスが検証されたら、[Ctrl+C] を押してストップします。

  4. 以下のコマンドを入力し、Vim を使用して systemd 設定ファイルを開きます。このファイルは Prometheus を起動するために使用されます。

    sudo vim /etc/systemd/system/prometheus.service
  5. ファイルに以下の行を挿入します。

    [Unit] Description=PromServer 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

    前述の手順は Linux systemd サービスマネージャーがサーバー上で Prometheus を起動するために使用されます。Prometheus は、呼び出されると prometheus ユーザーとして実行され prometheus.yml ファイルを参照して、設定を読み込み /var/lib/prometheus ディレクトリの時系列データを保存するします。コマンドラインから man systemd を実行し、サービスの詳細情報を確認できます。

  6. [Esc] キーを押して挿入モードを終了し、[:wq!] と入力して変更内容を保存して Vim を終了します。

  7. 次のコマンドを入力して、systemd サービスマネージャに情報を読み込みます。

    sudo systemctl daemon-reload
  8. 次のコマンドを入力して Prometheus を再起動します。

    sudo systemctl start prometheus
  9. Prometheus サービスの状態を確認するには、次のコマンドを入力します。

    sudo systemctl status prometheus

    サービスが正常に起動された場合は、次の例のような出力が表示されます。

    Prometheus のステータス出力
  10. [Q] を押して、ステータスコマンドを終了します。

  11. 次のコマンドを入力して、インスタンスが起動されたときに Prometheus が起動できるようにします。

    sudo systemctl enable prometheus
  12. ローカルコンピュータで Web ブラウザを開き、次の Web アドレスにアクセスして Prometheus 管理インターフェイスを表示します。

    http:<ip_addr>:9090

    <ip_addr> を Lightsail インスタンスの静的 IP アドレスに置き換えます。次の例に示すようなダッシュボードが表示されます。

    Prometheus ダッシュボード

ステップ 6: Node Exporter をスタートする

Node Exporter サービスを開始するには、以下の手順を実行します。

  1. SSH を使用して Lightsail インスタンスに接続します。

  2. 次のコマンドを入力し、Vim を使用して node_exportersystemd サービスファイルを作成します。

    sudo vim /etc/systemd/system/node_exporter.service
  3. [I] キーを押して、Vim を挿入モードにします。

  4. ファイルの末尾に次の行を追加します。これにより、CPU 負荷、ファイルシステムの使用状況、およびメモリリソースの監視コレクターを使用して node_exporter を設定します。

    [Unit] Description=NodeExporter Wants=network-online.target After=network-online.target [Service] User=exporter Group=exporter Type=simple ExecStart=/usr/local/bin/node_exporter --collector.disable-defaults \ --collector.meminfo \ --collector.loadavg \ --collector.filesystem [Install] WantedBy=multi-user.target
    注記

    これらの手順では、Node Exporter のデフォルトのマシンメトリックを無効にします。Ubuntu で利用できるメトリクスの詳しいリストについては、Ubuntu ドキュメンテーションの Prometheus node_exporter マニュアルのページを参照してください。

  5. [Esc] キーを押して挿入モードを終了し、[:wq!] と入力して変更内容を保存して Vim を終了します。

  6. 次のコマンドを入力して、systemd プロセスをリロードします。

    sudo systemctl daemon-reload
  7. 次のコマンドを入力して node_exporter サービスを開始します。

    sudo systemctl start node_exporter
  8. node_exporter サービスの状態を確認するには、次のコマンドを入力します。

    sudo systemctl status node_exporter

    サービスが正常に起動された場合は、次の例のような出力が表示されます。

    ノードエクスポータのステータス出力
  9. [Q] を押して、ステータスコマンドを終了します。

  10. 次のコマンドを入力して、インスタンスが起動されたときに Node Exporter が起動できるようにします。

    sudo systemctl enable node_exporter

ステップ 7: Node Exporter データコレクタで Prometheus を設定する

以下の手順を実行して、Node Exporter データコレクタで Prometheus を設定します。そのためには、prometheus.yml ファイルの node_exporter に新しい job_name パラメータを追加します。

  1. SSH を使用して Lightsail インスタンスに接続します。

  2. 次のコマンドを入力して、 Vim を使用し、prometheus.yml ファイルを開きます。

    sudo vim /etc/prometheus/prometheus.yml
  3. [I] キーを押して、Vim を挿入モードにします。

  4. 既存の - targets: ["<ip_addr>:9090"] パラメータの下で、次のテキスト行をファイルに追加します。

    - job_name: "node_exporter" static_configs: - targets: ["<ip_addr>:9100"]

    prometheus.yml ファイルの変更されたパラメータは、次の例のようになります。

    Node Exporter 用の静的設定

    次の点に注意してください。

    • Node Exporter は、prometheus サーバーのポート 9100 をリッスンしてデータをスクレイピングします。このチュートリアルの「Step 1: Complete the prerequisites」(ステップ 1: 前提条件を満たす) セクションで説明されているように、インスタンスのファイアウォールルールを作成する手順に従っていることを確認します。

    • の設定と同様にprometheusjob_name<ip_addr> を Lightsail インスタンスにアタッチされている静的 IP アドレスに置き換えます。

  5. [Esc] キーを押して挿入モードを終了し、[:wq!] と入力して変更内容を保存して Vim を終了します。

  6. 以下のコマンドを入力して Prometheus サービスを再起動し、設定ファイルへの変更を確定します。

    sudo systemctl restart prometheus
  7. Prometheus サービスの状態を確認するには、次のコマンドを入力します。

    sudo systemctl status prometheus

    サービスが正常に再起動された場合は、次のような出力が表示されます。

    Prometheus のステータス出力
  8. [Q] を押して、ステータスコマンドを終了します。

  9. ローカルコンピュータで Web ブラウザを開き、次の Web アドレスにアクセスして Prometheus 管理インターフェイスを表示します。

    http:<ip_addr>:9090

    <ip_addr> を Lightsail インスタンスの静的 IP アドレスに置き換えます。次の例に示すようなダッシュボードが表示されます。

    Prometheus ダッシュボード
  10. メインメニューで、[Status] (ステータス) ドロップダウンを選択し、[Targets] (ターゲット) を選択します。

    [Prometheus] ダッシュボードの [Targets] (ターゲット) メニューオプション

次の画面には、2 つのターゲットが表示されます。最初のターゲットは [node_exporter] メトリクスコレクターのジョブで、2 つ目のターゲットは [Prometheus] ジョブです。

[Prometheus] ダッシュボードのターゲット

これで、メトリックの収集とサーバーの監視のための環境が適切に設定されました。