「チームで共用しているOllamaサーバーがいつ逼迫しているか、誰も把握していない」
そんな悩みを持つインフラ担当者やSREの方は多いはずです。この記事では、OllamaにPrometheus+Grafanaの監視スタックを組み合わせる手順を解説します。
OllamaはデフォルトでPrometheusフォーマットの `/metrics` エンドポイントを公開しており、追加の計装なしにリクエスト数・レスポンス時間・GPU使用量を収集できます。Ubuntu Server 22.04 / 24.04を前提に、node_exporterによるシステム指標の取得から、nvidia_gpu_exporterを使ったNVIDIA GPU指標の可視化、Grafanaダッシュボードの構築まで段階的に説明します。
ローカルLLMのUbuntu Serverへの初期構築がまだの方は、先にUbuntu ServerでローカルLLMを構築する方法を参照してください。
この記事のポイント
・Ollamaは標準で `/metrics` エンドポイントを持つためPrometheusと追加プラグインなしに連携できる
・Prometheus+node_exporter+nvidia_gpu_exporterの3点セットでシステム・GPU・LLMを一元監視できる
・Grafanaのデータソースにprometheusを登録するだけでリアルタイムダッシュボードが構成できる
・アラートルールを設定すればVRAM逼迫やレスポンス遅延を自動検知してSlack通知できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
OllamaチームサーバーでPrometheus監視が必要な理由
ローカルLLMをチームで共有運用する段階になると、「なんとなく重い」では障害対応ができません。知人のインフラエンジニアが複数拠点のOllamaサーバーを管理している話を聞いたとき、最初にぶつかった問題が「レスポンスが遅い理由の切り分け」だったと話していました。原因はVRAMの枯渇だったのですが、監視なしでは `nvidia-smi` を手動実行して初めてわかったそうです。発覚まで2時間かかったと言っていました。
Prometheusによる定期収集とGrafanaによる可視化があれば、以下のことが自動で把握できます。
・チームが一番LLMを使う時間帯(リクエスト数の時系列)
・レスポンスが遅化するしきい値(システム負荷との相関)
・VRAMが逼迫する前のアラート(nvidia_gpu_exporterとの組み合わせ)
・エラー率の急増(モデルの不具合やネットワーク障害の検知)
情報システム部門がローカルLLMを社内導入する際の障壁として「運用監視体制が整備できるか」という点がよく挙がります。Prometheus+Grafanaの構成は既存のインフラ監視に馴染みやすく、他のシステム指標と同一ダッシュボードで管理できるため、社内でChatGPTの代替としてローカルLLMを選ぶ際の稟議通過にも貢献します。
監視スタックの全体構成を把握する|Prometheus・Grafana・各exporterの役割
今回構築する監視スタックは以下の4コンポーネントで構成します。・Prometheus(ポート9090): メトリクスを定期スクレイプして時系列DBに保存するコアコンポーネント
・node_exporter(ポート9100): CPU・メモリ・ディスク・ネットワークなどのLinuxシステム指標を公開するexporter
・nvidia_gpu_exporter(ポート9835): nvidia-smiを使ってGPU使用率・VRAM・温度・消費電力を公開するexporter
・Grafana(ポート3000): Prometheusをデータソースとしてダッシュボードを描画するUIツール
Ollamaはポート11434で `/metrics` を公開しているため、Prometheusのスクレイプ対象にOllamaを直接追加できます。これら全コンポーネントは同一サーバーに置くことも、別サーバーに分散させることもできます。
外部にメトリクスを出したくない場合は、PrometheusをOllamaと同一サーバーに置き、Grafanaだけを社内ネットワーク向けに公開する構成が実務上よく使われます。GrafanaはHTTPS化してBasic認証を設定することで、インターネット越しにも安全に参照できるようになります。
PrometheusをUbuntu Serverにインストールする
Prometheusはバイナリ配布なのでaptは使いません。GitHubリリースページから最新版(本稿執筆時点では 2.52.0)をダウンロードします。1. Prometheusのダウンロードと配置
# prometheus専用ユーザーを作成 $ sudo useradd --no-create-home --shell /bin/false prometheus # バイナリのダウンロードと展開 $ cd /tmp $ wget https://github.com/prometheus/prometheus/releases/download/v2.52.0/prometheus-2.52.0.linux-amd64.tar.gz $ tar xvf prometheus-2.52.0.linux-amd64.tar.gz $ sudo cp prometheus-2.52.0.linux-amd64/prometheus /usr/local/bin/ $ sudo cp prometheus-2.52.0.linux-amd64/promtool /usr/local/bin/ $ sudo chown prometheus:prometheus /usr/local/bin/prometheus /usr/local/bin/promtool # 設定ファイルとデータディレクトリの作成 $ sudo mkdir /etc/prometheus /var/lib/prometheus $ sudo cp -r prometheus-2.52.0.linux-amd64/consoles /etc/prometheus/ $ sudo cp -r prometheus-2.52.0.linux-amd64/console_libraries /etc/prometheus/ $ sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus
2. prometheus.ymlの設定
`/etc/prometheus/prometheus.yml` を作成します。OllamaとGPUのジョブは後続ステップで追加するので、まずPrometheus自身とnode_exporterだけ登録します。$ sudo nano /etc/prometheus/prometheus.yml global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node' static_configs: - targets: ['localhost:9100']
3. systemdサービスとして登録して起動する
$ sudo nano /etc/systemd/system/prometheus.service [Unit] Description=Prometheus After=network.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.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries \ --storage.tsdb.retention.time=30d [Install] WantedBy=multi-user.target
$ sudo systemctl daemon-reload $ sudo systemctl enable --now prometheus $ sudo systemctl status prometheus * prometheus.service - Prometheus Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2026-07-04 10:00:00 JST Main PID: 12345 (prometheus) Tasks: 8 (limit: 9400) Memory: 52.3M
UFWが有効な環境では `sudo ufw allow from 192.168.0.0/24 to any port 9090` のように社内ネットワークのCIDRに限定して開放してください。
OllamaのメトリクスエンドポイントをPrometheusで収集する
1. /metricsエンドポイントの確認
Ollamaが起動している状態で以下のコマンドを実行し、メトリクスが返ってくることを確認します。$ curl -s http://localhost:11434/metrics | head -30 # HELP ollama_request_duration_seconds Time taken to generate a response # TYPE ollama_request_duration_seconds histogram ollama_request_duration_seconds_bucket{model="llama3.3:70b-instruct-q4_0",le="0.1"} 0 ollama_request_duration_seconds_bucket{model="llama3.3:70b-instruct-q4_0",le="0.5"} 3 ollama_request_duration_seconds_bucket{model="llama3.3:70b-instruct-q4_0",le="1"} 7 ollama_request_duration_seconds_bucket{model="llama3.3:70b-instruct-q4_0",le="+Inf"} 47 # HELP ollama_requests_total Total number of requests processed # TYPE ollama_requests_total counter ollama_requests_total{model="llama3.3:70b-instruct-q4_0",status="success"} 45 ollama_requests_total{model="llama3.3:70b-instruct-q4_0",status="error"} 2 # HELP ollama_loaded_models Number of models currently loaded in memory # TYPE ollama_loaded_models gauge ollama_loaded_models 1
このエンドポイントはsystemdで起動している場合もDockerで起動している場合も、Ollama 0.5.0以降であればデフォルトで有効です。`ollama --version` でバージョンを確認し、0.5.0未満であれば `curl -fsSL https://ollama.com/install.sh | sh` でアップデートしてください。
2. prometheus.ymlにOllamaジョブを追加する
先ほど作成した `/etc/prometheus/prometheus.yml` のscrape_configs末尾にOllamaのジョブを追加します。- job_name: 'ollama' static_configs: - targets: ['localhost:11434'] metrics_path: /metrics scrape_interval: 10s
# SIGHUPでリロード(サービス停止なし) $ sudo systemctl reload prometheus # Web APIでリロードする場合(ExecStartに --web.enable-lifecycle が必要) $ curl -X POST http://localhost:9090/-/reload
node_exporterとnvidia_gpu_exporterを導入する
1. node_exporterのインストール
node_exporterはLinuxのシステム指標(CPU・メモリ・ディスクI/O・ネットワーク)をPrometheusに公開します。$ cd /tmp $ wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz $ tar xvf node_exporter-1.8.2.linux-amd64.tar.gz $ sudo cp node_exporter-1.8.2.linux-amd64/node_exporter /usr/local/bin/ $ sudo useradd --no-create-home --shell /bin/false node_exporter $ sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
$ sudo nano /etc/systemd/system/node_exporter.service [Unit] Description=Node Exporter After=network.target [Service] User=node_exporter Group=node_exporter Type=simple ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target
$ sudo systemctl daemon-reload $ sudo systemctl enable --now node_exporter # 動作確認 $ curl -s http://localhost:9100/metrics | grep node_cpu_seconds | head -3 # HELP node_cpu_seconds_total Seconds the CPUs spent in each mode. # TYPE node_cpu_seconds_total counter node_cpu_seconds_total{cpu="0",mode="idle"} 12345.67
2. nvidia_gpu_exporterのインストール(NVIDIAカード搭載環境のみ)
GPUサーバーの場合は `utkuozdemir/nvidia_gpu_exporter` を追加します。DCGM不要で `nvidia-smi` がインストール済みであれば動作します。$ cd /tmp $ wget https://github.com/utkuozdemir/nvidia_gpu_exporter/releases/download/v1.2.1/nvidia_gpu_exporter_1.2.1_linux_amd64.tar.gz $ tar xvf nvidia_gpu_exporter_1.2.1_linux_amd64.tar.gz $ sudo cp nvidia_gpu_exporter /usr/local/bin/ $ sudo chmod +x /usr/local/bin/nvidia_gpu_exporter
$ sudo nano /etc/systemd/system/nvidia_gpu_exporter.service [Unit] Description=NVIDIA GPU Exporter After=network.target [Service] User=root Type=simple ExecStart=/usr/local/bin/nvidia_gpu_exporter [Install] WantedBy=multi-user.target
$ sudo systemctl daemon-reload $ sudo systemctl enable --now nvidia_gpu_exporter # GPU使用率の取得確認 $ curl -s http://localhost:9835/metrics | grep nvidia_smi_utilization_gpu nvidia_smi_utilization_gpu_ratio{uuid="GPU-xxxx-xxxx",name="NVIDIA GeForce RTX 4090"} 0.87
- job_name: 'nvidia_gpu' static_configs: - targets: ['localhost:9835']
GrafanaをインストールしてOllamaダッシュボードを構築する
1. Grafanaのインストール
GrafanaはGrafana Labs公式のaptリポジトリから導入します。$ sudo apt-get install -y apt-transport-https software-properties-common wget $ sudo mkdir -p /etc/apt/keyrings $ wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null $ echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list $ sudo apt-get update $ sudo apt-get install -y grafana $ sudo systemctl enable --now grafana-server
$ sudo systemctl status grafana-server * grafana-server.service - Grafana instance Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled) Active: active (running) since Fri 2026-07-04 10:10:00 JST
2. Prometheusデータソースの登録
左メニューの「Connections」→「Data sources」→「Add data source」から Prometheus を選択します。「Connection」欄の URL に `http://localhost:9090` を入力して「Save & Test」をクリックします。「Data source is working」と表示されれば接続完了です。
データソースが複数ある場合(本番・ステージング環境など)は、Name欄で判別しやすい名前を付けておくと管理が楽になります。
3. ダッシュボードのパネル構成例
Grafanaで作成するOllamaダッシュボードの典型的なパネル構成は以下の通りです。・リクエスト毎秒(RPS): `rate(ollama_requests_total[5m])` — モデルごとの処理量を時系列で把握
・P95レスポンス時間: `histogram_quantile(0.95, rate(ollama_request_duration_seconds_bucket[5m]))` — 遅延の実態を掴む
・エラー率: `rate(ollama_requests_total{status="error"}[5m]) / rate(ollama_requests_total[5m])` — モデル異常の早期検知
・GPU使用率: `nvidia_smi_utilization_gpu_ratio * 100` — LLM処理中のGPU負荷
・VRAM使用率: `nvidia_smi_memory_used_bytes / nvidia_smi_memory_total_bytes * 100` — メモリ逼迫の検知
・ノードCPU使用率: `100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)` — CPU起因の遅延切り分け
Grafana Labsの公式ダッシュボードギャラリー(grafana.com/grafana/dashboards)では、NodeExporter Full(ID 1860)やNVIDIA GPU(ID 14574)がすぐに使えます。これらをインポートしてOllamaのパネルを手動追加するのが最短構成です。
アラートはGrafanaの「Alert rules」から設定できます。P95レスポンスが10秒を超えたらアラート、VRAM使用率が90%を超えたらアラート、という2本を最初に設定しておくと実務的なスタートラインになります。Slack通知は「Alerting」→「Contact points」でWebhook URLを登録するだけで動作します。
よくあるトラブルと対処法|メトリクスが取れない・Grafanaに繋がらない
PrometheusターゲットがDOWNのまま最初に確認するのはファイアウォールです。UFWが有効な場合、Prometheusからexporterへの通信がブロックされます。
# UFW有効確認 $ sudo ufw status # 各ポートを社内ネットワークに限定して開放する例(CIDRは環境に合わせて変更) $ sudo ufw allow from 192.168.0.0/24 to any port 9090 $ sudo ufw allow from 192.168.0.0/24 to any port 9100 $ sudo ufw allow from 192.168.0.0/24 to any port 9835 $ sudo ufw allow from 192.168.0.0/24 to any port 3000
Ollamaのバージョンが古いとメトリクスエンドポイントが存在しません。`ollama --version` で確認し、0.5.0以上にアップデートします。
$ ollama --version ollama version is 0.3.14 # 0.5.0未満なのでアップデートする $ curl -fsSL https://ollama.com/install.sh | sh $ ollama --version ollama version is 0.5.7
`nvidia-smi` がインストールされていない、またはGPUドライバが正しく動作していない場合に起動失敗します。
# まずnvidia-smiが動くか確認 $ nvidia-smi +-----------------------------------------------------------------------------+ | NVIDIA-SMI 550.90.07 Driver Version: 550.90.07 CUDA Version: 12.4 | |-------------------------------+----------------------+----------------------+ # nvidia_gpu_exporterのエラーをログで確認 $ journalctl -u nvidia_gpu_exporter -n 20 --no-pager
Grafanaのグラフが「No data」になる
スクレイプ直後はデータが溜まっていないため、時間範囲を「Last 5 minutes」から「Last 1 hour」以上に広げて確認します。それでも解決しない場合は、Grafanaのデータソース設定でURLを `http://localhost:9090` から `http://127.0.0.1:9090` に変更して再確認してください。環境によってlocalhostが解決できないケースがあります。
prometheus.ymlの変更が反映されない
`sudo systemctl reload prometheus` ではなく `sudo systemctl restart prometheus` を実行してしまうと、収集済みデータには影響しませんがしばらく収集が止まります。設定変更はリロードで十分です。`promtool check config /etc/prometheus/prometheus.yml` で構文チェックをしてからリロードするのが安全です。
まとめ|OllamaチームサーバーをPrometheus+Grafanaで本番運用レベルに引き上げる
Prometheus+Grafanaの監視スタックを導入すると、Ollamaサーバーの状態を常時可視化できます。「なんとなく重い」という感覚頼りの運用から、数値に基づく判断に移れます。今回の手順を整理すると以下の通りです。
| 手順 | コンポーネント | ポート | 主な取得指標 |
|---|---|---|---|
| 1 | Prometheus | 9090 | メトリクスDBと管理UI・アラート評価エンジン |
| 2 | node_exporter | 9100 | CPU・メモリ・ディスクI/O・ネットワーク |
| 3 | nvidia_gpu_exporter | 9835 | GPU使用率・VRAM使用量・温度・消費電力 |
| 4 | Ollama /metrics | 11434 | リクエスト数・レスポンス時間・エラー率・ロードモデル数 |
| 5 | Grafana | 3000 | ダッシュボード描画・アラート通知(Slack等) |
20年以上のサーバー管理経験から言えば、監視のないサーバーは「動いているのか止まっているのかわからない箱」です。Prometheusによる定点観測は、障害が起きる前に手を打てる数少ない手段です。
構築の手間は1日以内で収まるので、チーム運用を始めたタイミングで導入することを強く勧めます。次のステップとして、GrafanaをNginxリバースプロキシ経由でHTTPS公開する構成と組み合わせると、監視ダッシュボードを社外からも安全に参照できるようになります。
OllamaサーバーをGPU環境で構築・監視まで2日間のハンズオンで体験する
Prometheus監視スタックの構築からGrafanaダッシュボード設計まで一気通貫で習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。
・Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
・社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
・ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます