1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Observabilityへの道①】PrometheusでGPU使用率の推移を可視化

1
Last updated at Posted at 2026-03-01

はじめに

はじめまして「今日も監視くん」として初めての投稿です。
10名のチームで監視運用を担当しています。
JIMUCでは「オブザーバビリティ × SRE運用の推進」について登壇し、現場目線でよりモダンな運用にステップアップするには?についてお話しました。

今回Observabilityへの道ということで、自宅のサーバで監視製品を入れたりとか色々やりながらObservabilityとは?というところを探っていきたいと思います。今回はその第一弾として、自宅サーバ(Ubuntu)で Prometheus から GPU まで監視 できる状態を作りました。実際に動いた手順とファイル内容 をまとめます。


Observabilityへの道シリーズ

このシリーズでは、監視スタックを段階的に構築しながら「見える化」から「使える監視」へと進めていきます。

1.Prometheusでメトリクス監視を構築
https://qiita.com/KanshiKun/items/1176246d27e52be652eb

2.AlertmanagerでSlack通知
https://qiita.com/KanshiKun/items/c56754fa6baaffec5de0

3.Grafanaでメトリクス可視化
https://qiita.com/KanshiKun/items/5979d2aaed5221ce0a1e

4.Minecraftサーバ監視
https://qiita.com/KanshiKun/items/65446702d765ec580d7a

5.Mincraftサーバの障害を定義(アラートルール作成)
https://qiita.com/KanshiKun/items/8f8239b65639e9d3c749

6.AWSを監視拠点にした外形監視の実装
https://qiita.com/drafts/5002eb89d4019ed96ccc/edit

7.Loki × Promtail × Grafanaでログを可視化する
https://qiita.com/KanshiKun/items/4b768d00433d1b5f700b

8.ログから監視を設計する 〜「何が起きているか」を捉える〜
https://qiita.com/drafts/6642323ec0b45368e932/edit


できるようになること

  • Prometheus を Docker で起動できる
  • node-exporter を scrape して CPU/メモリ等を監視できる
  • dcgm-exporter を scrape して GPU使用率を監視できる
  • GPU負荷をかけた際の推移を確認できる

前提環境

  • Ubuntu
  • Docker / Docker Compose
  • NVIDIA GPU 搭載(RTX 4070 Ti SUPER)
  • GPUをコンテナから利用できる状態(runtime: nvidia が有効)

Stable Diffusionによる画像生成と、息子(7歳)、娘(5歳)に向けてマインクラフトサーバを運用してサービスを提供しています。たまにユーザ(息子、娘)からログインできない!とクレームが入ります汗。今回の活動を通して、外形監視と自動復復旧を取り入れてユーザの体感を向上させたいです。

自宅サーバ構成構成.drawio.png

ディレクトリ構成(実際)

作業ディレクトリ:

/root/monitoring/prometheus

中身は以下の2ファイルのみです。

docker-compose.yml
prometheus.yml

docker-compose.yml(実ファイル)

version: '3'

services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"
    restart: unless-stopped

  node-exporter:
    image: prom/node-exporter
    container_name: node-exporter
    ports:
      - "9100:9100"
    restart: unless-stopped

  dcgm-exporter:
    image: nvcr.io/nvidia/k8s/dcgm-exporter:latest
    container_name: dcgm-exporter
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
    ports:
      - "9400:9400"
    restart: unless-stopped

docker-compose.yml(実ファイル)

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node"
    static_configs:
      - targets: ["node-exporter:9100"]

  - job_name: "gpu"
    static_configs:
      - targets: ["dcgm-exporter:9400"]

起動手順

作業ディレクトリで実行します。

cd /root/monitoring/prometheus
docker compose up -d

動作確認

1. コンテナ確認

docker ps

以下が Up になっていればOKです。

  • prometheus
  • node-exporter
  • dcgm-exporter

2. Prometheus UI

ブラウザでアクセスします。

http://<サーバIP>:9090

image.png

GPUメトリクス確認(PromQL)

Prometheus UIで以下を実行します。

DCGM_FI_DEV_GPU_UTIL

Graphタグを選択するとGPU使用率の推移が表示されます。


image.png

実際に負荷をかけてみる

趣味で生成AIによる画像生成をしていたりします。Stable Diffusionで、

  • 2048×2048
  • step 150

を実行すると、GPU使用率が急上昇します。

GPUのファンが凄くうるさい音を出すのですが、目視で「重い」ではなく、
数値で「100%近い」と確認できる。

これが監視の価値ですね。


image.png

よく使うメトリクス

  • GPU使用率
    DCGM_FI_DEV_GPU_UTIL

  • GPUメモリ使用量
    DCGM_FI_DEV_FB_USED

  • 消費電力
    DCGM_FI_DEV_POWER_USAGE


まとめ

Prometheusを中心に、

  • node-exporter(CPU / メモリ)
  • dcgm-exporter(GPU)

まで監視できる状態を、自宅サーバで構築しました。

やったことはシンプルです。

  1. docker-compose.yml を作成
  2. prometheus.yml に scrape を追加
  3. docker compose up -d

それだけです。

監視くん的に最後に一言。

見えるようにした瞬間、次の一手が打てる。


次のステップ

次は、

  • Minecraftサーバの外形監視
  • Alertmanager導入
  • Grafana追加

まで進めたいと思います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?