Skip to content

Latest commit

 

History

History
308 lines (217 loc) · 9.78 KB

File metadata and controls

308 lines (217 loc) · 9.78 KB

Rychlý návod - Inventory Monitor Scripts

Co to je a k čemu to slouží?

Tento nástroj automaticky sbírá informace o hardwarových komponentách (moduly, karty, chassis) ze síťových zařízení pomocí SNMP protokolu a ukládá je do NetBoxu.

Jednoduše řečeno: Místo ručního zadávání informací o modulech v routerech/switchích do NetBoxu, tento nástroj je tam nahraje automaticky.

Podporované platformy

Nástroj detekuje platformu podle pole Platform v NetBoxu (název platformy, case-insensitive):

  • junos - Juniper JunOS routery a switche (použije se specializovaný JunOS handler)
  • sros - Nokia SROS routery (použije se specializovaný SROS handler)
  • Všechny ostatní platformy - Cisco IOS/IOS-XE/NX-OS a jakékoliv jiné zařízení (použije se výchozí Cisco Entity MIB handler)

Pozor: Název platformy v NetBoxu musí být přesně junos nebo sros (malá písmena, case-insensitive). Pro Cisco zařízení můžeš použít libovolný název (např. cisco-ios, cisco-nxos, cisco), všechny se zpracují pomocí Cisco handleru.

Co se čte z NetBoxu?

Nástroj si z NetBoxu stáhne seznam zařízení, která mají:

  • ✅ Status: Active
  • ✅ Přiřazenou primární IPv4 adresu
  • ✅ Vyplněnou platformu (Cisco/Juniper/Nokia)
  • ✅ Volitelně: specifické tagy (pokud je nastavíš)

Co se ukládá do NetBoxu?

Pro každou hardwarovou komponentu (modul, chassis, port, power supply, atd.) se vytvoří nebo aktualizuje záznam Probe obsahující:

  • Sériové číslo (hlavní identifikátor)
  • Model name (název modelu)
  • Hardware revision (HW verze)
  • Firmware version (verze firmwaru)
  • Software version (verze SW)
  • Description (popis komponenty)
  • Device Class (typ: chassis, module, port, sensor, atd.)
  • Timestamp (kdy byla data nasbírána)

Pozor: Nástroj vyžaduje nainstalovaný inventory-monitor-plugin v NetBoxu!


Příprava před použitím

1. Požadavky v NetBoxu

a) Instalace pluginu

# V NetBox prostředí nainstaluj plugin:
pip install netbox-inventory-monitor-plugin

Poté přidej do configuration.py:

PLUGINS = [
    'netbox_inventory_monitor',
]

A restartuj NetBox.

b) Vytvoř API token

  1. Přihlaš se do NetBoxu
  2. Jdi do Admin → Users → Tokens
  3. Vytvoř nový token s oprávněními pro čtení zařízení a zápis do plugin API
  4. Zkopíruj si token (už ho neuvidíš)

c) Nastav správně zařízení v NetBoxu

Pro každé zařízení, které chceš monitorovat, zkontroluj:

  • Status: Active
  • Primary IPv4: musí být vyplněná IP adresa dostupná z místa, kde běží script
  • Platform: musí být nastavená platforma
    • Pro Juniper: junos (přesný název)
    • Pro Nokia: sros (přesný název)
    • Pro Cisco: libovolný název (např. cisco-ios, cisco, atd.)

2. Příprava SNMP přístupu

Nástroj potřebuje SNMP přístup k zařízením. Podporuje SNMPv2c i SNMPv3.

SNMPv2c (jednodušší, méně bezpečné)

  • Potřebuješ znát community string (např. public nebo private)

SNMPv3 (doporučené, bezpečnější)

  • Potřebuješ znát:
    • Username (např. monitoring-user)
    • Auth password a auth protocol (MD5/SHA)
    • Privacy password a privacy protocol (DES/AES) - volitelné
    • Security level (authNoPriv / authPriv)

Tip: Ujisti se, že máš SNMP povolené na zařízeních a že je dostupné z místa, kde budeš spouštět script.


3. Instalace nástroje

a) Nainstaluj systémové závislosti

macOS:

brew install net-snmp

Ubuntu/Debian:

sudo apt-get install libsnmp-dev

RHEL/CentOS:

sudo yum install net-snmp-devel

b) Nainstaluj Python nástroj

# Naklonuj repozitář
git clone <URL-repozitáře>
cd inventory_monitor_scripts

# Nainstaluj v dev módu
pip install -e .

# Nebo s test závislostmi:
pip install -e ".[test]"

4. Konfigurace

Vytvoř soubor .env v kořenovém adresáři projektu:

Tip: Pokud potřebuješ různé konfigurace pro různá prostředí (produkce, staging, dev), vytvoř více souborů (např. .env.production, .env.staging) a použij parametr --env-file při spouštění.

# === NetBox nastavení ===
NETBOX_API_TOKEN=tvůj_netbox_token_zde
NETBOX_INSTANCE_URL=https://netbox.example.com/

# Ověřování SSL (pro testování můžeš dát false)
NETBOX_VERIFY_SSL=true

# === SNMP přihlašovací údaje ===
# Pořadí, v jakém se mají zkoušet SNMP verze (nejdřív v3, pak v2)
SNMP_VERSION=3,2

# SNMPv2c
SNMP_COMMUNITY=public

# SNMPv3
SNMP_USER=monitoring-user
SNMP_AUTH=auth_password_zde
SNMP_AUTH_METHOD=SHA
SNMP_PRIVACY=privacy_password_zde
SNMP_PRIVACY_METHOD=AES
SNMP_SECURITY=authPriv

# === SNMP ladění výkonu ===
SNMP_TIMEOUT=1
SNMP_RETRIES=1

# === Filtrování zařízení (volitelné) ===
# Zpracovat pouze zařízení s těmito tagy:
NETBOX_TAGS=production,monitoring

# Vyloučit zařízení s těmito tagy:
NETBOX_TAGS__N=decommissioned,maintenance

# === Filtrování modelů (volitelné) ===
# Vyloučit moduly s těmito názvy z importu:
entPhysicalModelName_excludes=N/A,Unknown,Container

# === Paralelizace ===
PARALLEL_JOBS=50

# === Logování ===
LOG_LEVEL=INFO

Vzorový soubor: Podívej se na .env.sample v repozitáři.


Spuštění

Základní použití

# Zpracovat všechna zařízení v NetBoxu (podle filtrů)
python -m inventory_monitor.main

# Zpracovat jen jedno konkrétní zařízení
python -m inventory_monitor.main --device router-01

# Použít vlastní konfigurační soubor (např. pro různá prostředí)
python -m inventory_monitor.main --env-file .env.production
python -m inventory_monitor.main --env-file .env.staging --device test-router

# Použít jiné SNMP credentials pro jedno spuštění
python -m inventory_monitor.main --snmp-community jiný_community_string

# Nastavit detailnější logování
LOG_LEVEL=DEBUG python -m inventory_monitor.main --device switch-core-01

# Exportovat surová SNMP data do JSON souboru (data se STÁLE ukládají do NetBoxu)
python -m inventory_monitor.main --device router-01 --debug-dump debug.json

Co se stane při spuštění?

  1. Načtení konfigurace - načte .env soubor a CLI parametry

  2. Připojení k NetBoxu - stáhne si seznam zařízení podle filtrů

  3. Paralelní zpracování - pro každé zařízení:

    • Připojí se přes SNMP (nejdřív zkusí v3, pak v2)
    • Načte hardware inventory (Entity MIB pro Cisco, specifické OID pro ostatní)
    • Vyfiltruje nepotřebné komponenty
    • Sloučí duplicitní záznamy podle sériového čísla
  4. Nahrání do NetBoxu - pro každou komponentu se rozhoduje, jak zpracovat Probe:

    Klíč pro hledání: Sériové číslo + Device ID

    A) Probe s tímto SN neexistuje:

    • → Vytvoří se nová Probe

    B) Probe s tímto SN existuje - porovnají se přesně tato pole:

    • device_descriptor (název zařízení)
    • site_descriptor (název site v NetBoxu)
    • location_descriptor (název location v NetBoxu)
    • part (entPhysicalModelName - název modelu)
    • name (entPhysicalName - název komponenty)
    • description (entPhysicalDescr - popis komponenty)
    • category (entPhysicalClass - typ komponenty: chassis, module, port, atd.)

    B1) Alespoň jedno z těchto polí se liší:

    • → Vytvoří se nová Probe (zachová se historie změn - např. výměna modulu se stejným SN)

    B2) Všechna pole jsou stejná:

    • Aktualizuje se existující Probe (pouze timestamp time = čas poslední kontroly)
  5. Logování - výsledky se ukládají do logs/all.log a logs/errors.log


Logování a debugging

Kde najdu logy?

  • logs/all.log - všechny zprávy (INFO a vyšší)
  • logs/errors.log - pouze chyby s detailními stacktrace

Logy se rotují při 10 MB a uchovávají se 1 týden.

Jak zjistit, co se děje?

# Detailní logování
LOG_LEVEL=DEBUG python -m inventory_monitor.main --device problematic-device

# Exportovat surová SNMP data pro analýzu
python -m inventory_monitor.main --device router-01 --debug-dump snmp_data.json

Časté problémy

Problém: "No SNMP response from device"

  • ✅ Zkontroluj, že je SNMP povolené na zařízení
  • ✅ Ověř, že je zařízení dostupné (ping)
  • ✅ Zkontroluj SNMP credentials (community string / username+password)

Problém: "NetBox API error 401 Unauthorized"

  • ✅ Zkontroluj, že je token platný
  • ✅ Ověř, že má token správná oprávnění

Problém: "Žádná data z SNMP, ale zařízení odpovídá"

  • ✅ Zkontroluj, že je v NetBoxu správně vyplněná platforma (junos pro Juniper, sros pro Nokia)
  • ✅ Pro Cisco zařízení může být použit libovolný název platformy (výchozí handler)

Souhrn kroků pro nového uživatele

Checklist před prvním spuštěním:

  • Mám nainstalovaný NetBox s inventory-monitor-plugin
  • Mám API token z NetBoxu
  • Mám SNMP přístup k zařízením (community string nebo SNMPv3 credentials)
  • Zařízení v NetBoxu mají status Active, Primary IPv4 a správnou platformu
  • Nainstaloval jsem systémové závislosti (net-snmp)
  • Nainstaloval jsem Python balíček (pip install -e .)
  • Vytvořil jsem .env soubor s konfigurací
  • Otestoval jsem na jednom zařízení: python -m inventory_monitor.main --device test-device

Užitečné odkazy


Otázky?

Pokud něco nefunguje, podívej se do logů (logs/errors.log) nebo spusť s LOG_LEVEL=DEBUG pro detailní výstup.