InfraGuard

概要ランディング画面の読み方

可用性とセキュリティの総合スコア、KPI カード、検知ドーナツ、全幅のライブサーバーストリップを1画面で読み取る、統合されたホームコンソールです。

概要 — 何をする画面か

概要 はログイン後の最初の画面(/)です。可用性 と セキュリティ を 単一のペイン で貫きます — 上段には総合ヘルスゲージ、KPI カード、検知ドーナツを表示し、下段にはサーバー群の 負荷 / メモリ / ネットワーク / ストレージ の時系列ストリップを表示します。

主な特徴:

すべての数値は、Laravel の外で動作するコレクターが DB に投入した 実データ です。レガシー DB に到達できない、または空の場合、コントローラーは構造的に同一の モックアップ(デモ) へグレースフルにフォールバックします。その場合 source は mockup、rev は 0 となるため、フロントエンドは再描画をスキップします。

いつ使うか

レイアウト

トップヒーロー

タイトルとタグライン(「即時対応 · 自動準備 · 常時復元」)に加え、右側には収集タイムスタンプ(stamp)とホスト数、LIVE/PAUSED トグル、全画面 ボタンを配置します。

ヘルススコア(左)

2つのドーナツゲージ(可用性、セキュリティ)と、その下の 2列のエビデンスパネル:

列 6つの記号(ホバーでツールチップ) スコアの出所
可用性の根拠 生存性 · 負荷 · メモリ · ディスク · RAID · バックアップ aggregate() の avail_parts(継続時間を考慮した合成 0–100)
セキュリティの根拠 IDS · AI · Web · ファイアウォール · 評判 · TLS PostureService(24時間の未対応残余の割合をヘルススコアへ正規化)

各記号は metric_cls によって色付けされます: 90以上は good · 70以上は warn · それ未満は crit · データなしは —(na)を表示。

KPI カード(中央 3×2 + 条件付き2枚)

カード 値 サブ行
サーバー オンライン/合計 オフライン数、または「すべてオンライン」
負荷ピーク 表示中のセットにおける最大負荷 ホスト · 「N分前」
メモリピーク 表示中のセットにおける最大メモリ% ホスト · 「N分前」
ネットワークピーク 最大パケット数(In/Out の大きい方) ホスト · 「N分前」
脅威 オープン(= Kitsune のブロック) 本日のブロック数
バックアップ 14日間の成功率 % 24時間の実行回数 · 直近の所要時間 · 主要な種別
Web サービス(条件付き) up/合計 最も遅いホスト · ms
データベース(条件付き) up/合計 最も多忙な DB · 24時間のスロー · 待機

負荷/メモリ/ネットワークの ピークはフロントエンドで「現在表示中のサーバー(current_servers)にわたる系列の最大値」として計算されます。 つまり 分割/ページを変更すると、ピークカードが対象とするサーバーも変わります。 「N分前」のラベルは、そのピークが最初に観測された seq 位置(times[idx])から導出されます。

サービス性能パネル(右)

Web と DB を1つずつコンパクトなゲージとして表示します — 合算ではなく個別 なので、暴走した1サービスが平均に埋もれません。ドロップダウン(「サービスを切り替え」)で対象を変更します:

検知ドーナツ(右)

24時間の検知を4カテゴリ(IDS/AI/Web/スキャン)で表示します。ECharts のドーナツ + HTML の凡例(名称 · 簡略カウント · シェアバー)。

下段 — 全幅のサーバーストリップ

Server stats ツールバー(RAID チップ · 「free <1G」チップ · 高さスライダー · レンジラベル · 時間レンジ切り替え · 分割ボタン)の下に、4本のストリップがあります:

使い方

  1. まずゲージ — 2つのスコアの色を読みます。低い場合は、下部の 6つのエビデンス記号 のうち赤(crit)/ 橙(warn)のセルにホバーし、どの軸が減点されているかを確認します。
  2. KPI カード — 外れ値(オフラインのサーバー、脅威、バックアップ成功率)を探します。ピークカードの「N分前」でイベント時刻を特定します。
  3. 時間ウィンドウの切り替え — 右下の 6h · 24h · 3d ボタンでストリップのウィンドウを変更します。選択は localStorage(infr:range:overview)に保存され、range パラメーターでサーバーへ再問い合わせされます。KPI カードとヘルスゲージは24時間という概念のまま固定です(再ウィンドウ化されるのはストリップだけです)。
  4. 画面分割 — All · 2 · 3 ボタンでサーバー群をページ(◀▶)に分割します。複数モニターへの展開に便利です。
  5. 高さとスケール — スライダーでストリップの高さ(80–360px)を設定し、各ストリップの Lin/Log で y 軸のスケールを設定します(スパイクの多いホストに有効)。
  6. ライブ / 全画面 — ヒーローの LIVE トグルでポーリングをオン/オフし、full screen は上部ナビゲーションバーを隠して監視ウォールモードにします。

レンジ → ポイント数

下段ストリップのウィンドウは、server_status の収集間隔(約5分)に基づいて seq のポイント数へ換算されます。

range seq ポイント数
6h 72
24h 288(デフォルト)
3d 864

ライブ更新(ポーリング)の挙動

every 30s  ──▶  GET /overview/rev   (cheap latest seq)
                   │  rev changed?
                   ├─ no  → skip (0 bandwidth)
                   └─ yes → GET /overview/live?range=<window>  → swap data + re-render charts

データソース

すべて 読み取り専用 です。アプリはレガシーのリソーステーブルをそのまま読みます。

軸 テーブル / サービス 接続 用途
サーバー群 / 系列 server_status (loadavg·free·df-*·traffic-out) legacy(MAIN) 負荷/メモリ/ディスク/ネットワークのストリップ、生存性
RAID storage_status (status_summary) legacy Optimal/Degraded/Failed のエビデンス
バックアップ backup_history legacy 14日間の成功率 · 直近 · 種別
IDS suricata_alert_ct legacy_glory 検知ドーナツ · セキュリティの根拠(sev 1·2)
AI 異常 kitsune_detail_log (is_blocked) legacy_glory 検知 · 脅威 · セキュリティの根拠
Web 攻撃 nginx_meta_ct (is_suspicious) legacy_glory 検知 · 不審リクエスト比率
評判 / ブロック blacklist_info legacy_glory 本日のブロック · 新規ブロックの圧力
TLS 衛生 suricata_tls_ct (version) legacy_glory 弱い TLS(<1.2)の比率
Web サービス性能 WebMetricService::dashboard() (infr_web_metric) central Web の KPI · 性能パネル
DB 性能 DbCollectorService::latest() · infr_db_metric · infr_collector (access=database) central DB の KPI · 性能パネル
ファイアウォール露出 FirewallService::dashboard() (infr_instance_firewall) central セキュリティの根拠 fw

総合スコアの計算式

可用性 = データが存在する軸の加重平均(重みは再正規化されます)。各軸は表示ウィンドウ全体を見て、「どれだけ長く(継続時間)、どれだけ深刻に(ピーク)」逸脱したかで減点します。

軸 重み 減点の根拠
生存性 0.30 初回レポート以降の無応答サイクルの割合
負荷 0.15 ロードアベレージ 8以上 の逸脱(16以上で完全に過負荷)
メモリ 0.15 使用率 99% 超(100% で完全に逼迫)
ディスク 0.15 ルートの空き 1G 未満(計測されたパーティションのみ、0G で完全にリスク状態)
RAID 0.15 Degraded/Failed のノードは 0
バックアップ 0.10 14日間の成功率

セキュリティ = 6つのエビデンス指標(存在するもののみ)の加重平均。各指標は24時間の glory 計測値をヘルススコア(0–100)へ正規化します — 量/比率が大きいほど減点も大きくなります(最大減点 45 → 下限 55)。すべての指標が利用できない場合にのみ、detections() のヒューリスティックなスカラー値へフォールバックします。

指標 重み ソース(24時間) 減点が最大になる値
ids 0.22 高深刻度(sev 1·2)の IDS 警報件数 200
ai 0.22 Kitsune のブロック件数 500
web 0.20 nginx の不審リクエスト 比率 % 8%
rep 0.14 本日の新規ブロック IP 件数 400
tls 0.12 弱い TLS(<1.2)の 比率 % 5%
fw 0.10 パブリック IP の critical ポート ×2 + critical + 未管理の露出 200

キャッシュ TTL

対象 TTL キー
概要の実データ(build) 30s infr:overview:data:v1:{points}
サービス性能パネル(web/db) 15s infr:ov:perf
セキュリティの根拠(PostureService) 300s infr:sec:posture:v1:<range>

アクセス権限

トラブルシューティングと FAQ

Q. ゲージ/カードがデモのような値を表示します。 これは、レガシー DB(legacy/legacy_glory)の接続が失敗した、またはデータが無いときに発動するモックアップのフォールバックです。ペイロードの source が mockup、rev が 0 であれば、実 DB が利用できていません。DB の接続性とコレクターの取り込みを確認してください(管理 ▸ コレクター)。

Q. エビデンス記号が — を表示します。 その軸にデータがありません(重み付けから除外されます)。例えばファイアウォール CMDB(infr_instance_firewall)が空の場合、fw は — を表示します — 必要なのはファイアウォール資産であり、旧来の firewall_status ではありません。RAID は、一致する storage_status.host が存在しない場合に除外されます。

Q. データが更新されません。 (1) ヒーローのトグルが PAUSED になっていないか、(2) タブがバックグラウンドにないか(非表示の間はポーリングが停止します)を確認してください。コレクターは Laravel の外でおよそ 5分間隔 で取り込むため、30秒ポーリングでも実際の値は数分遅れることがあります。rev が変化していなければ、重いペイロードは取得されません。

Q. 負荷ピークのサーバーがビューごとに異なります。 ピークは 現在のビュー(分割/ページ)のサーバー集合 に対して計算されます。全サーバーを対象に判断するには、分割を All に設定してください。

Q. ネットワークの In が常に 0 です。 server_status にはエイリアス単位の受信ソースが無いため、net_in は 0 で埋められ、traffic-out(パケット)のみが計測されます。詳細な帯域幅については トラフィック(ネットワーク I/O) を参照してください。

Q. レンジを変えても KPI/ゲージが動きません。 仕様どおりです。range(6h/24h/3d)は 下段のストリップにのみ 適用され、KPI カードとヘルスゲージは24時間固定の概念です。

関連項目

개요 — 헬스 스코어·근거 심볼·서버 통계
개요 — 헬스 스코어·근거 심볼·서버 통계