はじめに
OpenClaw は長期間稼働するAIアシスタントサービスであり、安定性が極めて重要です。サービスが中断すると、接続されているすべてのチャットチャネルが応答を失います。本記事では、ゼロから完全な監視・アラートシステムを構築し、問題を最速で発見・対処する方法をご紹介します。
一、ヘルスチェックエンドポイント
OpenClaw Gateway はデフォルトでポート 18789 で稼働しており、内蔵のヘルスチェックエンドポイントを提供しています。
1.1 基本的なヘルスチェック
# サービスの生存確認
curl -s http://localhost:18789/health
# 期待されるレスポンス
# {"status":"ok","uptime":3600,"version":"1.2.0"}
1.2 詳細なステータスチェック
# 各チャネルの接続状態を含む詳細情報の取得
curl -s http://localhost:18789/health/detail | jq .
レスポンス例:
{
"status": "ok",
"uptime": 86400,
"version": "1.2.0",
"channels": {
"whatsapp": "connected",
"telegram": "connected",
"discord": "connected"
},
"model": {
"provider": "claude",
"status": "available"
},
"memory": {
"heapUsed": "128MB",
"heapTotal": "256MB"
}
}
二、Uptime 監視ソリューション
2.1 Cron による定期チェック
最もシンプルな監視方法は、crontab でサービスの状態を定期的にチェックすることです。
# crontab の編集
crontab -e
# 5分ごとにチェックし、失敗時にメール通知を送信
*/5 * * * * curl -sf http://localhost:18789/health > /dev/null || echo "OpenClaw サービス異常!時刻:$(date)" | mail -s "OpenClaw Alert" [email protected]
障害検出時にサービスを自動再起動したい場合:
#!/bin/bash
# /usr/local/bin/openclaw-watchdog.sh として保存
HEALTH_URL="http://localhost:18789/health"
LOG_FILE="/var/log/openclaw-watchdog.log"
if ! curl -sf --max-time 10 "$HEALTH_URL" > /dev/null 2>&1; then
echo "[$(date)] ヘルスチェック失敗、OpenClaw を再起動しています..." >> "$LOG_FILE"
openclaw restart
sleep 15
if curl -sf --max-time 10 "$HEALTH_URL" > /dev/null 2>&1; then
echo "[$(date)] 再起動成功、サービスが復旧しました" >> "$LOG_FILE"
else
echo "[$(date)] 再起動後もサービスが利用不可、手動対応が必要です!" >> "$LOG_FILE"
# 緊急通知の送信
curl -s -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" \
-d chat_id="<CHAT_ID>" \
-d text="🚨 OpenClaw サービスの再起動に失敗しました。手動対応が必要です!"
fi
fi
# crontab に追加、3分ごとに実行
*/3 * * * * /usr/local/bin/openclaw-watchdog.sh
2.2 Uptime Kuma による監視
Uptime Kuma は美しい Web インターフェースを備えたオープンソースの監視ツールです。
# Docker で Uptime Kuma をデプロイ
docker run -d \
--name uptime-kuma \
--restart=always \
-p 3001:3001 \
-v uptime-kuma:/app/data \
louislam/uptime-kuma:latest
Uptime Kuma で監視項目を追加します:
| 設定項目 | 値 |
|---|---|
| 監視タイプ | HTTP(s) |
| 名前 | OpenClaw Gateway |
| URL | http://サーバーIP:18789/health |
| ハートビート間隔 | 60秒 |
| リトライ回数 | 3 |
| タイムアウト | 10秒 |
| 期待するステータスコード | 200 |
三、Prometheus メトリクス収集
3.1 Prometheus エンドポイントの有効化
OpenClaw の設定ファイルで Prometheus メトリクスのエクスポートを有効にします:
// ~/.config/openclaw/openclaw.json5
{
"monitoring": {
"prometheus": {
"enabled": true,
"port": 9191,
"path": "/metrics"
}
}
}
サービスを再起動して設定を反映させます:
openclaw restart
3.2 利用可能なメトリクスの確認
curl -s http://localhost:9191/metrics
OpenClaw がエクスポートする主要なメトリクスは以下の通りです:
| メトリクス名 | タイプ | 説明 |
|---|---|---|
openclaw_messages_total |
Counter | 処理されたメッセージの総数 |
openclaw_response_duration_seconds |
Histogram | レスポンス時間の分布 |
openclaw_active_channels |
Gauge | アクティブなチャネル数 |
openclaw_model_requests_total |
Counter | モデル API の呼び出し回数 |
openclaw_model_errors_total |
Counter | モデル API のエラー回数 |
openclaw_memory_heap_bytes |
Gauge | Node.js ヒープメモリ使用量 |
openclaw_skills_loaded |
Gauge | ロード済みスキル数 |
3.3 Prometheus 収集の設定
# prometheus.yml
scrape_configs:
- job_name: 'openclaw'
scrape_interval: 15s
static_configs:
- targets: ['localhost:9191']
metrics_path: '/metrics'
四、Grafana 可視化ダッシュボード
4.1 Grafana のインストール
# Docker でインストール
docker run -d \
--name grafana \
--restart=always \
-p 3000:3000 \
-v grafana-storage:/var/lib/grafana \
grafana/grafana-oss:latest
4.2 OpenClaw ダッシュボードの作成
Grafana に Prometheus データソースを追加した後、以下の主要パネルを作成します:
メッセージ処理レートパネル(PromQL):
rate(openclaw_messages_total[5m])
平均レスポンス遅延パネル:
histogram_quantile(0.95, rate(openclaw_response_duration_seconds_bucket[5m]))
モデル呼び出しエラー率パネル:
rate(openclaw_model_errors_total[5m]) / rate(openclaw_model_requests_total[5m]) * 100
メモリ使用量パネル:
openclaw_memory_heap_bytes / 1024 / 1024
4.3 推奨ダッシュボードレイアウト
ダッシュボードは以下の4つのエリアに分けることをお勧めします:
- 概要行:サービス状態、稼働時間、アクティブチャネル数、ロード済みスキル数
- メッセージ統計行:メッセージレート、チャネル別メッセージ量、レスポンス遅延分布
- モデル呼び出し行:API 呼び出しレート、エラー率、各プロバイダーの呼び出し割合
- リソース監視行:メモリ使用量、CPU 使用量(Node Exporter との連携が必要)、ディスク容量
五、アラート通知の設定
5.1 Grafana アラートルール
Grafana でアラートルールを設定します:
# サービス利用不可アラート
- alert: OpenClawDown
expr: up{job="openclaw"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "OpenClaw サービスが利用不可です"
description: "OpenClaw サービスが2分以上応答を停止しています"
# 高エラー率アラート
- alert: OpenClawHighErrorRate
expr: rate(openclaw_model_errors_total[5m]) > 0.1
for: 5m
labels:
severity: warning
annotations:
summary: "OpenClaw のモデル呼び出しエラー率が高すぎます"
# メモリアラート
- alert: OpenClawHighMemory
expr: openclaw_memory_heap_bytes > 512 * 1024 * 1024
for: 10m
labels:
severity: warning
annotations:
summary: "OpenClaw のメモリ使用量が 512MB を超えています"
5.2 Telegram アラート通知
# Grafana で Telegram コンタクトポイントを設定
# 設定 -> コンタクトポイント -> 新規作成
# タイプ:Telegram
# Bot Token: ご自身の Bot Token
# Chat ID: ご自身の Chat ID
5.3 Webhook アラート通知
企業向けチャットツール(WeChat Work、DingTalk、Feishu など)を使用している場合、Webhook 通知を設定できます:
# WeChat Work Webhook の例
curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"msgtype": "markdown",
"markdown": {
"content": "## OpenClaw アラート\n> サービス状態異常\n> 時刻:'"$(date)"'\n> 早急に確認してください"
}
}'
5.4 メールアラート通知
Grafana の設定ファイルでメール送信を有効にします:
# /etc/grafana/grafana.ini
[smtp]
enabled = true
host = smtp.example.com:587
user = [email protected]
password = your_password
from_address = [email protected]
from_name = OpenClaw Monitor
六、リソース使用量の監視
6.1 Node Exporter によるシステムリソース監視
# Node Exporter のインストール
docker run -d \
--name node-exporter \
--restart=always \
--net="host" \
--pid="host" \
-v "/:/host:ro,rslave" \
quay.io/prometheus/node-exporter:latest \
--path.rootfs=/host
6.2 主要なシステムメトリクス
| 注目メトリクス | 正常範囲 | アラート閾値 |
|---|---|---|
| CPU 使用率 | < 50% | > 80% が5分間持続 |
| メモリ使用率 | < 70% | > 90% が5分間持続 |
| ディスク使用率 | < 80% | > 90% |
| ネットワーク接続数 | < 1000 | > 5000 |
6.3 OpenClaw ログの監視
openclaw logs コマンドと組み合わせて異常ログを監視します:
# エラーログのリアルタイム監視
openclaw logs | grep -i "error\|warn\|fail" --line-buffered
# Loki + Promtail でログを収集(オプション)
# OpenClaw のログを Loki に転送し、集中管理とクエリを行います
七、監視システムのまとめ
完全な OpenClaw 監視システムには以下のレイヤーを含めるべきです:
┌─────────────────────────────────────────────┐
│ アラート通知レイヤー │
│ Telegram / Email / Webhook / WeChat Work │
├─────────────────────────────────────────────┤
│ 可視化レイヤー │
│ Grafana Dashboard │
├─────────────────────────────────────────────┤
│ データ収集レイヤー │
│ Prometheus + Node Exporter + Loki │
├─────────────────────────────────────────────┤
│ サービスレイヤー │
│ OpenClaw Gateway (:18789) │
│ Prometheus Metrics (:9191) │
└─────────────────────────────────────────────┘
以上の設定により、OpenClaw サービスの包括的な監視が実現でき、あらゆる異常をタイムリーに発見・対処できるようになります。最もシンプルな cron ヘルスチェックから始めて、段階的に完全な Prometheus + Grafana ソリューションへとアップグレードすることをお勧めします。