ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
セキュリティ運用

OpenClawサービス監視とアラート設定チュートリアル

· 17 分で読了

はじめに

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つのエリアに分けることをお勧めします:

  1. 概要行:サービス状態、稼働時間、アクティブチャネル数、ロード済みスキル数
  2. メッセージ統計行:メッセージレート、チャネル別メッセージ量、レスポンス遅延分布
  3. モデル呼び出し行:API 呼び出しレート、エラー率、各プロバイダーの呼び出し割合
  4. リソース監視行:メモリ使用量、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 ソリューションへとアップグレードすることをお勧めします。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応