LibreNMS Integration #44
casudo
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
LibreNMS doesn't have a native KiwiSSH endpoint like Oxidized has (
/api/v0/oxidized), but there are still ways to configure LibreNMS as device source for KiwiSSH.Tip
I will create a feature request for a dedicated KiwiSSH endpoint which makes the integration with LibreNMS very easy in the future.
Option 1: Use Oxidized's
/api/v0/oxidizedendpointFollow the below steps so the API response will contain all information we need to make it running:
http://<librenms-ip>/api/v0/oxidizedand check the result looks similiar to this:[ { "hostname": "192.168.100.11", "os": "ping", "ip": "192.168.100.11" }, { "hostname": "192.168.100.12", "os": "ping", "ip": "192.168.100.12", "group": "test-group" }, { "hostname": "192.168.10.13", "os": "ping", "ip": "192.168.10.13" } ]sourcessection in the YAML fileThat's it. KiwiSSH will now load the devices from your LibreNMS instance as source devices.
Option 2: Use LibreNMS device's
/api/v0/devicesendpointThe
devicesendpoint many information about all configured devices, but natively no group(s) the devices are in.If you want to use this endpoint, we need to get a little bit creative to place the device into a group.
Tip
If you only have/need a single group, use this endpoint and add the
default_groupkey to thesources.httpsection in the kiwissh.yaml file.You'll need to decide which field you'll want to use a group key - we will misuse that field to determine the group the device is in. Check the example output of the endpoint below:
Example output:
{ "status": "ok", "devices": [ { "device_id": 3, "inserted": "2026-07-09 20:30:42", "hostname": "192.168.100.13", "sysName": null, "display": "Lite 8 PoE Switch Office", "display_template": "Lite 8 PoE Switch Office", "ip": "192.168.100.13", "overwrite_ip": null, "community": null, "authlevel": null, "authname": null, "authpass": null, "authalgo": null, "cryptopass": null, "cryptoalgo": null, "snmpver": "v2c", "port": 161, "transport": "udp", "timeout": null, "retries": null, "snmp_disable": 1, "bgpLocalAs": null, "sysObjectID": null, "snmpEngineID": null, "sysDescr": null, "sysContact": null, "version": null, "hardware": "", "features": null, "location_id": null, "os": "ping", "status": 1, "status_reason": "", "ignore": 0, "disabled": 0, "uptime": null, "agent_uptime": 0, "last_polled": "2026-07-11 19:12:51", "last_poll_attempted": null, "last_polled_timetaken": 1.1761538982391, "last_discovered_timetaken": 1.0554258823395, "last_discovered": "2026-07-11 14:00:01", "last_ping": "2026-07-11 19:12:51", "last_ping_timetaken": 0.25, "purpose": "this is the description field", "type": "", "serial": null, "icon": null, "poller_group": 0, "override_sysLocation": 0, "notes": null, "port_association_mode": 1, "max_depth": 0, "disable_notify": 0, "ignore_status": 0, "mtu_status": 1, "dependency_parent_id": null, "dependency_parent_hostname": null, "location": null, "lat": null, "lng": null }, { ... }, { ... } ], "count": 3We could use the description field in the GUI (
purposein the API response) to place the device into a group.The kiwissh.yaml file
sourcessection would look like this:All reactions