Ubuntu Weekly Recipe

第562回 モニタリングツールPrometheusを使う

この記事を読むのに必要な時間:およそ 6 分

Node_Exporterのインストール

次にメトリック収集対象としてExporterをインストールします。

Exporterの実体はPrometheusから注3HTTP GETを受けると関連するメトリックを収集し,Prometheusが解釈可能なテキストデータとして渡すというHTTPサーバです。

注3
HTTP GETする主体は問わないため,必ずしもPrometheusである必要はありません。また,Exporter自体はACL機能を持たないため,アクセス制限をかけたい場合は別途ファイアーウォール等を使用する必要があります。

Exporterは公式・サードパーティのものを含めて様々なサービスや装置のメトリックを収集・提供するものが存在しています。また,Prometheusそのものも自分自身のメトリックを収集するExporterとして機能しています。今回は各ホストのCPUやメモリの使用量等のハードウェア関連のメトリックを収集するNode_Exporterをインストールします。

Node_Exporterもapt,snapパッケージDocker imageが用意されています。今回はこちらに関してもPrometheus同様に,2019年3月時点で最新のver. 0.17.0のpre-compiledバイナリ注4を使用します。

注4
Node_Exporterはver. 0.16.0とそれ以前でメトリック名に破壊的な変更が加わっているため注意が必要です。2019年3月時点では完全に新規の導入であれば0.16.0より新しいバージョンを選択するのが良いでしょう。

先程Prometheusをインストールしたホストでupstreamよりバイナリをダウンロードし,Node_Exporterのバイナリを設置します。

$ wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
$ tar xf node_exporter-0.17.0.linux-amd64.tar.gz
$ sudo cp node_exporter-0.17.0.linux-amd64/node_exporter /sbin/
$ sudo chown root:root /sbin/node_exporter

/etc/systemd/system/node_exporter.serviceへsystemdのservice unit fileを設置します。

[Unit]
Description=Node Exporter for Prometheus
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/sbin/node_exporter
PrivateTmp=true

[Install]
WantedBy=multi-user.target

そして以下の手順でNode_Exporterを起動します。

$ systemctl daemon-reload
$ systemctl start node_exporter.service

起動できたらブラウザでNode_Exporterが起動しているホストの9100番ポートの/metricsへアクセスしてみましょう。すると図3のようなメトリックが画面に表示されます。

図3 Node_Exporterのメトリック

画像

また,curlなどを使用して直接HTTP GETでも確認できます。

$ curl localhost: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
go_gc_duration_seconds{quantile="0.25"} 0
go_gc_duration_seconds{quantile="0.5"} 0
go_gc_duration_seconds{quantile="0.75"} 0
go_gc_duration_seconds{quantile="1"} 0
go_gc_duration_seconds_sum 0
go_gc_duration_seconds_count 0
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 6
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.11.2"} 1
(略)

著者プロフィール

上野竜一(うえのりゅういち)

Ubuntu Japanese Teamが参加するイベントに出入りしている人。パンダが好き。株式会社 創夢所属。