InfraGuard

サーバー(負荷の時系列)

インフラ ▸ サーバー 画面で、サーバーごとの負荷・CPU・メモリをリングゲージと時系列グラフで表示します。

概要 — 何をする画面か

インフラ ▸ サーバー(/infra/servers)は、登録済みの全サーバーノードについて ロードアベレージ・CPU・メモリ を 時系列の視点 で表示します。ヘルス 画面がライブプローブによって「各ノードの現在の状態」を捉えるのに対し、サーバー画面は「直近の数時間から数日にかけて負荷がどう推移したか」に焦点を当てます。stats-design の monitoring/part(load_average・cpu_usage・memory_usage)を再実装したものです。

ノードごとに1枚のカードを表示します。

メトリクスはレガシーの server_status テーブル(読み取り専用)から取得します。ビルダーである ServerMetricService はクエリを 直近の seq ウィンドウ に絞り込み(テーブル全体をスキャンするスロークエリを回避します)、20秒キャッシュ を適用します。カードグリッドは ドラッグでの並べ替え + メーソンリー に対応し、30秒ポーリング によって自動更新されます。

server_status は、Laravel の外部でおよそ 5分周期 で動作する Node コレクター run_report.js が書き込みます。したがって時間軸の解像度は約5分であり、画面はポーリングによって更新されます(リアルタイムのプッシュ/Reverb ではありません)。


利用シーン

ライブのセッション監視(nginx/php/mysql のサービスドット付き)は ヘルス、ネットワーク I/O のバイト/パケットのグラフは トラフィック、ディスクと RAID の健全性は ストレージ・RAID にあります。


レイアウト

上部 KPI バー

ServerMetricService::kpi() が算出します。

KPI 意味
サーバー ウィンドウ内に存在するノードの総数
オンライン 直近2回の収集サイクル以内に loadavg を報告したノード
オフライン 総数 − オンライン
負荷トップ 現在の1分ロードアベレージが最も高いノード + エイリアス
CPUトップ 現在の CPU% が最も高いノード + エイリアス
メモリトップ 現在のメモリ % が最も高いノード + エイリアス

range トグル

表示ウィンドウ(seq ウィンドウのポイント数)を選択します。選択内容は localStorage(infr:range:infra-servers)に保存され、再訪時も維持されます。

range seq ポイント数 ≈ 実際のウィンドウ(5分周期)
1h 12 約1時間
6h 72 約6時間
24h 288 約24時間(既定)
3d 864 約3日

range は「直近 N 回の収集サイクル」に変換されます(絶対的な時間幅ではありません)。5分周期であれば 24h ≈ 288ポイントです。報告頻度の低いノードでは、同じ range でも実際のウィンドウが短くなることがあります — 下部のウィンドウラベルが実際の幅を 24h/6h/45m/2d として示します。

ノードカード

┌──────────────────────────────────────────────┐
│ label · alias · IP           online / last Nm │   ← ヘッダー(ラベルは infr_instance で補完)
│  ( Load )   ( CPU )   ( MEM )                    │   ← 3つのリングゲージ(現在値)
│  ▁▂▅▇▅▃  スパークライン(SVG polyline)         │
│  peak · disk 42% · net out 1,234        [詳細] │   ← フッター
└──────────────────────────────────────────────┘

カードの枠線とゲージは しきい値のトーン で描画され、カード全体の深刻度は 3つのメトリクスのうち最も悪いもの に従います。

メトリクス good warn crit
Load(1分) < 8 ≥ 8 ≥ 16
CPU % < 70 ≥ 70 ≥ 90
MEM % < 85 ≥ 85 ≥ 95

Load のリングは load 8 で満杯 になるよう正規化されています(LOAD_FULL=8) — warn のしきい値に合わせてあります。コア数の多いマシンでは load 8 が必ずしも危険とは限らないため、リング中央の数値で絶対値も必ず確認してください。

展開後の詳細(ECharts + 統計)

[詳細] を押すとカードが縦に伸び、メーソンリーが高さの変化を自動的に再配置します。


使い方

  1. /infra/servers を開きます → ノードカードがエイリアスの昇順に並びます。
  2. range トグル(1h/6h/24h/3d)で観測ウィンドウを選びます。ポーリングとは独立して、即座に再クエリされます。
  3. [詳細] で、そのノードの時系列グラフと統計表を開きます。
  4. グラフにカーソルを合わせると、クロスヘアで任意の時点の CPU/MEM/Load の値を読み取れます。
  5. カードを ドラッグ して、よく見るノードを上部に浮かび上がらせます — 順序は localStorage(infr:order:infra-servers)に保存されます。
  6. ヘッダーの全画面ボタンで上部ナビゲーションを隠し、ダッシュボードモードで表示します。

画面は /infra/servers/live のポーリングによって 30秒ごと に自動更新されます(操作は不要です)。この画面には書き込み/制御の操作はなく、純粋に観測用です。

ポーリングを行うフロントエンドは、軽量な変更トークン rev(= server_status の最新 seq)によって更新が必要かどうかを判断します。新しい収集サイクルが届くまで画面は変化しません — これは「固まっている」のではなく、単に新しいスナップショットがまだないだけです。


データソース

ソースはレガシーの server_status テーブル(MAIN DB、キーバリュー形式の part スキーマ、読み取り専用)です。run_report.js の格納規約をそのまま解釈します。

part 値の形式 意味 系列での用途
loadavg "1m 5m 15m" のスペース区切り(例 "0.50 0.42 0.38") ロードアベレージ 系列とリングは 1分ロードアベレージ のみを使用。フッターには 5/15分も表示
top "NN%"(例 "3.6%") CPU ユーザー使用率 CPU の系列/リング
free "NN%" メモリ使用率 = round(used/total×100) MEM の系列/リング
df-data / df- / df-home JSON {p,u,a} ディスク使用率 (p)・使用量 (u)・容量 (a) 最新のディスクバッジ(df-data → df- → df-home の優先順位)
traffic-out 数値 ネットワーク送出パケットの差分 net の系列/フッター

クエリと整形の規律:

server_status を埋める run_report.js コレクターの登録と認証情報は、管理 ▸ コレクター で管理します。


アクセス権限

レベル体系: demo=1 · staff=5 · admin=10(RBAC レベル を参照)。


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

「サーバーメトリクスがありません。」としか表示されない server_status に直近のスナップショットがありません。run_report.js コレクターが動作しており、コレクター に登録されていることを確認してください。レガシー(MAIN)DB の接続も確認してください。

ノードがオフラインと表示される 直近2回の収集サイクル以内に loadavg が報告されなかったという意味です。そのノードの run_report の実行状況、時刻(ずれ)、ネットワークを確認してください。last_seen の相対ラベルが、最後に報告した時刻を示します。

カードに分かりやすい名前ではなくエイリアス(例 sol)が表示される そのエイリアスが インスタンス(infr_instance)に登録されていません。インスタンスを登録すると、その name がラベルになり、IP として ip_public/ip_private が表示されます。

ディスクバッジが空になっている そのノードが df-data/df-/df-home のいずれも JSON {p,u,a} 形式で報告していません。ディスク使用量と RAID の健全性の詳細は ストレージ・RAID を利用してください。

Load のリングが常に満杯に見える Load のリングは load 8 を上限として正規化されています。コア数の多いサーバーでは load 8 が正常な場合もあるため、リング中央に表示される絶対値 で判断してください。色のトーンのしきい値(warn 8/crit 16)だけで危険と結論づけないでください。

30秒ごとにポーリングしているのに何も変わらない (1) 新しい収集サイクル(約5分)がまだ届いていないか、(2) 20秒キャッシュのウィンドウ内にいるか、のどちらかです。実際に更新されているかは stamp、ウィンドウラベル、rev(最新の seq)で確認してください。

range を 3d にしたのにウィンドウが短く見える range は「直近 N サイクル」を意味するため、収集頻度の低いノードでは実際の時間幅が短くなります。下部のウィンドウラベルが実際の幅(45m/6h/2d)を示します。ポイント数の上限は1000です。


関連項目

서버 — 부하·CPU·메모리 시계열
서버 — 부하·CPU·메모리 시계열
카드를 펼친 결합 선그래프
카드를 펼친 결합 선그래프