【2025年03月版】PrometheusとGrafanaによる監視システムの構築メモ

# はじめに

PrometheusとGrafanaによる監視システムを構築してみるメモ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/8fac1ede-3789-45a5-b569-d1210ad97909.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/0f8f42d9-d4bb-44f5-874e-5a48d6130be5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/db6604af-bb0f-41ec-b4f1-d78d56fd5e76.png)

aptによるインストールではなく、圧縮ファイルから展開して構築

とりあえずの監視対象は、prometheusの実行ホスト自体を登録

# 環境

- Proxmox VE 8.3上のUbuntu24.04に構築

```
$ uname -a
Linux prom 6.8.0-55-generic #57-Ubuntu SMP PREEMPT_DYNAMIC Wed Feb 12 23:42:21 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.2 LTS"
$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 24.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.2 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
```

# 構築手順

- Prometheus
    - ユーザとディレクトリの作成
    - ダウンロードと展開
    - 設定ファイルの修正
    - サービス化
    - 動作確認

- NodeExporter
    - ダウンロードと展開
    - サービス化
    - 動作確認

- Grafana
    - ユーザとディレクトリの作成
    - ダウンロードと展開
    - サービス化
    - 動作確認

## Prometheus

### ユーザとディレクトリの作成

```terminal
$ sudo useradd --no-create-home --shell /bin/false prometheus
$ sudo mkdir /etc/prometheus
$ sudo mkdir /var/lib/prometheus
```

### ダウンロードと展開

ダウンロードパスは、[Prometheus公式のダウンロードセクション](https://prometheus.io/download/) から取得

```terminal
$ wget https://github.com/prometheus/prometheus/releases/download/v3.2.1/prometheus-3.2.1.linux-amd64.tar.gz
$ tar xvf prometheus-3.2.1.linux-amd64.tar.gz
$ cd prometheus-3.2.1.linux-amd64
$ sudo mv prometheus /usr/local/bin/
$ sudo mv promtool /usr/local/bin/
$ sudo mv prometheus.yml /etc/prometheus/
$ sudo chown -R prometheus:prometheus /etc/prometheus
$ sudo chown -R prometheus:prometheus /var/lib/prometheus
```

### 設定ファイルの修正

`sudo vim /etc/prometheus/prometheus.yml` を修正

`job_name` を `node` に変更する

```/etc/prometheus/prometheus.yml
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  #  - job_name: "prometheus"
  #
  #    # metrics_path defaults to '/metrics'
  #    # scheme defaults to 'http'.
  #
  #    static_configs:
  #      - targets: ["localhost:9090"]

  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']
```

### サービス化

```terminal
$ cat <<EOF | sudo tee /etc/systemd/system/prometheus.service
[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.listen-address="0.0.0.0:9090"

[Install]
WantedBy=multi-user.target
EOF

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now prometheus
```

### 動作確認

`http://{ホストのIP}:9090/` にアクセスして、画面が表示されることを確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/5117b531-e10c-4a4f-965c-376a11f6cd07.png)

## NodeExporter
### ダウンロードと展開

ダウンロードパスは、[Prometheus公式のダウンロードセクション](https://prometheus.io/download/) から取得

```terminal
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.9.0/node_exporter-1.9.0.linux-amd64.tar.gz
$ tar xvfz node_exporter-1.9.0.linux-amd64.tar.gz
$ cd node_exporter-1.9.0.linux-amd64
$ sudo mv node_exporter /usr/local/bin/
```

### サービス化

```terminal
$ cat <<EOF | sudo tee /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
EOF

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now node_exporter
```

### 動作確認

`http://{ホストのIP}:9090/` の `Status` → `Target health` に `Endpoint` として `http://localhost:9100/metrics` が登録されていることを確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/93a9ac1f-ab74-4d24-9fe3-5cfd4617abd6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/7d4a4138-a2c7-4799-980d-b2be6ab23bde.png)

## Grafana
### ユーザとディレクトリの作成
```terminal
$ sudo useradd --no-create-home --system --shell /bin/false grafana
$ sudo mkdir /usr/local/grafana
```

### ダウンロードと展開

ダウンロードパスは、[Grafana公式のダウンロードセクション](https://grafana.com/grafana/download?edition=oss) から取得

```terminal
$ wget https://dl.grafana.com/oss/release/grafana-11.5.2.linux-amd64.tar.gz
$ tar -zxvf grafana-11.5.2.linux-amd64.tar.gz
$ sudo mv grafana-v11.5.2 /usr/local/grafana
$ sudo chown -R grafana:grafana /usr/local/grafana
```

### サービス化

```terminal
$ cat <<EOF | sudo tee /etc/systemd/system/grafana.service
[Unit]
Description=Grafana
After=network.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/grafana/bin/grafana server --homepath /usr/local/grafana --config /usr/local/grafana/conf/defaults.ini

[Install]
WantedBy=multi-user.target
EOF

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now grafana
```

### 動作確認

`http://{ホストのIP}:3000/` にアクセスして、画面が表示されることを確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143127/5f378f11-bafc-4d38-94bb-90f05701bcbf.png)

# さいごに

かんたんでしたね