drakelid / isp-service-impact-manager
ISP Service & Customer Impact Manager - customer/service dependency, impact and blast-radius intelligence for LibreNMS
Package info
github.com/Drakelid/ISP-Service-Customer-Impact-Manager
pkg:composer/drakelid/isp-service-impact-manager
Requires
- php: ^8.2
- ext-json: *
- illuminate/contracts: ^11.0 || ^12.0
- illuminate/support: ^11.0 || ^12.0
- librenms/plugin-interfaces: ^1.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/framework: ^12.10
- laravel/pint: ^1.18
- orchestra/testbench: ^10.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11.0
README
drakelid/isp-service-impact-manager adds customer, service, circuit, path,
dependency, blast-radius, and monitoring-derived SLA context to LibreNMS. It
keeps LibreNMS devices and ports authoritative and does not modify core files.
It provides deterministic redundancy-aware health, cached customer impact,
safe what-if simulation, probable shared failure domains, risk analysis,
topology, reconciliation, import/export, audit history, and SLA reports.
Missing telemetry is UNKNOWN, never automatically an outage.
Requirements
- A currently supported LibreNMS installation
- PHP 8.2, 8.3, or 8.4
- A LibreNMS-supported MariaDB/MySQL database
- LibreNMS's scheduler running every minute
Installation
For an automated production install/update, copy
tools/install-latest.sh to the LibreNMS host and run:
sudo bash tools/install-latest.sh
# Optional exact version or alternate installation directory:
sudo LIBRENMS_DIR=/opt/librenms bash tools/install-latest.sh 1.0.0
The default constraint is ^1.0, so it installs the newest compatible 1.x
release and records that constraint in composer.plugins.json.
For a manual installation, run the following from the LibreNMS directory.
Run from the LibreNMS directory as the LibreNMS service account:
cd /opt/librenms
./scripts/composer_wrapper.php require drakelid/isp-service-impact-manager
php artisan migrate --force
php artisan plugin:enable isp-service-impact-manager
php artisan isim:install-check
php artisan isim:health
If your LibreNMS release uses the web plugin manager, enable the plugin there
instead. Grant view isim and the narrower management abilities through
LibreNMS role management. Composer installation survives daily.sh; do not
copy the package into LibreNMS core directories.
Publish deployment configuration only when local overrides are needed:
php artisan vendor:publish --tag=isim-config
Open /plugin/isp-service-impact-manager/setup, add or import inventory, then:
php artisan isim:reindex php artisan isim:evaluate php artisan isim:refresh-impact
Import and export
Imports preview by default and never delete records absent from a file:
php artisan isim:import customers customers.csv php artisan isim:import customers customers.csv --apply php artisan isim:export all --format=json --out=/secure/backup/directory
Supported kinds are customers, services, endpoints, circuits, paths,
and path_components. Contacts are excluded from exports by default.
NetBox source of truth
Administrators can open Settings → NetBox, enter a read-only NetBox API token, test the connection, and enable automatic synchronization. The token is encrypted with LibreNMS's application key and never returned to the browser or audit log. Synchronization is queued and runs at the configured interval.
NetBox tenants become customers. Every tenant-owned NetBox circuit becomes a
circuit-backed service with an indexed path; isim_service_ref and the other
custom fields optionally override the generated defaults. NetBox-owned rows carry a durable source ID: upstream changes
update them, upstream removals disable rather than delete them, and local-only
inventory remains untouched.
The connector also indexes sites, locations, devices, interfaces, cables, prefixes, IP addresses, VLANs, VRFs, IPAM services, L2VPNs, tunnels, virtual circuits, and their termination records. IPAM services, L2VPNs, tunnels, and virtual circuits assigned to a tenant become ISIM services. NetBox devices are matched to existing LibreNMS devices by exact name, display name, or primary IP; interfaces are then matched by exact interface name. Ambiguous identities are kept as source context but never attached to monitoring paths automatically.
Useful NetBox custom fields are:
Tenant: isim_customer_ref, isim_customer_type, isim_priority, isim_sla_class
Circuit: isim_circuit_ref, isim_service_ref, isim_service_name,
isim_service_type, isim_criticality, isim_redundancy_mode,
isim_required_paths, isim_path_role, isim_sla_class
CLI preview and synchronization:
php artisan isim:netbox-sync --dry-run php artisan isim:netbox-sync
See Operations, Upgrading, Development, and Security.
The standalone suite contains 225 tests and 685 assertions. CI covers PHP 8.2-8.4, Pint, PHPStan, MariaDB migrations, and advisory LibreNMS integration.
Licensed under GPL-3.0-or-later.