person Tia Zanella
calendar_add_on Created March 17, 2026
update Updated April 5, 2026
Share
download Download MD

OSIRIS JSON-Producer für Cisco

Der Cisco-Producer für OSIRIS JSON stellt eine Verbindung zu Cisco-Infrastrukturplattformen (APIC, NX-OS, IOS-XE) her und erzeugt OSIRIS-JSON-Snapshots Ihrer Netzwerktopologie, Geräte, Schnittstellen und Verbindungen.

Installieren Sie den Core-Dispatcher und den Cisco-Producer:

go install go.osirisjson.org/producers/cmd/osirisjson-producer@latest
go install go.osirisjson.org/producers/cmd/osirisjson-producer-cisco@latest

Mit dem Core-Dispatcher können Sie osirisjson-producer cisco ... ausführen. Ohne ihn rufen Sie die Hersteller-Binärdatei direkt als osirisjson-producer-cisco ... auf.

Stellen Sie sicher, dass $GOPATH/bin (oder $HOME/go/bin) in Ihrem PATH enthalten ist. Weitere Installationsoptionen finden Sie auf der Seite Erste Schritte.

Unterstützte Plattformen

ACI / APIC

verfügbar

Application Policy Infrastructure Controller

Transport: REST API

NX-OS

verfügbar

Nexus-Data-Center-Switches

Transport: NX-API CLI

IOS-XE

verfügbar

Enterprise-Router und -Switches

Transport: NETCONF/YANG über SSH

CLI-Verwendung

Der Cisco-Producer verwendet eine Dispatcher-CLI mit Sub-Producern:

osirisjson-producer cisco <subcommand> [flags]

Einzelmodus

Stellen Sie eine Verbindung zu einem Gerät her und speichern Sie ein OSIRIS-JSON-Dokument als cisco-<type>-<timestamp>-<hostname>.json:

# ACI-Fabric-Snapshot über APIC
osirisjson-producer cisco apic -h 10.0.0.1 -u admin -p secret

# NX-OS-Geräte-Snapshot
osirisjson-producer cisco nxos -h switch01.example.com -u admin -p secret

# IOS-XE-Geräte-Snapshot
osirisjson-producer cisco iosxe -h router01.example.com -u admin --insecure

Wenn -p / --password weggelassen wird, fordert die CLI zur interaktiven Eingabe auf.

Batch-Modus

Sammeln Sie Daten von mehreren Geräten, die in einer CSV-Datei aufgeführt sind. Die Ausgabe wird als hierarchische Verzeichnisstruktur organisiert: DC/Floor/Room/Zone/Hostname.json.

osirisjson-producer cisco apic -s datacenter.csv -o ./output -u admin -p secret

Erzeugen Sie eine CSV-Vorlage für den Einstieg:

osirisjson-producer cisco template --generate apic

Die CSV-Vorlage verwendet diese Spalten:

SpalteErforderlichBeschreibung
dcName des Data Centers (wird für die Hierarchie der Ausgabeordner verwendet)
floorKennung der Etage
roomKennung des Raums
zoneKennung der Zone oder des Pods
hostnamejaGerätebezeichnung, die als Ausgabedateiname verwendet wird
typejaProducer-Typ: apic, nxos, iosxe
ipjaIP-Adresse oder FQDN des Zielgeräts
portPort überschreiben (Standard: producer-spezifisch)
ownerself (Standard), isp oder colo - nur Operator-Metadaten
notesFreitextnotizen (werden vom Producer ignoriert)

Anmeldedaten werden über die Flags -u/-p bereitgestellt und gelten für alle Ziele im Batch.

Flag-Referenz

Flags für den Einzelmodus

FlagKurzBeschreibung
--host-hZielhost (IP oder FQDN, optional mit :port)
--username-uBenutzername für die Authentifizierung
--password-pPasswort (für interaktive Eingabe weglassen)
--port-PPort überschreiben (Standard: producer-spezifisch)
--detailDetaillierungsgrad: minimal (Standard) oder detailed
--insecureTLS-Zertifikatsprüfung überspringen
--safe-failure-modeUmgang mit Geheimnissen: fail-closed (Standard), log-and-redact, off

Flags für den Batch-Modus

FlagKurzBeschreibung
--source-sCSV-Datei mit Zielen
--output-oAusgabeverzeichnis (hierarchisch: DC/Floor/Room/Zone/Hostname.json)
--username-uStandardbenutzername für alle Ziele
--password-pStandardpasswort für alle Ziele

Globale Flags

FlagBeschreibung
--version / -vVersion anzeigen und beenden
--helpHilfe anzeigen und beenden

Was jede Plattform erfasst

ACI / APIC

Der APIC-Producer fragt die folgenden MO-Klassen über die REST-API ab:

Minimal mode:

MO-KlasseBeschreibung
fabricNodeFabric-Knoten (Controller, Spines, Leafs)
topSystemSystemattribute (Uptime, Status, Fabric-MAC, MTU der Control Plane)
firmwareRunningAktive Firmware-Versionen
fvTenantTenant-Definitionen
fvCtxVRF-Kontexte
fvBDBridge-Domains
fvSubnetSubnetze
fvAEPgApplication-Endpoint-Gruppen
l3extOutExterne L3-Konnektivität
faultInstAktive Fault-Instanzen

Detailed mode adds:

MO-KlasseBeschreibung
fvCEpClient-Endpoints (MAC, VLAN-Encap, Leaf-Zuordnung)

NX-OS

Der NX-OS-Producer sendet NX-API-CLI-Befehle in gebündelten Anfragen:

Minimal mode:

BefehlBeschreibung
show versionGerätemodell, Seriennummer, OS-Version, Uptime
show inventoryHardware-Inventar (Module, Netzteile, Lüfter)
show interface briefSchnittstellennamen, Status, Geschwindigkeiten, VLANs
show vlan briefVLAN-IDs, Namen und Mitgliedsschnittstellen
show vrf all detailVRF-Definitionen und Mitgliedsschnittstellen
show lldp neighbors detailLLDP-Nachbarerkennung
show vpc briefvPC-Domäne, Peer-Status, Keepalive
show port-channel summaryPort-Channel-Konfigurationen

Detailed mode adds:

BefehlBeschreibung
show interfaceVollständige Schnittstellenstatistiken (MTU, Bandbreite, Duplex, Zähler)
show system resourcesCPU-Leerlauf in %, Speichernutzung, Lastdurchschnitte
show environmentNetzteile, Lüfterstatus, Temperaturen

IOS-XE

Der IOS-XE-Producer verwendet NETCONF/YANG-RPCs über SSH (Standardport 830):

Minimal mode:

YANG-ModellBeschreibung
Cisco-IOS-XE-nativeGeräteversion und Hostname
ietf-interfacesSchnittstellendetails
Cisco-IOS-XE-device-hardware-operHardware-Inventar
Cisco-IOS-XE-cdp-operCDP-Nachbarerkennung
Cisco-IOS-XE-native (vrf)VRF-Definitionen

Detailed mode adds:

YANG-ModellBeschreibung
Cisco-IOS-XE-bgp-operDetails zu BGP-Nachbarn
Cisco-IOS-XE-ospf-operOSPF-Prozess und Nachbarstatus
Cisco-IOS-XE-process-cpu-operCPU-Auslastung
Cisco-IOS-XE-memory-operSpeicherstatistiken

OSIRIS-JSON-Ausgabestruktur

Alle drei Producer geben dieselbe OSIRIS-JSON-Hülle aus:

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-cisco-<platform>",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["cisco"]
    }
  },
  "topology": {
    "resources": [ ... ],
    "connections": [ ... ],
    "groups": [ ... ]
  }
}

Ressourcentypen nach Plattform

Die Ressourcentypen folgen der OSIRIS JSON v1.0-Spezifikation. Standardtypen werden dort verwendet, wo sie definiert sind; herstellerspezifische Typen verwenden den Namespace osiris.cisco.*.

IOS-XE:

  • network.router - Primäres Gerät (Standard)
  • network.interface - Physische und logische Schnittstellen (Standard)
  • osiris.cisco.interface.lag - Port-Channel- / LAG-Schnittstellen

NX-OS:

  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Gerät (nach Rolle klassifiziert)
  • network.interface - Physische und logische Schnittstellen (Standard)
  • osiris.cisco.interface.lag - Port-Channels

APIC:

  • osiris.cisco.controller - APIC-Controller
  • osiris.cisco.switch.spine / osiris.cisco.switch.leaf - Fabric-Switches
  • osiris.cisco.domain.bridge - Bridge-Domains
  • network.subnet - Subnetze (Standard)
  • osiris.cisco.l3out - Externe L3-Netzwerke
  • osiris.cisco.endpoint - Client-Endpoints (nur im detailed mode)

Verbindungstypen

  • IOS-XE / NX-OS: physical.ethernet für über CDP/LLDP erkannte Links zwischen Schnittstellen
  • APIC: contains für hierarchische Tenant-Einbettung, network für Bridge-Domain-Zuordnungen

Gruppentypen nach Plattform

IOS-XE: logical.vrf

NX-OS: logical.vrf, network.vlan, network.vpc

APIC: logical.tenant, logical.vrf, osiris.cisco.epg

Verbindungserkennung

  • IOS-XE erkennt Nachbarn über CDP (Cisco Discovery Protocol)
  • NX-OS erkennt Nachbarn über LLDP (Link Layer Discovery Protocol)
  • APIC verwendet eine Einbettungshierarchie (Tenants -> BDs -> Subnetze -> EPGs) anstelle von Punkt-zu-Punkt-Links

Entfernte Geräte, die über CDP/LLDP erkannt werden, werden als Stub-Ressourcen mit status: unknown hinzugefügt.

Beispiele

IOS-XE - Einzelgerät, minimaler Modus

osirisjson-producer cisco iosxe -h 10.99.0.1 -u admin -p secret

Ausgabe (gekürzt):

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-cisco-iosxe",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["cisco"]
    }
  },
  "topology": {
    "resources": [
      {
        "id": "cisco-iosxe-LAB-RTR01",
        "type": "network.router",
        "name": "LAB-RTR01",
        "status": "active",
        "provider": {
          "name": "cisco",
          "type": "ISR4451-X/K9",
          "version": "16.9"
        },
        "extensions": {
          "osiris.cisco": {
            "inventory": [
              { "name": "Chassis", "description": "ISR4451-X/K9", "serial": "FDO12345678" }
            ]
          }
        }
      },
      {
        "id": "cisco-iosxe-LAB-RTR01-GigabitEthernet0/0/0",
        "type": "network.interface",
        "name": "GigabitEthernet0/0/0",
        "status": "active",
        "properties": {
          "speed": "1000000000",
          "description": "WAN uplink"
        }
      }
    ],
    "connections": [
      {
        "source": "cisco-iosxe-LAB-RTR01-GigabitEthernet0/0/0",
        "target": "cisco-iosxe-stub-REMOTE-SW01-GigabitEthernet1/0/1",
        "type": "physical.ethernet",
        "status": "active"
      }
    ],
    "groups": [
      {
        "id": "cisco-iosxe-LAB-RTR01-vrf-CORP",
        "type": "logical.vrf",
        "name": "CORP",
        "members": [
          "cisco-iosxe-LAB-RTR01-GigabitEthernet0/0/0",
          "cisco-iosxe-LAB-RTR01-Loopback0"
        ]
      }
    ]
  }
}

NX-OS - Einzelgerät, detailed mode

osirisjson-producer cisco nxos -h switch01.lab -u admin -p secret --detail detailed

Ausgabe (gekürzt):

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-cisco-nxos",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["cisco"]
    }
  },
  "topology": {
    "resources": [
      {
        "id": "cisco-nxos-LAB-SW01",
        "type": "osiris.cisco.switch.leaf",
        "name": "LAB-SW01",
        "status": "active",
        "provider": {
          "name": "cisco",
          "type": "Nexus9000 C9508",
          "version": "10.3(4a)"
        },
        "extensions": {
          "osiris.cisco": {
            "bios_version": "08.40",
            "kernel_uptime": "15d 3h 22m 10s",
            "cpu_idle": 85.5,
            "load_avg_1min": 1.23,
            "memory_used": 8192,
            "memory_free": 24576,
            "power_supplies": [
              { "id": "1", "model": "NXA-PAC-1100W", "watts": 350, "status": "ok" }
            ],
            "fans": [
              { "name": "Fan1", "status": "ok" }
            ],
            "temperatures": [
              { "sensor": "SUP slot 1", "celsius": 35.5 }
            ]
          }
        }
      },
      {
        "id": "cisco-nxos-LAB-SW01-Ethernet1/1",
        "type": "network.interface",
        "name": "Ethernet1/1",
        "status": "active",
        "properties": {
          "speed": "10000000000",
          "description": "Server-facing"
        }
      }
    ],
    "connections": [
      {
        "source": "cisco-nxos-LAB-SW01-Ethernet1/1",
        "target": "cisco-nxos-stub-REMOTE-SW01-Ethernet1/49",
        "type": "physical.ethernet",
        "status": "active"
      }
    ],
    "groups": [
      {
        "id": "cisco-nxos-LAB-SW01-vlan-100",
        "type": "network.vlan",
        "name": "PROD",
        "members": ["cisco-nxos-LAB-SW01-Ethernet1/1"]
      },
      {
        "id": "cisco-nxos-LAB-SW01-vpc-10",
        "type": "network.vpc",
        "name": "vPC domain 10",
        "extensions": {
          "osiris.cisco": {
            "role": "primary",
            "peer_status": "peer-ok",
            "keepalive_status": "peer-alive"
          }
        }
      }
    ]
  }
}

APIC - ACI-Fabric-Snapshot

osirisjson-producer cisco apic -h 10.0.0.1 -u admin -p secret --detail detailed

Ausgabe (gekürzt):

{
  "$schema": "https://osirisjson.org/schema/v1.0/osiris.schema.json",
  "version": "1.0.0",
  "metadata": {
    "generator": {
      "name": "osirisjson-producer-cisco-apic",
      "version": "0.1.0"
    },
    "scope": {
      "providers": ["cisco"]
    }
  },
  "topology": {
    "resources": [
      {
        "id": "cisco-apic-apic1",
        "type": "osiris.cisco.controller",
        "name": "apic1",
        "status": "active",
        "provider": {
          "name": "cisco",
          "type": "APIC-SERVER-M3",
          "version": "6.0(2h)",
          "site": "pod-1"
        }
      },
      {
        "id": "cisco-apic-spine1",
        "type": "osiris.cisco.switch.spine",
        "name": "spine1",
        "status": "active",
        "provider": {
          "name": "cisco",
          "type": "N9K-C9336C-FX2",
          "version": "n9000-16.0(2h)",
          "site": "pod-1"
        },
        "extensions": {
          "osiris.cisco": {
            "fabric_mac": "AA:BB:CC:DD:EE:01",
            "control_plane_mtu": 9000,
            "faults": [
              { "code": "F1527", "severity": "warning", "description": "storage full" }
            ]
          }
        }
      },
      {
        "id": "cisco-apic-bd-bd_App",
        "type": "osiris.cisco.domain.bridge",
        "name": "bd_App",
        "status": "active"
      },
      {
        "id": "cisco-apic-subnet-10.0.0.1/24",
        "type": "network.subnet",
        "name": "10.0.0.1/24",
        "status": "active"
      },
      {
        "id": "cisco-apic-ep-AA:BB:CC:DD:EE:FF",
        "type": "osiris.cisco.endpoint",
        "name": "AA:BB:CC:DD:EE:FF",
        "status": "active",
        "properties": {
          "encap": "vlan-100",
          "leaf": "leaf1",
          "interface": "eth1/1"
        }
      }
    ],
    "groups": [
      {
        "id": "cisco-apic-tenant-tn_Example",
        "type": "logical.tenant",
        "name": "tn_Example",
        "children": [
          "cisco-apic-vrf-tn_Example-vrf_Main",
          "cisco-apic-epg-tn_Example-epg_WEB"
        ]
      },
      {
        "id": "cisco-apic-vrf-tn_Example-vrf_Main",
        "type": "logical.vrf",
        "name": "vrf_Main"
      },
      {
        "id": "cisco-apic-epg-tn_Example-epg_WEB",
        "type": "osiris.cisco.epg",
        "name": "epg_WEB",
        "members": ["cisco-apic-ep-AA:BB:CC:DD:EE:FF"]
      }
    ]
  }
}

Batch-Modus - Erfassung mehrerer Geräte

Erstellen Sie eine CSV-Inventardatei:

dc,floor,room,zone,hostname,type,ip,port,owner,notes
AMS-01,F3,R301,POD-A,apic-01,apic,10.10.1.1,,self,Primary controller
AMS-01,F3,R301,POD-A,nx-spine-01,nxos,10.10.1.10,,self,Spine switch
AMS-01,F3,R302,POD-B,xe-router-01,iosxe,172.16.0.1,,isp,PE router

Führen Sie den Batch aus:

osirisjson-producer cisco apic -s inventory.csv -o ./output -u admin -p secret

Das resultierende Ausgabeverzeichnis:

output/
  AMS-01/
    F3/
      R301/
        POD-A/
          apic-01.json
          nx-spine-01.json
      R302/
        POD-B/
          xe-router-01.json
edit_note

Help improve this page

Found an issue or want to contribute? Open an issue.