Prometheus最速構築


概要

Prometheus, Node_Exporter, Grafana を構築し、ローカルPCを監視できるようになるまでのレシピ。
以下、すべてのコマンドは一般ユーザで実行することを想定としている。
実用性重視のため、Prometheus 自体の説明はここではしない

動作環境

Prometheus構築手順

1. Prometheus用のユーザとグループを作成

sudo groupadd prometheus
sudo useradd -d /var/lib/prometheus -g prometheus -s /bin/false -m prometheus

2. 必要なファイルをDL & 展開

cd
wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz
tar xf ./prometheus-2.28.1.linux-amd64.tar.gz
ls -1 ./prometheus-2.28.1.linux-amd64

3. Prometheusのパスを通す

cd ./prometheus-2.28.1.linux-amd64/
sudo cp ./prometheus ./promtool /sbin/
sudo chown root:root /sbin/prometheus /sbin/promtool

4. Prometheus用の設定ディレクトリとデータディレクトリを作成

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus/data
sudo chown -R prometheus:prometheus /var/lib/prometheus/data

5. 設定ファイルとconsole templateを設定ディレクトリへ設置

sudo cp -r ./prometheus.yml ./consoles ./console_libraries /etc/prometheus/
sudo chown -R root:prometheus /etc/prometheus

6. systemdのservice unit fileを設置

cat << 'EOS' | sudo tee /etc/systemd/system/prometheus.service
[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
EOS

7. Prometheusの起動, 確認を行う

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

8. http://localhost:9090

Node_Exporter構築手順

Node_Exporterのみ構築する場合、0も実施する

0. Prometheus用のユーザとグループを作成

sudo groupadd prometheus
sudo useradd -d /var/lib/prometheus -g prometheus -s /bin/false -m prometheus

1. 必要なファイルをDL & 展開

cd
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.0/node_exporter-1.2.0.linux-amd64.tar.gz
tar xf ./node_exporter-1.2.0.linux-amd64.tar.gz
ls -1 ./node_exporter-1.2.0.linux-amd64

2. Node_Exporterのパスを通す

sudo cp ./node_exporter-1.2.0.linux-amd64/node_exporter /sbin/
sudo chown root:root /sbin/node_exporter

3. systemdのservice unit fileを設置

cat << 'EOS' | sudo tee /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
EOS

4. Node_Exporterの起動, 確認を行う

sudo systemctl daemon-reload
sudo systemctl enable node_exporter.service
sudo systemctl start node_exporter.service
sudo systemctl status node_exporter.service

5. http://localhost:9100/metrics

Node_Exporterを収集対象として登録

1. prometheus.ymlにNode_Exporterのjobを追記

cat << 'EOS' | sudo tee -a /etc/prometheus/prometheus.yml

  - job_name: 'node'

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

2. nodes.ymlへNode_Exporterを登録

cat << 'EOS' | sudo tee /etc/prometheus/nodes.yml
- targets:
   - localhost:9100
  labels:
    role: prometheus
EOS

3. 設定ファイルの構文チェック

sudo promtool check config /etc/prometheus/prometheus.yml

4. Prometheusをreload

sudo killall -HUP prometheus

5. http://localhost:9090/targets

Grafana構築手順

1. GrafanaのGPGキーを追加

cd
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 -

2. Grafanaをインストール & 起動

sudo apt update
sudo apt install grafana
sudo systemctl enable grafana-server.service
sudo systemctl start grafana-server.service

3. http://localhost:3000 へアクセス

4. Email or username: admin, Password: admin でログイン

5. Data Sourcesの追加

  • 画面左部の Configuration から Data Sources を選択し、Add data source をクリック
  • Prometheus を選択
  • URLに http://localhost:9090 を入力し、Save & Test をクリック

6. Dashboardのインポート

  • 画面左部の Dashboards から Manage を選択し、Import をクリック
  • Import via grafana.com に 1860 を入力し、Load をクリック
  • Name の行頭に[Import] を追記
  • prometheus の Prometheus (default) を選択し、Import をクリック

関連ファイル、ディレクトリ一覧

  • /etc/prometheus --> Prometheus設定ファイルディレクトリ
    • prometheus.yml --> Prometheus設定ファイル
    • nodes.yml --> Node_Exporter設定ファイル
  • /var/lib/prometheus/data --> Prometheus時系列データベースのデータディレクトリ

参考記事