Prometheus, Node_Exporter, Grafana

train

サーバのCPU使用率等をブラウザから確認するためのツールを導入する。

Prometheusはモニタリングツール

Node_Exporterはハードウェア関連のメトリックを収集

Grafanaはグラフを表示するツール

という構成である。

まずはPrometheusのインストールから。今回はバイナリを直接取得した。最新バージョンは2.14.0(現時点)。

$ sudo groupadd prometheus
$ sudo useradd -d /var/lib/prometheus -g prometheus -s /bin/false -m prometheus 
$ wget https://github.com/prometheus/prometheus/releases/download/v2.14.0/prometheus-2.14.0.linux-amd64.tar.gz
$ tar xf prometheus-2.14.0.linux-amd64.tar.gz
$ sudo cp prometheus promtool /sbin/
$ sudo chown root:root /sbin/prometheus /sbin/promtool
$ sudo mkdir /etc/prometheus
$ sudo mkdir /var/lib/prometheus/data
$ sudo chown -R prometheus:prometheus /var/lib/prometheus/data
$ sudo cp -r prometheus.yml consoles console_libraries /etc/prometheus/
$ sudo chown -R root:prometheus /etc/prometheus

最後に/etc/systemd/system/prometheus.serviceへsystemdのservice unit fileを設置 。

[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
User=prometheus
ExecStart=/sbin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus/data --web.console.templates=/etc/prometheus/consoles  --web.console.libraries=/etc/prometheus/console_libraries
ExecStop=/bin/kill -TERM ${MAINPID}
ExecReload=/bin/kill -HUP ${MAINPID}

[Install]
WantedBy=multi-user.target

で、リロード。

$ sudo systemctl daemon-reload
$ sudo systemctl start prometheus.service
$ sudo systemctl status prometheus.service

これで9090番ポートにアクセスするとダッシュボードにアクセスできる。

また、consoles/prometheus.html にアクセスすると PromehtuesのStatus が確認できる。

次に Node_Exporter のインストール。最新が0.18.1(現時点)。

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

/etc/systemd/system/node_exporter.service ファイル設置。

[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

で、リロード。

$ sudo systemctl daemon-reload
$ sudo systemctl start node_exporter.service

これで9100番ポートにアクセスすると、メトリックがテキストで表示される。

次に、 Prometheusの設定ファイルに先程起動したNode_Exporterの設定を追加。

/etc/prometheus/prometheus.ymlのscrape_configsの末尾に以下を追記。

scrape_configs:

(略)

  - job_name: 'node'

    file_sd_configs:
    - files:
       - /etc/prometheus/nodes.yml

/etc/prometheus/nodes.ymlへNode_Exporterを登録。

- targets:
   - localhost:9100
  labels:
    role: prometheus

Prometheusをリロード。

$ sudo systemctl daemon-reload
$ sudo systemctl reload prometheus.service
$ sudo systemctl status prometheus.service

ブラウザでPrometheusのダッシュボードの/targetsにアクセスし、 画面に’node’という項目とlocalhost:9100が存在しているようであればNode_Exporterの登録に成功 。

Prometheusの可視化ツールの Grafanaをインストール。

$ sudo /bin/bash -c "echo deb https://packages.grafana.com/oss/deb stable main > /etc/apt/sources.list.d/grafana.list"
$ curl https://packages.grafana.com/gpg.key | sudo apt-key add -
$ sudo apt update
$ sudo apt install grafana
$ sudo systemctl start grafana-server.service 

3000ポートにアクセスするとログインパスワードが聞かれる。

初期パスワードを変更後(自動的に催促される)、Add data sourceでPrometheusを追加。

URLを以下としてSave & Test をクリック。

http://localhost:3000

以下のサイトを参考にした。

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0562?page=1