Checker API
GET /api/checker/collisions— 重複 S/G/Port をリスト取得GET /api/checker/nmos— NMOS 差分を取得GET /api/checker/latest?kind=collisions— 直近実行結果の要約
checker
衝突検出と NMOS 差分チェックを自動化し、24時間体制で運用を監視するための設定手順と API を解説します。
Checker 機能を使って、アドレス衝突や NMOS デバイスとの差分を自動検出できます。
0 * * * * で毎時0分)を選択できます。
GET /api/checker/latest を呼び出して取得できます。
MQTT_ENABLED=false に設定し、外部システムから GET /api/checker/latest を定期的にポーリングします。
実行履歴は scheduled_jobs テーブルの last_run_* カラム(Automationタブでも参照可能)および Audit ログに記録され、誰がいつ設定を変更したか追跡できます。
アドレス衝突を自動で検出し、Slack に通知するまでの流れを実装します。
まず、現在の衝突状況を確認します。
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://localhost:8443/api/checker/collisions
→ 重複している Source/Group/Port の組み合わせが JSON で返ってきます。
10分ごとに自動実行するように設定します。
curl -X PUT https://localhost:8443/api/automation/jobs/collision-checker \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"schedule_type": "interval",
"interval_minutes": 10,
"enabled": true
}'
→ ジョブが有効化され、10分ごとに衝突チェックが実行されます。
直近の衝突結果を /api/checker/latest から取得し、Slack へ通知する例です。
import axios from "axios";
async function notifyCollision() {
const resp = await fetch("https://localhost:8443/api/checker/latest?kind=collisions", {
headers: { Authorization: `Bearer ${process.env.MMAM_TOKEN}` }
});
if (!resp.ok) throw new Error("API error");
const data = await resp.json();
if (data.status !== "success" || !data.result) return;
const collisions = data.result.results.flatMap(group => group.entries);
if (!collisions.length) return;
await axios.post(process.env.SLACK_WEBHOOK_URL, {
text: `⚠️ アドレス衝突を検出しました`,
attachments: collisions.map(entry => ({
color: "danger",
fields: [{
title: entry.value,
value: `Flow IDs: ${entry.flows.map(f => f.flow_id).join(", ")}`,
short: false
}]
}))
});
}
notifyCollision().catch(console.error);
GET /api/checker/collisions — 重複 S/G/Port をリスト取得GET /api/checker/nmos — NMOS 差分を取得GET /api/checker/latest?kind=collisions — 直近実行結果の要約GET /api/automation/jobs — 全ジョブの一覧取得PUT /api/automation/jobs/{id} — スケジュール設定を更新POST /api/automation/jobs/{id}/enable — ジョブの有効化/無効化GET /api/automation/summary — ダッシュボード用のサマリ取得