Prometheus をインストールしてみた

Prometheus という新しめのモニタリングツールを試してみるべく、インストールと基本的な設定を行ってみましたので、その内容をメモします。

環境

Prometheus のインストール

事前準備

まずは、Prometheusを実行するユーザや、ディレクトリを準備しておきます。

Prometheusグループ・ユーザの作成

グループとユーザを作っておきます。

# groupadd prometheus
# useradd -g prometheus prometheus

ディレクトリの作成

設定ファイルを配置するディレクトリと、メトリクスデータを保存するディレクトリを作成しておきます。

# mkdir /etc/prometheus/
# chown prometheus:prometheus /etc/prometheus/
# mkdir -p /data/prometheus
# chown prometheus:prometheus /data/prometheus/

バイナリファイルの配置

Dockerイメージも配布されているようなのでいずれ試してみようと思いますが、今回はバイナリで。
公式サイト (https://prometheus.io/download/) から、バイナリファイルをダウンロードします。
2019年12月27日時点の最新バージョンは「2.15.1」でした。

# wget https://github.com/prometheus/prometheus/releases/download/v2.15.1/prometheus-2.15.1.linux-amd64.tar.gz
# tar zxvf prometheus-2.15.1.linux-amd64.tar.gz
# mv -i prometheus-2.15.1.linux-amd64 /usr/local/prometheus-2.15.1
# cd /usr/local
# chown -R prometheus:prometheus prometheus-2.15.1/
# ln -s prometheus-2.15.1 prometheus
# ls -l | grep prometheus
lrwxrwxrwx. 1 root       root        17 Dec 26 20:25 prometheus -> prometheus-2.15.1
drwxr-xr-x. 5 prometheus prometheus 134 Dec 26 20:01 prometheus-2.15.1

自動起動の設定

systemd の管理下に入れて、自動起動できるように設定します。

# vi /usr/lib/systemd/system/prometheus.service

serviceファイルはこんな感じで。

[Unit]
Description=Prometheus Server

[Service]
Type=simple
Restart=always
User=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus/metrics
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

serviceファイルを作成したら、daemon-reloadして認識させます。

# systemctl daemon-reload
# systemctl list-unit-files | grep prometheus
prometheus.service                            disabled

そして、自動起動を有効化します。

# systemctl enable prometheus.service
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /etc/systemd/system/prometheus.service.
# systemctl list-unit-files | grep prometheus
prometheus.service                            enabled

node_exporter の設定

node_exporter は、インストール先の Linux などのホストの各種情報を収集してくれます。

node_exporter

以下のページの「Node/system metrics exporter (official)」というやつです。

こちらもバイナリファイルを使います。

# wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
# tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz
# mv -i node_exporter-0.18.1.linux-amd64 /usr/local/node_exporter-0.18.1
# cd /usr/local
# chown -R prometheus:prometheus node_exporter-0.18.1
# ln -s node_exporter-0.18.1 node_exporter

自動起動の設定

systemd の管理下に入れて、自動起動できるように設定します。

# vi /usr/lib/systemd/system/prometheus_node_exporter.service

serviceファイルはこんな感じで。

[Unit]
Description=Node Exporter for Prometheus

[Service]
Type=simple
Restart=always
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

serviceファイルを作成したら、daemon-reloadして認識させます。

# systemctl daemon-reload
# systemctl list-unit-files | grep prometheus_node_exporter
prometheus_node_exporter.service              disabled

そして、自動起動を有効化します。

# systemctl enable prometheus_node_exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus_node_exporter.service to /usr/lib/systemd/system/prometheus_node_exporter.service.
# systemctl list-unit-files | grep prometheus_node_exporter
prometheus_node_exporter.service              enabled

動作確認

以下のように、curlで応答があるか確認します。
応答があれば、ひとまず動作しているはずです。

curl http://localhost:9100/metrics

Prometheus 側のデータ収集設定

prometheus.ymlの修正

Prometheus が node_exporter 経由でデータを収集できるように、 prometheus.yml に設定を追加します。
ディフォルトの prometheus.yml だと最後ほうにありますが、「scrape_configs:」の中にnode_exporter用の設定を追加します。

「- job_name: 'node'」以降の部分に、以下の内容を追加します。

  - job_name: 'node'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9100']

設定を変更したら、prometheusを再起動します。

# sysmtectl restart prometheus.server

動作確認

以下のように、curlで応答があるか確認します。
応答があれば、ひとまず動作しているはずです。

curl http://localhost:9090/metrics