Prometheusは、SoundCloudによって開発されたオープンソースの監視システムです。他の監視システム(InfluxDBやGraphiteなど)と同様に、Prometheusはすべてのデータを時系列データベースに保存します。ただし、多次元データモデルと強力なクエリ言語を提供するため、システム管理者はインジケーターの定義を簡単に微調整できるだけでなく、より正確なレポートを生成することもできます。
さらに、Prometheusプロジェクトには、PromDash(カスタムダッシュボードの開発に使用できるブラウザーベースのツール)と、電子メール、Flowdock、Slack、HipChatなどを介してアラートを送信できる実験的なAlertManagerも含まれています。
このチュートリアルでは、Prometheus Server、Node Exporter、およびPromDashをインストール、構成、および使用する方法を学習します。
このチュートリアルに従うには、次のものが必要です。
サーバーをお持ちでない方は[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使って実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。
まず、このチュートリアルでダウンロードしたすべてのファイルを保存する新しいディレクトリを作成し、そのディレクトリに移動します。
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監視システムはいくつかのコンポーネントで構成されており、それぞれを個別にインストールする必要があります。すべてのコンポーネントを親ディレクトリに保持することをお勧めします。そのため、 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
Prometheusは、Webサービスを監視するために開発されました。 CentOSサーバーのメトリックを監視するには、NodeExporterと呼ばれるツールをインストールする必要があります。ノードエクスポータは、その名前が示すように、Prometheusが理解できる形式で、多数のメトリック(ディスクI / O統計、CPU負荷、メモリ使用量、ネットワーク統計など)をエクスポートします。
Downloads
ディレクトリに入り、 curl
を使用して、GitHubで入手可能な最新バージョンのNodeExporterをダウンロードします。
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
ノードエクスポータの起動と停止を簡単にするために、ノードエクスポータをサービスに変換してみましょう。
vi
またはその他のテキストエディタを使用して、 node_exporter.service
という名前のユニット構成ファイルを作成します。
sudo vi /etc/systemd/system/node_exporter.service
このファイルには、 node_exporter
実行可能ファイルのパスが含まれ、実行可能ファイルを実行するユーザーを指定する必要があります。したがって、次のコードを追加します。
[ Unit]
Description=Node Exporter
[ Service]
User=prometheus
ExecStart=/home/prometheus/Prometheus/node_exporter/node_exporter
[ Install]
WantedBy=default.target
ファイルを保存して、テキストエディタを終了します。
作成した構成ファイルを読み取れるように、 systemd
をリロードします。
sudo systemctl daemon-reload
このとき、ノードエクスポータは systemctl
コマンドで管理できるサービスとして利用できます。起動時に自動的に起動するように有効にします。
sudo systemctl enable node_exporter.service
今すぐサーバーを再起動するか、次のコマンドを使用して手動でサービスを開始できます。
sudo systemctl start node_exporter.service
起動後、ブラウザを使用して、 http:// your_server_ip:9100 / metrics
にあるNodeExporterのWebインターフェイスを表示します。多くのテキストを含むページが表示されます。
# 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...
Prometheusサーバーがインストールされているディレクトリを入力します。
cd ~/Prometheus/prometheus-0.16.0.linux-amd64
Prometheusを起動する前に、まず prometheus.yml
という名前の構成ファイルを作成する必要があります。
vi ~/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
というジョブが定義されます。これには、ノードエクスポータのWebインターフェイスのURLが targets
配列に含まれています。 15秒ごとにプロメテウススクレイプインジケーターを作成するには、 scrape_interval
を15秒に設定します。
作品には好きな名前を付けることができますが、NodeExporterのデフォルトのコンソールテンプレートを「node」という名前で使用できます。
ファイルを保存して終了します。
Prometheusサーバーをバックグラウンドプロセスとして起動します。
nohup ./prometheus > prometheus.log 2>&1&
Prometheusサーバーの出力を prometheus.log
という名前のファイルにリダイレクトしたことに注意してください。 tail
コマンドを使用して、ファイルの最後の数行を表示できます。
tail ~/Prometheus/prometheus-0.16.0.linux-amd64/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がNodeExporterからデータを確実に取得するには、ページ上部の[グラフ]タブをクリックします。開いたページで、式のテキストフィールドにメトリックの名前(たとえば、** nodeprocsrunning )を入力します。次に、青い実行ボタンを押します。下のチャート**(コンソールの横)をクリックすると、インジケーターのチャートが表示されます。
Prometheusには、一般的に使用されるいくつかのインジケーターのグラフを表示するために使用できるコンソールテンプレートがあります。これらのコンソールテンプレートにアクセスできるのは、Prometheus構成で job_name
の値が node
に設定されている場合のみです。
http:// your_server_ip:9090 / consoles / node.html
にアクセスしてノードコンソールにアクセスし、サーバー** localhost:9100 **をクリックしてそのメトリックを表示します。
Prometheusサーバーでは、グラフを表示して式を試すことができますが、通常は、デバッグ目的または1回限りのクエリの実行にのみ使用されます。 Prometheusの時系列データベースでデータを視覚化するための推奨される方法は、PromDashを使用することです。これは、高度に構成可能であるだけでなく、見た目にも美しいカスタムダッシュボードを作成できるツールです。
Prometheus
ディレクトリに入ります:
cd ~/Prometheus
PromDashはRubyon Railsアプリケーションであり、そのソースファイルはGitHubで入手できます。ダウンロードして実行するには、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はいくつかのRubygemに依存しています。これらのgemを自動的にインストールするには、 bundler
と呼ばれるgemをインストールする必要があります。
gem install bundler
これで、 bundle
コマンドを使用して、PromDashに必要なすべてのRubygemをインストールできます。このチュートリアルではSQLite3を使用するようにPromDashを構成するため、[MySQL](https://cloud.tencent.com/product/cdb?from=10680)および[PostgreSQL](https://cloud.tencent.com/product/postgresql?from=10680)gemを除外するには、必ず --without
パラメーターを使用してください。
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.
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アセットパイプラインを使用するため、PromDashプロジェクトのすべてのアセット(CSSファイル、イメージ、およびJavascriptファイル)を事前にコンパイルする必要があります。次のように入力するだけです。
rake assets:precompile
PromDashは、薄くて軽量なWebサーバー上で実行されます。次のコマンドを入力して、サーバーをデーモンとして起動します。
bundle exec thin start -d
サーバーが起動するまで数秒待ってから、 http:// your_server_ip:3000 /
にアクセスしてPromDashのホームページを表示します。
カスタムダッシュボードの作成を開始する前に、PromDashにPrometheusサーバーのURLを通知する必要があります。これを行うには、上部の[サーバー]タブをクリックします。 [**新しいサーバー] **をクリックし、フォームでPrometheusサーバーの名前を指定します。 ** Url フィールドを http:// your_server_ip:9090
に設定し、 Server type フィールドを Prometheus **に設定します。
最後に、[サーバーの作成] をクリックして構成を完了します。ページにサーバーが正常に作成されましたと表示されます。 トップメニューのダッシュボードに戻ることができます。
PromdashダッシュボードはPromdashディレクトリに属している必要があるため、最初に[新しいディレクトリ]をクリックして新しいディレクトリを作成します。表示されたフォームで、ディレクトリにマイダッシュボードなどの名前を付け、[ディレクトリの作成]をクリックします。
フォームを送信すると、ホームページに戻ります。今すぐ[**新しいダッシュボード] ボタンをクリックして、新しいダッシュボードを作成します。表示されたフォームで、 Simple Dashboard **などのダッシュボードに名前を付け、ドロップダウンメニューから作成したディレクトリを選択します。
フォームを送信すると、新しいダッシュボードが表示されます。
ダッシュボードにはすでにグラフがありますが、構成する必要があります。チャートのタイトル(** Title **など)にマウスを合わせると、チャートを構成できるさまざまなアイコンが表示されます。タイトルを変更するには、[**グラフと軸の設定] **アイコン(左から4番目)をクリックして、[**グラフのタイトル] **フィールドに新しいタイトルを入力します。
データソースアイコン(左から2番目)をクリックして、1つ以上の式をグラフに追加します。 [**式の追加] をクリックし、[式の入力]フィールドに node procs running **と入力します。
次に、チャートタイトルの更新アイコン(左端のアイコン)をクリックして、グラフを更新します。これで、ダッシュボードに完全に構成されたチャートが含まれます。下部にある[チャートの追加]ボタンをクリックすると、チャートをさらに追加できます。
すべての変更を行った後、変更を永続的にするには、必ず右側の[**変更を保存] **ボタンをクリックしてください。次回PromDashのホームページにアクセスすると、ダッシュボードへのリンクが表示されます。
これで、CentOS 7サーバー上で完全に機能するPrometheusエコシステムを実行し、PromDashを使用して、ニーズに合った監視ダッシュボードを作成できます。
1台のCentOSコンピューターにすべてのコンポーネントをインストールする場合でも、各コンピューターにノードエクスポーターのみを簡単にインストールし、新しいノードエクスポーターのURLを prometheus.yml
配列の targets
に追加できます。より多くのコンピューターを監視します。
Prometheusの詳細については、その[ドキュメント](http://prometheus.io/docs/introduction/overview/)を参照してください。
Prometheusを使用してCentOS7サーバー関連のチュートリアルを監視する方法の詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。
参照:「Prometheusを使用してCentOS7サーバーを監視する方法」
Recommended Posts