序章

Prometheusは、SoundCloudによって開発されたオープンソースの監視システムです。 InfluxDBやGraphiteなどの他の監視システムと同様に、Prometheusはすべてのデータを時系列データベースに保存します。 ただし、多次元データモデルと強力なクエリ言語を提供するため、システム管理者はメトリックの定義を簡単に微調整できるだけでなく、より正確なレポートを生成することもできます。

さらに、Prometheusプロジェクトには、PromDash(カスタムダッシュボードの開発に使用できるブラウザーベースのツール)と、電子メール、Flowdock、Slack、HipChatなどを介してアラートを送信できる実験的なAlertManagerも含まれています。

このチュートリアルでは、Prometheusサーバー、ノードエクスポーター、およびPromDashをインストール、構成、および使用する方法を学習します。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • sudonon-rootユーザーを含む1つの64ビットUbuntu14.04ドロップレット。

注:32ビットサーバーを使用する必要がある場合は、このチュートリアルに記載されているすべてのファイル名とリンクで、-amd64-386に置き換えてください。

ステップ1—PrometheusServerをインストールする

まず、このチュートリアルでダウンロードしたすべてのファイルを保存するための新しいディレクトリを作成し、そこに移動します。

  1. mkdir ~/Downloads
  2. cd ~/Downloads

wgetを使用して、Prometheusサーバーの最新ビルドと時系列データベースをGitHubからダウンロードします。

  1. wget "https://github.com/prometheus/prometheus/releases/download/0.15.1/prometheus-0.15.1.linux-amd64.tar.gz"

Prometheus監視システムはいくつかのコンポーネントで構成されており、各コンポーネントを個別にインストールする必要があります。 すべてのコンポーネントを1つの親ディレクトリ内に保持することをお勧めします。そのため、1つと、Prometheusサーバーのすべてのバイナリを格納するための追加のサブディレクトリを作成します。

  1. mkdir -p ~/Prometheus/server

作成したディレクトリを入力します。

  1. cd ~/Prometheus/server

tarを使用してprometheus-0.15.1.linux-amd64.tar.gzを抽出します。

  1. tar -xvzf ~/Downloads/prometheus-0.15.1.linux-amd64.tar.gz

これでPrometheusサーバーのインストールは完了です。 次のように入力して、インストールを確認します。

  1. ./prometheus -version

画面に次のメッセージが表示されます。

プロメテウスの出力
prometheus, version 0.15.1 (branch: master, revision: 64349aa)
  build user:       julius@julius-thinkpad
  build date:       20150727-17:56:00
  go version:       1.4.2

ステップ2—ノードエクスポーターのインストール

Prometheusは、Webサービスを監視する目的で開発されました。 Ubuntuサーバーのメトリックを監視するには、NodeExporterと呼ばれるツールをインストールする必要があります。 Node Exporterは、その名前が示すように、Prometheusが理解できる形式で多くのメトリック(ディスクI / O統計、CPU負荷、メモリ使用量、ネットワーク統計など)をエクスポートします。

Prometheusディレクトリ内にnode_exporterという名前の新しいディレクトリを作成し、その中に入れます。

  1. mkdir -p ~/Prometheus/node_exporter
  2. cd ~/Prometheus/node_exporter

wgetを使用して、GitHubで入手できるNode Exporterの最新ビルドをダウンロードし、Downloadsディレクトリに配置します。

  1. wget https://github.com/prometheus/node_exporter/releases/download/0.11.0/node_exporter-0.11.0.linux-amd64.tar.gz -O ~/Downloads/node_exporter-0.11.0.linux-amd64.tar.gz

これで、tarコマンドを使用してnode_exporter-0.11.0.linux-amd64.tar.gzを抽出できます。

  1. tar -xvzf ~/Downloads/node_exporter-0.11.0.linux-amd64.tar.gz

ステップ3—ノードエクスポーターをサービスとして実行する

Node Exporterの起動と停止を簡単にするために、NodeExporterをサービスに変換してみましょう。

/usr/binnode_exporterバイナリへのソフトリンクを作成します。

  1. sudo ln -s ~/Prometheus/node_exporter/node_exporter /usr/bin

nanoまたはお気に入りのテキストエディタを使用して、node_exporter.confというUpstart構成ファイルを作成します。

  1. sudo nano /etc/init/node_exporter.conf

このファイルには、node_exporter実行可能ファイルへのリンクが含まれている必要があります。また、実行可能ファイルをいつ開始するかを指定する必要があります。 したがって、次のコードを追加します。

/etc/init/node_exporter.conf
# Run node_exporter

start on startup

script
   /usr/bin/node_exporter
end script

この時点で、Node Exporterは、serviceコマンドを使用して開始できるサービスとして利用できます。

  1. sudo service node_exporter start

Node Exporterが起動したら、ブラウザを使用してhttp://your_server_ip:9100/metricsで利用可能なWebインターフェイスを表示します。 多くのテキストを含むページが表示されるはずです。

http:// your_server_ip:9100/metricsの抜粋
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.00023853100000000002
go_gc_duration_seconds{quantile="0.25"} 0.00023998700000000002
go_gc_duration_seconds{quantile="0.5"} 0.00028122
. . .

ステップ4—PrometheusServerを起動する

Prometheusサーバーをインストールしたディレクトリを入力します。

cd ~/Prometheus/server

Prometheusを起動する前に、まずprometheus.ymlという名前の構成ファイルを作成する必要があります。

  1. nano ~/Prometheus/server/prometheus.yml

次のコードをファイルにコピーします。

〜/ Prometheus / server / prometheus.yml
scrape_configs:
  - job_name: "node"
    scrape_interval: "15s"
    target_groups:
    - targets: ['localhost:9100']

これにより、scrape_configsセクションが作成され、nodeというジョブが定義されます。 targetsの配列にNodeExporterのWebインターフェイスのURLが含まれます。 scrape_intervalは15秒に設定されているため、Prometheusは15秒ごとにメトリックをスクレイプします。

ジョブには任意の名前を付けることができますが、「ノード」と呼ぶと、NodeExporterのデフォルトのコンソールテンプレートを使用できます。

ファイルを保存して終了します。

Prometheusサーバーをバックグラウンドプロセスとして起動します。

  1. nohup ./prometheus > prometheus.log 2>&1 &

Prometheusサーバーの出力をprometheus.logというファイルにリダイレクトしたことに注意してください。 tailコマンドを使用して、ファイルの最後の数行を表示できます。

  1. tail ~/Prometheus/server/prometheus.log

サーバーの準備が整うと、ファイルに次のメッセージが表示されます。

prometheus.logの抜粋
INFO[0000] Starting target manager...         file=targetmanager.go line=75
INFO[0000] Listening on :9090                 file=web.go line=118

ブラウザを使用して、http://your_server_ip:9090にあるPrometheusのホームページにアクセスします。 次のホームページが表示されます。

Prometheus Homepage

PrometheusがNodeExporterからデータをスクレイピングしていることを確認するには、ページ上部のGraphタブをクリックします。 開いたページで、 Expression というテキストフィールドにメトリックの名前(たとえば、 node_procs_running など)を入力します。 次に、青い実行ボタンを押します。 すぐ下のグラフコンソールの横)をクリックすると、そのメトリックのグラフが表示されます。

Prometheus Graph

Prometheusには、一般的に使用されるいくつかのメトリックのグラフを表示できるコンソールテンプレートがあります。 これらのコンソールテンプレートにアクセスできるのは、Prometheusの構成でjob_nameの値をnodeに設定した場合のみです。

http://your_server_ip:9090/consoles/node.htmlにアクセスしてノードコンソールにアクセスし、サーバー localhost:9100 をクリックして、そのメトリックを表示します。

Node Console

ステップ5—PromDashをインストールする

Prometheusサーバーでは、グラフを表示したり、式を試したりすることができますが、通常は、デバッグ目的または1回限りのクエリの実行にのみ使用されます。 Prometheusの時系列データベースのデータを視覚化するための推奨される方法は、PromDashを使用することです。これは、高度に構成可能であるだけでなく、見栄えの良いカスタムダッシュボードを作成できるツールです。

Prometheusディレクトリに入ります。

  1. cd ~/Prometheus

PromDashはRubyonRailsアプリケーションであり、そのソースファイルはGitHubで入手できます。 ダウンロードして実行するには、Git、Ruby、SQLite3、gem依存関係マネージャーであるBundler、およびそれらの依存関係をインストールする必要があります。 これを行うには、apt-getを使用します。

  1. sudo apt-get update && sudo apt-get install git ruby bundler libsqlite3-dev sqlite3 zlib1g-dev

これで、gitコマンドを使用してソースファイルをダウンロードできます。

  1. git clone https://github.com/prometheus/promdash.git

promdashディレクトリに入ります。

  1. cd ~/Prometheus/promdash

bundleを使用して、PromDashに必要なRubygemをインストールします。 このチュートリアルではSQLite3で動作するようにPromDashを構成するため、--withoutパラメーターを使用してMySQLとPostgreSQLのgemを除外してください。

  1. bundle install --without mysql postgresql

PromDashは複数のgemに依存しているため、このコマンドが完了するまで数分待つ必要があります。 完了すると、次のメッセージが表示されます。

バンドル出力
. . .
Your bundle is complete!
Gems in the groups mysql and postgresql were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

ステップ6—Rails環境のセットアップ

PromDashに関連付けられたSQLite3データベースを保存するディレクトリを作成します。

  1. mkdir ~/Prometheus/databases

PromDashは、DATABASE_URLという環境変数を使用して、関連付けられているデータベースの名前を判別します。 次のように入力して、PromDashがdatabasesディレクトリ内にmydb.sqlite3というSQLite3データベースを作成します。

  1. echo "export DATABASE_URL=sqlite3:$HOME/Prometheus/databases/mydb.sqlite3" >> ~/.bashrc

このチュートリアルでは、PromDashを本番モードで実行するため、RAILS_ENV環境変数をproductionに設定します。

  1. echo "export RAILS_ENV=production" >> ~/.bashrc

.bashrcファイルに加えた変更を適用します。

  1. . ~/.bashrc

次に、rakeツールを使用して、SQLite3データベースにPromDashのテーブルを作成します。

  1. rake db:migrate

PromDashはRailsアセットパイプラインを使用するため、PromDashプロジェクトのすべてのアセット(CSSファイル、イメージ、およびJavascriptファイル)をプリコンパイルする必要があります。 これを行うには、次のように入力します。

  1. rake assets:precompile

ステップ7—PromDashの起動と構成

PromDashは、軽量のWebサーバーであるThinで実行されます。 次のコマンドを入力して、サーバーをデーモンとして起動します。

  1. bundle exec thin start -d

サーバーが起動するまで数秒待ってから、http://your_server_ip:3000/にアクセスしてPromDashのホームページを表示します。

PromDash's Homepage

カスタムダッシュボードの作成を開始する前に、PromDashにPrometheusサーバーのURLを通知する必要があります。 上部のサーバータブをクリックすると、これを行うことができます。 新しいサーバーをクリックし、フォームでPrometheusサーバーに任意の名前を付けます。 URLフィールドをhttp://your_server_ip:9090に設定し、サーバータイプフィールドをPrometheusに設定します。

PromDash's Create Server Screen

最後に、サーバーの作成をクリックして構成を完了します。 ページにサーバーが正常に作成されました。と表示され、トップメニューのダッシュボードに戻ることができます。

ステップ8—ダッシュボードの作成

PromdashダッシュボードはPromdashディレクトリに属している必要があるため、最初に NewDirectoryをクリックして新しいディレクトリを作成します。 表示されるフォームで、マイダッシュボードのようにディレクトリに名前を付け、ディレクトリの作成をクリックします。

フォームを送信すると、ホームページに戻ります。 新しいダッシュボードボタンをクリックして、新しいダッシュボードを作成します。 表示されたフォームで、 Simple Dashboard のようにダッシュボードに名前を付け、ドロップダウンメニューから作成したディレクトリを選択します。

フォームを送信すると、新しいダッシュボードが表示されます。

Empty Dashboard

ダッシュボードにはすでに1つのグラフがありますが、構成する必要があります。 グラフのヘッダー( Title と表示)にカーソルを合わせると、グラフを構成するためのさまざまなアイコンが表示されます。 タイトルを変更するには、グラフと軸の設定アイコン(左から4番目)をクリックして、グラフタイトルフィールドに新しいタイトルを入力します。

左から2番目のDatasourcesアイコンをクリックして、グラフに1つ以上の式を追加します。 式の追加をクリックし、式の入力というフィールドにnode_procs_runningと入力します。

Add Expression

次に、グラフのヘッダーにある更新アイコン(左端のアイコン)をクリックして、グラフを更新します。 これで、ダッシュボードに完全に構成されたグラフが1つ含まれます。 下部にあるグラフの追加ボタンをクリックすると、グラフをさらに追加できます。

すべての変更を行ったら、右側の [変更を保存]ボタンをクリックして、変更を永続的にしてください。 次回PromDashのホームページにアクセスすると、ダッシュボードへのリンクが表示されます。

PromDash Dashboards

結論

これで、Ubuntu 14.04サーバーで完全に機能するPrometheusエコシステムが実行され、PromDashを使用して要件に合った監視ダッシュボードを作成できます。

すべてのコンポーネントを単一のUbuntuマシンにインストールした場合でも、各コンポーネントにNode Exporterのみをインストールし、新しいNodeExporterのURLをprometheus.yml

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