概要 — 何をする画面か
概要 はログイン後の最初の画面(/)です。可用性 と セキュリティ を 単一のペイン で貫きます — 上段には総合ヘルスゲージ、KPI カード、検知ドーナツを表示し、下段にはサーバー群の 負荷 / メモリ / ネットワーク / ストレージ の時系列ストリップを表示します。
主な特徴:
- 2つの統合された総合スコア — 可用性ゲージ(セキュリティ以外の全テレメトリの加重合成)と、その横にセキュリティゲージ(24時間の検知エビデンスの加重合成)。
- 8枚の KPI カード — サーバー、負荷ピーク、メモリピーク、ネットワークピーク、脅威、バックアップ、および(データが存在する場合)Web サービスとデータベース。
- 検知ドーナツ(24時間) — IDS 警報 / AI 異常 / Web 攻撃 / スキャンとブロック の4カテゴリ。
- サービス性能パネル — Web と DB を1つずつ「個別サービス」としてコンパクトなゲージで選びます(合算はしません)。
- 全幅のサーバーストリップ — 負荷 / メモリ / ネットワーク / ストレージ、6h · 24h · 3d のレンジ切り替え、画面分割(1 · 2 · 3)、高さスライダー、線形/対数スケール。
- ライブポーリング — 軽量な
rev(最新 seq)チェックにより、変化があったときだけ重いペイロードを取得し、その場でデータを差し替えます。
すべての数値は、Laravel の外で動作するコレクターが DB に投入した 実データ です。レガシー DB に到達できない、または空の場合、コントローラーは構造的に同一の モックアップ(デモ) へグレースフルにフォールバックします。その場合
sourceはmockup、revは0となるため、フロントエンドは再描画をスキップします。
いつ使うか
- 一日の始まりに 「今どこが痛んでいるか」 を30秒で把握したいとき — ゲージの色とエビデンス記号により、どの軸(生存性 · 負荷 · メモリ · ディスク · RAID · バックアップ / IDS · AI · Web · ファイアウォール · 評判 · TLS)が減点されているかが一目で分かります。
- 監視ウォール を構築するとき — 複数のモニターに分割・ページ送りして展開します(全画面モード)。
- サーバーの負荷/ディスクのスパイクがいつ起きたか(「N分前」)を追跡するとき。
- インフラ ▸ サーバー や セキュリティ ▸ 概要 といった詳細画面へ掘り下げる前の 起点 として。
レイアウト
トップヒーロー
タイトルとタグライン(「即時対応 · 自動準備 · 常時復元」)に加え、右側には収集タイムスタンプ(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サービスが平均に埋もれません。ドロップダウン(「サービスを切り替え」)で対象を変更します:
- Web — 4帯のレスポンスコード・ドーナツ(2xx good · 3xx info · 4xx warn · 5xx crit)で、中央に RPS、加えてエラー率とレイテンシ。デフォルト選択は RPS が最も高いもの。
- DB — 接続飽和度(座席)アークで、中央に QPS、加えて実行中/待機中。デフォルト選択は飽和度が最も高いもの。トーンのしきい値は 70/90%(サービス ▸ データベース の規約)。
検知ドーナツ(右)
24時間の検知を4カテゴリ(IDS/AI/Web/スキャン)で表示します。ECharts のドーナツ + HTML の凡例(名称 · 簡略カウント · シェアバー)。
下段 — 全幅のサーバーストリップ
Server stats ツールバー(RAID チップ · 「free <1G」チップ · 高さスライダー · レンジラベル · 時間レンジ切り替え · 分割ボタン)の下に、4本のストリップがあります:
- ロードアベレージ — 最新値の上位3サーバーをエイリアス·値付きでピン留め、線形/対数。
- メモリ — 使用率 %、線形/対数。
- ネットワークトラフィック — In(下側)+ Out(上側)の積み上げエリア。
- ストレージ — 非線形のルート(/)ゲージ +
/dataパーティション使用率。
使い方
- まずゲージ — 2つのスコアの色を読みます。低い場合は、下部の 6つのエビデンス記号 のうち赤(crit)/ 橙(warn)のセルにホバーし、どの軸が減点されているかを確認します。
- KPI カード — 外れ値(オフラインのサーバー、脅威、バックアップ成功率)を探します。ピークカードの「N分前」でイベント時刻を特定します。
- 時間ウィンドウの切り替え — 右下の
6h · 24h · 3dボタンでストリップのウィンドウを変更します。選択はlocalStorage(infr:range:overview)に保存され、rangeパラメーターでサーバーへ再問い合わせされます。KPI カードとヘルスゲージは24時間という概念のまま固定です(再ウィンドウ化されるのはストリップだけです)。 - 画面分割 —
All · 2 · 3ボタンでサーバー群をページ(◀▶)に分割します。複数モニターへの展開に便利です。 - 高さとスケール — スライダーでストリップの高さ(80–360px)を設定し、各ストリップの
Lin/Logで y 軸のスケールを設定します(スパイクの多いホストに有効)。 - ライブ / 全画面 — ヒーローの
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
- タブが非表示のとき(
document.hidden)、ポーリングは一時停止し、復帰時に即時チェックを1回行って再開します。 - 30秒ごとの
clockティックは、データが変化していなくても「N分前」のラベルを再計算します。 - Reverb が配線されている場合(
window.Echo)、infr.overviewチャンネルの.tickイベントで同じ更新をプッシュへ切り替えられます(現在は no-op — リアルタイム(Reverb) を参照)。
データソース
すべて 読み取り専用 です。アプリはレガシーのリソーステーブルをそのまま読みます。
| 軸 | テーブル / サービス | 接続 | 用途 |
|---|---|---|---|
| サーバー群 / 系列 | 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> |
アクセス権限
- 読み取り専用の画面です。 ランディング(
/)にはinfr.authミドルウェアのみが適用され、認証済みのすべてのレベル(demo=1 以上) が閲覧できます。書き込み操作がないため、レベルゲートもありません。 - セキュリティのエビデンスと検知の数値は demo(1)にもここで見えますが、専用の セキュリティ役割エリア(
/security/*)はinfr.level:2で別途ゲートされています。 - レベル体系の全体像は RBAC レベル を参照してください。
トラブルシューティングと 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時間固定の概念です。
関連項目
- インフラ ▸ サーバー — サーバー単位の負荷/メモリ時系列を詳細に
- インフラ ▸ ヘルス — ノードカードのライブプローブ
- セキュリティ ▸ 概要 — 脅威→検知→対応 の防御ファネル
- サービス ▸ Web · サービス ▸ データベース — 性能パネルのソース画面
- インフラ ▸ 警報 — しきい値逸脱の警報ポリシー
- リアルタイム(Reverb) — ポーリング → プッシュ の背景
