Commit graph

488 commits

Author SHA1 Message Date
a4335a047a
allow nonroutable for me 2026-01-23 13:10:12 -06:00
a0ba9285dd
bring in snmpkit 2026-01-23 12:52:17 -06:00
0056d35e9b
ignore more startup errors 2026-01-23 10:08:04 -06:00
3495767b8d
ignore startup errors 2026-01-23 10:06:25 -06:00
3fe0ccd392
routeros test 2026-01-23 09:53:03 -06:00
80d1864700
mac discovery 2026-01-23 09:22:08 -06:00
7bd3b1f9ec
arp 2026-01-23 08:40:57 -06:00
5f6ac5ddb9
update deployment 2026-01-23 07:47:00 -06:00
f402dcb7af
fix mikrotik sensors 2026-01-22 18:07:20 -06:00
639ffd4a2c
better discovery 2026-01-22 17:40:58 -06:00
96fc488023
sanitize snmp data and fix some cpu things 2026-01-22 16:53:01 -06:00
2856a0ccda
improved fallabck detection 2026-01-22 13:43:56 -06:00
17f4558702
implement timescaledb improvements 2026-01-22 13:24:14 -06:00
d401e0b036
mikrotik improvements 2026-01-22 13:05:28 -06:00
218b99972e
more tests 2026-01-22 11:51:35 -06:00
155b38ab94
feat: add APC, Arista, Calix, ADTRAN, Allied Telesis vendor modules
Add 5 new vendor modules for network infrastructure equipment:
- APC: UPS and PDU monitoring (battery, voltage, load, runtime)
- Arista EOS: Data center switches (CPU, memory)
- Calix: GPON/fiber access equipment
- ADTRAN AOS: NetVanta routers and switches
- Allied Telesis: AlliedWare/AlliedWare Plus switches

Total: 53 vendors, 88 profile names

Also cleanup commented AlertNotifier code from previous removal.
2026-01-22 11:00:21 -06:00
aec9807e97
feat: add Meraki/FortiWLC vendors, remove AlertNotifier temporarily
Vendors:
- Add Meraki vendor module (merakimr, merakims, merakimx profiles)
- Add FortiWLC vendor module for Fortinet wireless controllers
- Add cnpilotr profile to existing Cnpilot module
- 48 vendors now covering 77 profile names

Cleanup:
- Remove AlertNotifier module and tests (flaky, to be reimplemented)
2026-01-22 10:40:44 -06:00
74e409d6a6
feat: add Pepwave, Ceragon, Tranzeo, and CMM vendor modules 2026-01-22 10:22:19 -06:00
928055cbe3
feat: add FortiAP, D-Link AP, and Moxa AWK vendor modules 2026-01-22 10:12:49 -06:00
508ad99919
feat(snmp): add 6 more vendor modules (xirrus, alvarion, zyxel_wlc, proxim, altalabs, stellar) 2026-01-22 10:02:42 -06:00
e1bc56e065
feat(snmp): add 6 new vendor modules (cnwave60, cnmatrix, ruckus_sz, deliberant, engenius, grandstream) 2026-01-22 09:53:33 -06:00
7c2014842d
feat: add 5 new SNMP vendor modules
Add vendor-specific SNMP handling for:
- Aerohive (HiveOS wireless APs): client counts, CPU/memory, temperature
- Baicells (LTE CPE): RSRP, RSRQ, SINR, RSSI, tx power, temperature
- Cambium PTP (point-to-point radios): RSL, tx power, data rates, temperature
- Cisco WAP (standalone APs): clients, channel utilization, noise floor
- Netonix (WISP switches): temperatures, fan speed, PSU voltages, PoE power

Each module implements the Vendor behaviour with:
- profile_names/0 for profile matching
- detect_hardware/1 for model identification
- discover_wireless_sensors/1 for sensor discovery
- wireless_oid_defs/0 for debug data collection

All modules registered in vendor registry with comprehensive tests.
2026-01-22 09:42:48 -06:00
0a4482f974
feat: add 5 new vendor modules and fix dialyzer issues
Vendor modules added:
- Aviat (WTM microwave radios)
- Aruba (wireless controllers and APs)
- CiscoWLC (Cisco wireless LAN controllers)
- Teltonika (RUTOS LTE routers)
- Sub10 (mmWave backhaul radios)

Dialyzer fixes:
- Fix unknown type Devices.t/0 in alert.ex and device.ex
- Fix unmatched_return warnings across multiple files
- Add :exq to PLT for Exq function detection
- Remove dead code in base.ex, dynamic.ex, vendor.ex
- Fix Device.t() type spec to allow nil name field

Tests: 1437 tests, 0 failures
Dialyzer: 0 errors
Credo: no issues
2026-01-22 09:34:50 -06:00
8f1752e59c
feat: add more vendor modules and fix sensor discovery
New vendor modules for WISP equipment:
- Ruckus: ZoneDirector, SmartZone, Unleashed controllers
- DragonWave: Horizon Compact/Duo/Quantum microwave
- AirFiber: Ubiquiti AF 5/24/60 series (split from Airos)
- Racom: RAy and RAy3 microwave radios
- Exalt: ExtendAir microwave radios
- SIAE: ALFO 80HD microwave radios

Also fixes:
- sensor_value -> last_value consistency in YAML sensor discovery
- Test warnings (assert defs != [] -> assert [_ | _] = defs)

Total: 17 vendor modules, 162 tests passing
2026-01-22 08:59:50 -06:00
a83e63b3ad
feat: add vendor-specific SNMP modules for WISP equipment
Add 8 new vendor modules for wireless sensor discovery:
- PMP: Cambium PMP 450/430/100 and PTP series
- Mimosa: B5/B5c PTP and A5/A5c PTMP radios
- Siklu: EtherHaul mmWave radios
- Radwin: WinLink and JET series
- UniFi: Ubiquiti UniFi Access Points
- LigoOS: LigoWave and Deliberant devices
- cnPilot: Cambium cnPilot E and R series
- SAF: SAF Tehnika Integra/Lumina/CFIP series

Each module implements the Vendor behaviour with:
- profile_names/0: OS profile identifiers
- detect_hardware/1: device model detection
- wireless_oid_defs/0: sensor OID definitions
- discover_wireless_sensors/1: sensor discovery

Includes comprehensive tests for all modules (104 tests).
2026-01-22 08:48:38 -06:00
56bb855996
refactor: extract vendor-specific SNMP discovery to modules
Mirrors LibreNMS architecture where vendor-specific discovery logic
lives in OS PHP classes. Creates modular vendor system with:

- Vendor behaviour defining callbacks for profile_names, detect_hardware,
  discover_wireless_sensors, wireless_oid_defs
- Epmp vendor module for Cambium ePMP devices
- Airos vendor module for Ubiquiti AirOS devices
- Routeros vendor module for MikroTik devices with table-based discovery
- Registry module for dispatching to appropriate vendor by profile name

Removes 250+ lines of inline vendor code from dynamic.ex.
2026-01-22 08:34:35 -06:00
28a9517a1f
fix: use last_value field so sensor values are saved to database
- Change sensor_value to last_value to match Sensor schema
- Make wireless sensor_index unique using OID suffix
- Values now persist and can be graphed
2026-01-21 17:29:23 -06:00
985e3533df
feat: add additional ePMP sensors matching LibreNMS
Add all sensors that LibreNMS Epmp.php collects:
- GPS tracked/visible satellites
- Transmit power
- Channel width
- Network entry attempts/success/auth failures
2026-01-21 17:25:48 -06:00
605f8c09ec
feat: add discovered sensors table to debug tab
Display discovered sensors in a parsed table format showing type,
description, OID, value with unit, and state description for state
sensors.
2026-01-21 17:18:44 -06:00
74c9544688
feat: add wireless sensor discovery and fix YAML sensor parsing
- Add wireless sensor discovery for ePMP and AirOS devices
- Implement vendor-specific OIDs matching LibreNMS PHP discovery
- Fix table/state sensor discovery to handle map format from Client.walk
- Add discovered_sensors to debug data with values and state descriptions
- ePMP: frequency, clients, rssi, snr (rssi/snr for SM only)
- AirOS: frequency, capacity, ccq, clients, distance, noise-floor, power, quality, rate, rssi, utilization
2026-01-21 17:15:00 -06:00
12875d7f48
fix device table 2026-01-21 14:44:16 -06:00
c26e379dd7
fix device update handler 2026-01-21 14:42:55 -06:00
7656ac7212
import yamls 2026-01-21 14:30:04 -06:00
d68991c484
fix discovery issue 2026-01-21 13:07:30 -06:00
1b7c4f6a6a
update 2026-01-21 12:31:01 -06:00
f8c417a338
feat: add Cisco VTP VLAN discovery
- Add discover_vlans/1 to Cisco profile for VTP MIB discovery
- VTP OIDs: vtpVlanName, vtpVlanState, vtpVlanType
- Falls back to Q-BRIDGE-MIB when VTP not available
- Maps VTP states (operational, suspended, mtuTooBig)
- Maps VTP types (ethernet, fddi, tokenRing, etc.)
- Validates VLAN ID range (1-4094)
2026-01-21 11:32:18 -06:00
7e1fc35f2c
feat: add state sensor polling alongside numeric sensors
- Added state_sensors association to Snmp.Device schema
- Updated get_device_with_associations to preload state_sensors
- Added update_state_sensor and list_state_sensors functions to Snmp context
- Added state sensor polling task in PollerWorker parallel polling
- Poll state sensors via ENTITY-STATE-MIB OIDs every polling interval
- Detect and broadcast state changes (ok/warning/critical/unknown)
- State changes emit device events for real-time UI updates
2026-01-21 11:23:26 -06:00
ba5464332b
fix: use system ping command instead of raw ICMP sockets
- Rewrote Ping module to use system ping binary instead of raw ICMP
  sockets which required CAP_NET_RAW privileges
- Added iputils-ping package to Docker images for production
- Added proper IP address validation before executing ping command
- Updated tests to account for 1 second minimum timeout of system ping
- System ping binary is setuid root and works without elevated privileges
2026-01-21 11:15:59 -06:00
8509a4a64c
feat: display neighbor IP address in device neighbors tab 2026-01-21 11:01:48 -06:00
cba1f87f8f
fix: disable loading animations on chart graphs 2026-01-21 10:59:12 -06:00
1fc066d95b
feat: add memory pool and storage discovery (Phase 1.5)
- Add snmp_memory_pools table and MemoryPool schema
- Add snmp_storage table and Storage schema
- Add discover_memory_pools/1 for HOST-RESOURCES-MIB RAM/swap
- Add discover_storage/1 for HOST-RESOURCES-MIB disk storage
- Add comprehensive tests for schema validation and discovery
- Completes Phase 1 of discovery improvements
2026-01-21 10:57:08 -06:00
45ddcdac80
feat: add physical inventory discovery (Phase 1.4)
- Create snmp_physical_entities table with migration
- Add PhysicalEntity schema with entity_class validation
- Support parent/child hierarchy via parent_entity_id
- Implement discover_physical_entities/1 in Base profile
- Discover chassis, modules, PSUs, fans from ENTITY-MIB
- Map entity class integers to string names
- Add 10 schema tests and 4 discovery tests
- Fix flaky AlertNotifier test with unique names and mailbox clearing
2026-01-21 10:46:27 -06:00
1cf6f327ea
feat: add IP address discovery (Phase 1.3)
- Create snmp_ip_addresses table with migration
- Add IpAddress schema with ip_type validation (ipv4/ipv6)
- Add prefix_length validation based on ip_type
- Implement discover_ip_addresses/1 in Base profile
- Extract IP addresses from IP-MIB ipAdEntTable
- Support multiple IPs per interface with subnet masks
- Add 12 schema tests and 4 discovery tests
2026-01-21 10:36:19 -06:00
579a7bac21
add VLAN schema, migration, and discovery 2026-01-21 10:31:21 -06:00
c3e26a44d6
add state sensor schema, migration, and discovery 2026-01-21 10:25:01 -06:00
7c660169b7
better mib handling and tests 2026-01-21 10:07:07 -06:00
3abd70e133
use password for user regi 2026-01-21 09:13:08 -06:00
1d45699240
discovery no longer deletes historical data 2026-01-20 17:29:58 -06:00
c54b5d81bb
more dark mode 2026-01-20 17:23:11 -06:00
fbad8c64b2
dark mode 2026-01-20 16:56:49 -06:00