1270 文字
6 分

ZabbixでDockerコンテナをリソース監視する:Coolify環境の可視化

概要#

  • Zabbix agent 2 + Docker テンプレートで、コンテナ単位のCPU・メモリ・ネットワークを自動検出・監視
  • Coolify環境の30+コンテナのリソース使用量を可視化するダッシュボードを構築
  • 「メモリ食いすぎコンテナ」や「CPU使用率の異常スパイク」を検知できるようになった

第5回までで、Coolify + Cloudflare Tunnelの基盤は完成した。でも、監視がなければ運用とは呼べない。 30個以上のコンテナが動いていて、どれがどれだけリソースを使っているか見えないのは怖い。

なぜZabbixなのか#

監視ツールの選択肢はいくつかある。

ツール特徴セルフホストAPI
Zabbixエンタープライズ級。テンプレート豊富✅ REST API
Prometheus + Grafanaメトリクス特化。Kubernetes向き
DatadogSaaS。簡単だが高い
Uptime Kuma死活監視特化。軽量

Zabbixを選んだ理由:

  1. Dockerコンテナの自動検出(LLD) が標準テンプレートでできる
  2. SNMP対応 でルーター(RTX1200)やNAS(QNAP)も同じ画面で監視できる
  3. REST APIがある から第5回で書いた「API-first」の基準を満たす
  4. Coolifyでデプロイできる。Dockerイメージが公式で提供されている

Zabbixの構成#

Coolifyでデプロイ済みのZabbix構成。Docker Composeで3コンテナ。

services:
zabbix-server:
image: zabbix/zabbix-server-mysql:alpine-7.4-latest
ports:
- "10051:10051"
environment:
- DB_SERVER_HOST=mysql
- MYSQL_DATABASE=zabbix
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:alpine-7.4-latest
environment:
- ZBX_SERVER_HOST=zabbix-server
- PHP_TZ=Asia/Tokyo
mysql:
image: mysql:8.0
volumes:
- mysql-data:/var/lib/mysql

ポイントは、Zabbix Server自体はCoolifyのDockerネットワーク内で動いていること。監視対象のコンテナと同じホスト上にいるから、Zabbix agentで直接Dockerソケットにアクセスできる。

Dockerコンテナ監視の設定#

1. Zabbix agent 2のインストール#

Zabbix agent 2はホストOS側にインストールする必要がある。コンテナ内からDockerソケットにアクセスするのは設定が面倒なので、ホストに直接入れた方がシンプル。

Terminal window
# Debian/Ubuntu
wget https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.4+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.4+ubuntu24.04_all.deb
sudo apt update
sudo apt install zabbix-agent2 zabbix-agent2-plugin-*

2. Dockerソケットへのアクセス権設定#

Terminal window
# zabbix ユーザーを docker グループに追加
sudo usermod -aG docker zabbix
# agent2 を再起動
sudo systemctl restart zabbix-agent2

3. Zabbix agent 2 の設定#

/etc/zabbix/zabbix_agent2.conf の主要設定:

Server=172.16.238.1 # Zabbix ServerのIPアドレス
ServerActive=172.16.238.1
Hostname=gmk # ホスト名

172.16.238.1 はCoolifyのDockerネットワーク(coolify bridge)のゲートウェイIP。Zabbix ServerコンテナからホストのAgent 2に接続するため、このアドレスを使う。

4. 「Docker by Zabbix agent 2」テンプレートの適用#

Zabbix Web UI → Data Collection → Hosts → 対象ホスト → Templates で 「Docker by Zabbix agent 2」 を追加。

これだけで、ホスト上のすべてのDockerコンテナが自動検出(LLD: Low-Level Discovery) される。

自動検出されるメトリクス#

1コンテナあたり約100個のメトリクスが自動で収集される。

カテゴリ主なメトリクス
CPUCPU使用率(%)、ユーザーモード/カーネルモード使用時間
メモリ使用量、最大使用量、制限値、キャッシュ、RSS
ネットワーク受信/送信バイト数、パケット数、ドロップ数、エラー数
ブロックI/O読み取り/書き込みバイト数
状態起動時刻、ステータス(running/stopped/paused)

30コンテナ × 100メトリクス = 約3,000データポイント が自動で監視される。手動で設定する必要ゼロ。

ダッシュボードの構築#

Zabbix APIでダッシュボード作成#

第5回で「API-firstが重要」と書いたけど、まさにここでその恩恵を受ける。ダッシュボードをGUIでポチポチ作るのではなく、APIで一発で作成した。

Terminal window
curl -s -X POST https://zabbix.teraren.com/api_jsonrpc.php \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
"jsonrpc": "2.0",
"method": "dashboard.create",
"params": {
"name": "Docker Containers",
"pages": [{
"widgets": [
{"type":"graph","name":"Coolify: CPU",
"x":0,"y":0,"width":36,"height":5,
"fields":[{"type":6,"name":"graphid","value":"5862"}]},
{"type":"graph","name":"Coolify: Memory",
"x":36,"y":0,"width":36,"height":5,
"fields":[{"type":6,"name":"graphid","value":"5867"}]}
]
}]
},
"id": 1
}'

作成したダッシュボードには、Coolify本体・Traefik Proxy・PostgreSQL・Sentinelのコンテナのリソースグラフを配置。

可視化で見えてきたこと#

ダッシュボードを見て気づいたことがいくつかある。

コンテナメモリ使用量気づき
coolify-sentinel5.2 GBCoolifyの全コンテナヘルスチェックを担当。メモリ食いすぎ
coolify178 MBLaravel アプリ本体。妥当
coolify-proxy (Traefik)84 MBリバースプロキシ。軽量
coolify-redis81 MBセッション・キャッシュ。妥当
coolify-realtime55 MBWebSocket。妥当
coolify-db (PostgreSQL)44 MB設定データのみ。軽量

coolify-sentinelが5.2GBも使っているのは監視なしでは絶対に気づけなかった。30+コンテナのヘルスチェックを常時回しているからだろうけど、32GBのRAMのうち16%を1つのヘルスチェッカーが使っているのは気になる。

アラート設定#

コンテナ監視のアラートは「Docker by Zabbix agent 2」テンプレートに最初から含まれている。

トリガー条件重要度
Container stoppedコンテナが停止Average
High memory usageメモリ使用率 > 90%Warning
Container restart detected再起動を検知Information

追加でカスタムトリガーを設定する場合は、Zabbix APIでも可能。

まとめ#

Zabbix + Docker by Zabbix agent 2 テンプレートで、設定ほぼゼロでコンテナ単位のリソース監視ができる。3,000以上のメトリクスが自動収集されて、ダッシュボードで可視化。sentinelの5.2GBメモリ問題のように、監視しないと絶対に気づけない問題が見つかる。

Coolifyの「API-first」思想は、監視との組み合わせでさらに威力を発揮する。「プロンプトでデプロイして、ダッシュボードで監視する」。これがセルフホストの運用ルーティン。

シリーズ記事#

  1. Vercel月額$42→自宅サーバ月額$0。Coolifyで個人サービス基盤を作った話
  2. Coolifyインストールから「プロンプトでデプロイ」まで:Claude Code MCP実践
  3. Coolifyハンズオン:Hono・Go・Railsを実際にデプロイしてみる
  4. Cloudflare Tunnel×Coolify:自宅サーバを安全に外部公開する
  5. API-firstなインフラが生き残る:LLM時代のセルフホスト戦略
  6. ZabbixでDockerコンテナをリソース監視する:Coolify環境の可視化(この記事)
  7. Coolify環境のバックアップ戦略:6つのDBを自動ダンプ+復旧手順
  8. Coolify環境のログ管理と障害対応:Docker + Zabbix + Discordで運用を回す
ZabbixでDockerコンテナをリソース監視する:Coolify環境の可視化
https://blog.teraren.com/posts/coolify-zabbix-container-monitoring/
作者
Yuki Matsukura
公開日
2026-03-15
ライセンス
CC BY-NC-SA 4.0
この記事が役に立ったら
GitHub Sponsorsで応援できます

コメント