Shumoku
NetBox 統合

視覚化機能

NetBox データが Shumoku の見た目にどう反映されるか

NetBox から取得したデータは、リンクの太さ・色・線種、ノードのスタイル、グループ化といったダイアグラムの見た目に反映されます。

帯域幅の可視化

リンク速度は NetBox インターフェースの speed フィールド(kbps)から自動検出され、リンクの rateBps に設定されます。レンダラーは速度を対数スケールで連続的に線の太さへ変換します — 1G リンクは細い線、10G は明らかに太く、100G のトランクは幅のある「パイプ」として描画されます。

両端に速度がある場合はソース側の値が優先され、速度が取れないリンクはデフォルトの太さになります。


VLAN の可視化

VLAN 情報は各インターフェースの tagged_vlansuntagged_vlan から収集され、リンクに設定されます:

  • 両端インターフェースの VLAN をマージして link.vlan に設定
  • 各 VLAN ID には getVlanColor(vid) による決定的な色が割り当てられる

ケーブルタイプの色分け

colorByCableType: true(デフォルト)のとき、NetBox のケーブルタイプに応じて色と線種が適用されます。光ファイバー・銅線は実線、DAC/AOC は破線で描画されます:

ケーブルタイプ線種
smf, smf-os1(シングルモード)実線
smf-os2アンバー実線
mmf-om3実線
mmf-om4シアン実線
cat5eグレー実線
cat6実線
cat6a実線
cat7ピンク実線
cat8ローズ実線
dac-passiveオレンジ破線
dac-active破線
aocピンク破線

NetBox 側でケーブルにが明示的に設定されている場合は、タイプ別マッピングよりそちらが優先されます。ケーブルのラベル長さはリンクラベルとして表示されます。


デバイスステータスの可視化

colorByStatus: true を指定すると、NetBox のデバイスステータスがノードのスタイルに反映されます:

ステータススタイル
activeデフォルト
plannedグレー破線枠・半透明
staged黄背景・アンバー枠
failed赤背景・赤枠
offlineグレー背景・半透明
inventory青背景・破線枠
decommissioningオレンジ背景・破線枠

グループ化オプション

コンバーターの groupBy オプションで、デバイスをどうサブグラフにまとめるかを指定します:

説明
tagNetBox タグでグループ化(デフォルト)。タグは DEFAULT_TAG_MAPPING で階層レベルに対応
siteサイトでグループ化
locationロケーションでグループ化(なければサイトにフォールバック)
prefixプライマリ IP の /16 ネットワークでグループ化
noneグループ化なし

仮想マシン

VM を含めた場合(convertToNetworkGraphWithVMs + includeVMs: true):

  • VM は破線枠のサーバーノードとして描画される
  • ラベルには VM 名・プライマリ IP・スペック(vCPU / メモリ)が表示される
  • groupVMsByCluster: true でクラスタごとの破線サブグラフに入る

凡例

legend オプションでダイアグラムに凡例を表示できます:

// シンプルに有効化
const graph = convertToNetworkGraph(devices, interfaces, cables, {
  legend: true,
})

// カスタマイズ
const graph = convertToNetworkGraph(devices, interfaces, cables, {
  legend: {
    enabled: true,
    position: 'top-right',
    showDeviceTypes: true,
    showBandwidth: true,
    showCableTypes: true,
    showVlans: false,
  },
})

凡例オプション

設定説明デフォルト
enabled凡例を表示true
positiontop-left, top-right, bottom-left, bottom-righttop-right
showDeviceTypesデバイスタイプのアイコンを表示true
showBandwidth帯域幅インジケーターを表示true
showCableTypesケーブルタイプの色を表示true
showVlansVLAN の色を表示false

階層出力

マルチサイトのネットワークは convertToHierarchicalYaml で階層 YAML に分割できます:

import { convertToHierarchicalYaml } from 'shumoku-plugin-netbox'

const result = convertToHierarchicalYaml(deviceResp, interfaceResp, cableResp, {
  hierarchyDepth: 'location', // 'site' | 'location' | 'rack'
  fileBasePath: './',
})

console.log(result.main)       // main.yaml の内容
console.log(result.files)      // Map<locationId, yamlContent>
console.log(result.crossLinks) // ロケーションをまたぐケーブルのリスト

階層の深さ

hierarchyDepth説明
siteサイトごとにファイル分割
locationロケーションごと(デフォルト)
rackラックごと(最も細かい)

出力例

# main.yaml
name: "Network Overview"
description: "Hierarchical network topology"

settings:
  direction: TB

subgraphs:
  - id: tokyo-dc
    label: "Tokyo Dc"
    file: "./tokyo-dc.yaml"
    style:
      fill: "accent-blue"
  - id: osaka-dc
    label: "Osaka Dc"
    file: "./osaka-dc.yaml"
    style:
      fill: "accent-green"

links:
  # サイトをまたぐリンクはデバイスを直接参照する
  - from:
      node: tokyo-router
      port: wan1
    to:
      node: osaka-router
      port: wan1

目次