towerops/priv/mibs/README.md

70 lines
2.3 KiB
Markdown

# SNMP MIB Files
This directory contains SNMP MIB (Management Information Base) files used by Towerops for network device monitoring.
## Directory Structure
- `standard/` - Standard IETF/IANA MIBs (IF-MIB, ENTITY-MIB, etc.)
- `cisco/` - Cisco vendor-specific MIBs
- `mikrotik/` - MikroTik vendor-specific MIBs
- `net-snmp/` - Net-SNMP specific MIBs (LM-SENSORS, UCD-SNMP)
## Source
MIB files are sourced from the [LibreNMS project](https://github.com/librenms/librenms/tree/master/mibs), which maintains a comprehensive collection of vendor MIBs.
## Purpose
These MIB files serve as:
1. **Reference Documentation** - Authoritative source for OID definitions
2. **Validation** - Tests verify that hardcoded OIDs in profile modules match MIB definitions
3. **Discovery** - Can be browsed to understand available SNMP objects
## Usage in Code
Profile modules (e.g., `Towerops.Snmp.Profiles.Cisco`) contain hardcoded OID strings for performance. These are validated against MIB files during testing to ensure accuracy.
Example from `Towerops.Snmp.Profiles.Base`:
```elixir
@interface_oids %{
if_index: "1.3.6.1.2.1.2.2.1.1", # Validated against IF-MIB
if_descr: "1.3.6.1.2.1.2.2.1.2" # Validated against IF-MIB
}
```
## Importing MIBs (Development)
MIB files are **not tracked in git** (gitignored) to avoid bloating the repository. Import them locally using the Mix task:
```bash
# Import all MIBs from LibreNMS
mix copy_mibs --source-path ~/librenms/mibs
# Import specific vendors only
mix copy_mibs --source-path ~/librenms/mibs --vendors mikrotik,cisco,ubiquiti
```
This copies MIB files to `priv/mibs/` in development. The directory structure (with `.gitkeep` files) is tracked in git, but the MIB file contents are ignored.
## Adding New MIBs
To add support for a new vendor:
1. Import MIBs using `mix copy_mibs` (development) or `mix upload_mibs` (production)
2. Create a new profile module in `lib/towerops/snmp/profiles/`
3. Add OID references in the profile module
4. Tests will automatically validate against the imported MIBs
## MIB File Format
MIB files use ASN.1 (Abstract Syntax Notation One) format, which defines:
- Object identifiers (OIDs)
- Data types
- Access levels
- Descriptions
## Testing
See `test/towerops/snmp/mib_validation_test.exs` for OID validation tests.