前書き
Prometheusは、SoundCloudによって開発されたオープンソースの監視システムです。 InfluxDBやGraphiteなどの他の監視システムと同様に、Prometheusはすべてのデータを時系列データベースに保存します。 ただし、多次元データモデルと強力なクエリ言語を提供するため、システム管理者はメトリックの定義を簡単に微調整できるだけでなく、より正確なレポートを生成できます。
さらに、Prometheusプロジェクトには、PromDash(カスタムダッシュボードの開発に使用できるブラウザーベースのツール)と、電子メール、Flowdock、Slack、HipChatなどを介してアラートを送信できる実験的なAlertManagerも含まれています。
このチュートリアルでは、Prometheus Server、Node Exporter、およびPromDashをインストール、構成、および使用する方法を学習します。
前提条件
このチュートリアルを実行するには、次のものが必要です。
-
64ビットCentOS 7ドロップレット1つ
-
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [非ルートsudoユーザー]、できれば* prometheus *という名前のユーザー。
手順1-Prometheusサーバーのインストール
まず、このチュートリアルでダウンロードしたすべてのファイルを保存する新しいディレクトリを作成し、そこに移動します。
mkdir ~/Downloads
cd ~/Downloads
`+ curl +`を使用して、GitHubからPrometheusサーバーと時系列データベースの最新ビルドをダウンロードします。
curl -LO "https://github.com/prometheus/prometheus/releases/download/0.16.0/prometheus-0.16.0.linux-amd64.tar.gz"
Prometheus監視システムはいくつかのコンポーネントで構成されており、各コンポーネントは個別にインストールする必要があります。 すべてのコンポーネントを1つの親ディレクトリ内に保持することをお勧めします。そのため、 `+ mkdir +`を使用して作成します。
mkdir ~/Prometheus
作成したディレクトリを入力します。
cd ~/Prometheus
`+ tar `を使用して ` prometheus-0.16.0.linux-amd64.tar.gz +`を抽出します。
tar -xvzf ~/Downloads/prometheus-0.16.0.linux-amd64.tar.gz
これで、Prometheusサーバーのインストールが完了しました。 次のコマンドを入力して、インストールを確認します。
~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus -version
画面に次のメッセージが表示されます。
プロメテウス出力
prometheus, version 0.16.0 (branch: HEAD, revision: dcb8ba4)
build user: julius@desktop
build date: 20151009-23:51:17
go version: 1.5.1
ステップ2-Node Exporterのインストール
Prometheusは、Webサービスを監視する目的で開発されました。 CentOSサーバーのメトリックを監視するには、Node Exporterというツールをインストールする必要があります。 Node Exporterは、その名前が示すように、多くのメトリック(ディスクI / O統計、CPU負荷、メモリ使用量、ネットワーク統計など)をPrometheusが理解できる形式でエクスポートします。
`+ Downloads `ディレクトリに入り、 ` curl +`を使用してGitHubで利用可能なNode Exporterの最新ビルドをダウンロードします。
cd ~/Downloads && curl -LO "https://github.com/prometheus/node_exporter/releases/download/0.11.0/node_exporter-0.11.0.linux-amd64.tar.gz"
`+ Prometheus `ディレクトリ内に ` node_exporter +`という新しいディレクトリを作成し、その中に入ります:
mkdir ~/Prometheus/node_exporter
cd ~/Prometheus/node_exporter
これで、 `+ tar `コマンドを使用して ` node_exporter-0.11.0.linux-amd64.tar.gz +`を抽出できます。
tar -xvzf ~/Downloads/node_exporter-0.11.0.linux-amd64.tar.gz
手順3-Node Exporterをサービスとして実行する
Node Exporterを簡単に開始および停止できるように、サービスに変換します。
`+ vi `またはその他のテキストエディターを使用して、 ` node_exporter.service +`というユニット構成ファイルを作成します。
sudo vi /etc/systemd/system/node_exporter.service
このファイルには、 `+ node_exporter +`実行可能ファイルのパスが含まれている必要があり、実行可能ファイルを実行するユーザーも指定する必要があります。 したがって、次のコードを追加します。
/etc/init/node_exporter.conf
[Unit]
Description=Node Exporter
[Service]
User=
ExecStart=/home//Prometheus/node_exporter/node_exporter
[Install]
WantedBy=default.target
ファイルを保存し、テキストエディターを終了します。
`+ systemd +`をリロードして、作成した設定ファイルを読み込むようにします。
sudo systemctl daemon-reload
この時点で、Node Exporterは `+ systemctl +`コマンドを使用して管理できるサービスとして利用できます。 起動時に自動的に起動するように有効にします。
sudo systemctl enable node_exporter.service
サーバーを再起動するか、次のコマンドを使用してサービスを手動で開始できます。
sudo systemctl start node_exporter.service
起動したら、ブラウザを使用してNode Exporterのウェブインターフェースを表示します。このインターフェースは「+ http://:9100 / metrics +」で利用できます。 多くのテキストを含むページが表示されるはずです。
http:// your_server_ip:9100 / metrics excerpt
# 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-Prometheusサーバーの起動
Prometheusサーバーをインストールしたディレクトリを入力します。
cd ~/Prometheus/prometheus-0.16.0.linux-amd64
Prometheusを起動する前に、最初に `+ prometheus.yml +`という名前の設定ファイルを作成する必要があります。
vi ~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus.yml
次のコードをファイルにコピーします。
〜/ Prometheus / prometheus-0.16.0.linux-amd64 / prometheus.yml
scrape_configs:
- job_name: "node"
scrape_interval: "15s"
target_groups:
- targets: ['localhost:9100']
これにより、 `+ scrape_configs `セクションが作成され、 ` node `というジョブが定義されます。 Node ExporterのWebインターフェースのURLが ` targets `の配列に含まれています。 ` scrape_interval +`は15秒に設定されているため、プロメテウスは15秒ごとにメトリックをスクレイプします。
ジョブには任意の名前を付けることができますが、「ノード」と呼ぶと、Node Exporterのデフォルトのコンソールテンプレートを使用できます。
ファイルを保存して終了します。
Prometheusサーバーをバックグラウンドプロセスとして起動します。
nohup ./prometheus > prometheus.log 2>&1 &
Prometheusサーバーの出力を `+ prometheus.log `というファイルにリダイレクトしたことに注意してください。 ` tail +`コマンドを使用して、ファイルの最後の数行を表示できます。
tail ~/Prometheus/prometheus-0.16.0.linux-amd64/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://:9090 +`にあるプロメテウスのホームページにアクセスします。 次のホームページが表示されます。
image:http://i.imgur.com/cfw7Gnb.png [プロメテウスのホームページ]
PrometheusがNode Exporterからデータをスクレイピングしていることを確認するには、ページ上部の[グラフ]タブをクリックします。 開いたページで、* Expression というテキストフィールドにメトリックの名前( nodeprocsrunning など)を入力します。 次に、青色の[実行]ボタンを押します。 すぐ下の[*グラフ](*コンソール*の横)をクリックすると、そのメトリックのグラフが表示されます。
image:https://assets.digitalocean.com/articles/prometheus/lo6upjI.png [プロメテウスグラフ]
Prometheusには、よく使用されるいくつかのメトリックのグラフを表示できるコンソールテンプレートがあります。 これらのコンソールテンプレートは、Prometheusの設定で「+ job_name 」の値を「 node +」に設定した場合にのみアクセスできます。
+ http://:9090 / consoles / node.html +`にアクセスしてノードコンソールにアクセスし、サーバー* `+ localhost:9100 +
*をクリックしてそのメトリックを表示します。
image:https://assets.digitalocean.com/articles/prometheus/E8flb93.png [ノードコンソール]
ステップ5-PromDashのインストール
Prometheusサーバーでは、グラフを表示して式を試すことができますが、通常はデバッグ目的または1回限りのクエリを実行するためにのみ使用されます。 Prometheusの時系列データベースのデータを視覚化する好ましい方法は、高度に構成可能なだけでなく見栄えの良いカスタムダッシュボードを作成できるツールであるPromDashを使用することです。
`+ Prometheus +`ディレクトリに入ります:
cd ~/Prometheus
PromDashは、ソースファイルがGitHubで利用可能なRuby on Railsアプリケーションです。 ダウンロードして実行するには、Git、Ruby、およびいくつかのビルドツールをインストールする必要があります。 そのためには、 `+ yum +`を使用します。
sudo yum install git ruby ruby-devel sqlite-devel zlib-devel gcc gcc-c++ automake patch
これで、 `+ git +`コマンドを使用してソースファイルをダウンロードできます。
git clone https://github.com/prometheus/promdash.git
`+ promdash +`ディレクトリに入ります。
cd ~/Prometheus/promdash
PromDashはいくつかのRuby gemに依存しています。 これらのgemのインストールを自動化するには、「+ bundler +」というgemをインストールする必要があります。
gem install bundler
`+ bundle `コマンドを使用して、PromDashに必要なすべてのRuby gemをインストールできるようになりました。 このチュートリアルでは、PromDashをSQLite3で動作するように設定するため、 `-without +`パラメーターを使用してMySQLおよびPostgreSQLのgemを除外するようにしてください。
bundle install --without mysql postgresql
このコマンドが完了するまで数分待たなければならない場合があります。 完了すると、次のメッセージが表示されます。
バンドル出力
. . .
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データベースを保存するディレクトリを作成します。
mkdir ~/Prometheus/databases
PromDashは、「+ DATABASE_URL 」という環境変数を使用して、関連するデータベースの名前を決定します。 次を入力して、PromDashが ` databases `ディレクトリ内に ` mydb.sqlite3 +`というSQLite3データベースを作成するようにします。
echo "export DATABASE_URL=sqlite3:$HOME/Prometheus/databases/mydb.sqlite3" >> ~/.bashrc
このチュートリアルでは、プロダクションモードでPromDashを実行するため、環境変数 `+ RAILS_ENV `を ` production +`に設定します。
echo "export RAILS_ENV=production" >> ~/.bashrc
行った変更を `+ .bashrc +`ファイルに適用します。
. ~/.bashrc
次に、 `+ rake +`ツールを使用して、SQLite3データベースにPromDashのテーブルを作成します。
rake db:migrate
PromDashはRails Asset Pipelineを使用するため、PromDashプロジェクトのすべてのアセット(CSSファイル、画像、およびJavascriptファイル)をプリコンパイルする必要があります。 これを行うには、次を入力します。
rake assets:precompile
ステップ7-PromDashの開始と構成
PromDashは、軽量のWebサーバーであるThinで実行されます。 次のコマンドを入力して、サーバーをデーモンとして起動します。
bundle exec thin start -d
サーバーが起動するまで数秒待ってから、「+ http://:3000 / +」にアクセスしてPromDashのホームページを表示します。
image:https://assets.digitalocean.com/articles/prometheus/j0AfIQA.png [PromDashのホームページ]
カスタムダッシュボードの作成を開始する前に、PromDashにPrometheusサーバーのURLを知らせる必要があります。 これを行うには、上部の[サーバー]タブをクリックします。 [新しいサーバー]をクリックし、フォームで、Prometheusサーバーに任意の名前を付けます。 * Url フィールドを `+ http://:9090 +`に設定し、 Server type フィールドを Prometheus *に設定します。
image:https://assets.digitalocean.com/articles/prometheus/C0ChfYZ.png [PromDashのサーバー作成画面]
最後に、[サーバーの作成]をクリックして構成を完了します。 ページに*サーバーが正常に作成されました*と表示され、トップメニューの[ダッシュボード]に戻ることができます。
ステップ8-ダッシュボードの作成
PromdashダッシュボードはPromdashディレクトリに属している必要があるため、まず* New Directory をクリックして新しいディレクトリを作成します。 表示されるフォームで、 My Dashboards などのディレクトリに名前を付けて、 Create Directory *をクリックします。
フォームを送信すると、ホームページに戻ります。 [新しいダッシュボード]ボタンをクリックして、新しいダッシュボードを作成します。 表示されたフォームで、ダッシュボードに* Simple Dashboard *などの名前を付け、ドロップダウンメニューから作成したディレクトリを選択します。
フォームを送信すると、新しいダッシュボードが表示されます。
画像:https://assets.digitalocean.com/articles/prometheus/PQ1eTVJ.png [空のダッシュボード]
ダッシュボードにはすでに1つのグラフがありますが、構成する必要があります。 グラフのヘッダー(タイトル)にカーソルを合わせると、グラフを構成できるさまざまなアイコンが表示されます。 タイトルを変更するには、[グラフと軸の設定]アイコン(左から4番目)をクリックし、[グラフのタイトル]フィールドに新しいタイトルを入力します。
左から2番目にある*データソース*アイコンをクリックして、1つ以上の式をグラフに追加します。 [* Add Expression ]をクリックし、[ Enter Expression ]というフィールドに nodeprocsrunning *と入力します。
image:https://assets.digitalocean.com/articles/prometheus/zHslJPa.png [式を追加]
次に、グラフのヘッダーにある* Refresh *アイコン(左端のアイコン)をクリックして、グラフを更新します。 ダッシュボードには、完全に構成されたグラフが1つ含まれています。 下部にある[グラフの追加]ボタンをクリックして、グラフを追加できます。
すべての変更を行ったら、右側の[変更を保存]ボタンをクリックして、変更を永続的にします。 次回PromDashのホームページにアクセスすると、ダッシュボードへのリンクが表示されます:
画像:https://assets.digitalocean.com/articles/prometheus/fztROmE.png [PromDash Dashboards]
結論
これで、CentOS 7サーバーで完全に機能するPrometheusエコシステムが実行され、PromDashを使用して要件に合った監視ダッシュボードを作成できます。
すべてのコンポーネントを単一のCentOSマシンにインストールしましたが、それぞれにノードエクスポーターのみをインストールし、新しいノードエクスポーターのURLを + prometheusの
+ targets + `配列に追加することで、より多くのマシンを簡単に監視できます。 yml + `。
プロメテウスの詳細については、http://prometheus.io/docs/introduction/overview/ [ドキュメント]を参照してください。