序章
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 -これは、 NginxVTSモジュールを使用するNginxWebサーバーに関するメトリックを提供します。これには、開いている接続の数、送信された応答の数(応答コードでグループ化)が含まれます。 、および送信または受信したリクエストの合計サイズ(バイト単位)。
PrometheusのWebサイトで、公式およびコミュニティが提供するエクスポーターのより完全なリストを見つけることができます。
このチュートリアルでは、PrometheusとNode Exporterをインストール、構成、および保護して、サーバーのパフォーマンスの監視を容易にするメトリックを生成します。
前提条件
このチュートリアルを実行する前に、次のことを確認してください。
- 1つのUbuntu16.04ドロップレット。Ubuntu16.04チュートリアルを使用した初期サーバーセットアップに従ってセットアップされます。これには、sudo非rootユーザーとファイアウォールが含まれます。
- Ubuntu 16.04にNginxをインストールする方法チュートリアルの最初の2つの手順に従って、Nginxをインストールします。
ステップ1—サービスユーザーの作成
セキュリティ上の理由から、prometheusとnode_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はこれらの設定をすべてのエクスポーターに適用することに注意してください。
global:
scrape_interval: 15s
このscrape_interval
値は、Prometheusに15秒ごとにエクスポーターからメトリックを収集するように指示します。これは、ほとんどのエクスポーターにとって十分な長さです。
次に、次のscrape_configs
ディレクティブを使用して、Prometheus自体をエクスポーターのリストに追加してスクレイプします。
...
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
を使用できます。
構成ファイルは次のようになります。
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ユニットとユニットファイルについてで詳細を学ぶことができます。)
次のコンテンツをファイルにコピーします。
[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]