Repository navigation
Router integration policy: OpenWrt and SNMP in core, external agents for everything else #1575
Replies: 5 comments 1 reply
|
This policy now has a matching implementation, so the boundary is not just a document any more. NetPulse 2.49.x ships an Integrations section that deploys a vendor pusher from the app:
What is actually proven so far: RouterOS, end to end, against a real CHR on RouterOS 7.25. Read-only API user, 30 s interval, then edited to 45 s from the UI and the pushes moved to 45 s without touching anything else. Both bugs found during that test are fixed and released. What is not proven: the @Bann-DEV, you have the dhd nodes (RT-AX92U) and you already know this platform better than I do from the Concretely, what I would like to learn from a real device:
@samex, the RouterOS path is the one I could validate end to end, so it is the closest to what you started in #1054. The difference is that RouterOS support now lives in the external pusher and the core only keeps the signed contract, which is why your fork does not need to be rebased against the server any more. If you still have a RouterOS box, I would be interested in what the pusher gets wrong on your model. The CHR I used is x86_64 with a read-only API user on port 8728, so real hardware may differ on the binary API handshake, on which resources answer, and on the units of the throughput counters. Families I have not touched: CCR, CRS and the Chateau line. @pl-komuch, your MikroTik hardware is SwOS on the CSS switches, which is SNMP and already covered, so this particular path does not apply to you. If you also have a RouterOS device lying around, the same invitation stands. Otherwise ignore this part and keep the SNMP route working, it is doing the job. No obligation and no rush. If you prefer, I can open a dedicated issue with a checklist and we work it there, keeping this thread for the policy. Either way, if the answer is that the ssh mode needs a different contract for non-OpenWrt targets, or that RouterOS needs a compatibility matrix before it can be called supported, those are useful answers too and they shape the next release. |
|
Tracked as #1681 with the layout part already designed: binary and configuration under Two things I would rather not guess and that change the design:
If you can answer those two, the implementation is a small change to the script generator plus its tests, and I can have it in a release right away. |
|
The announcement is out: NetPulse 2.50.0 ships the complete integrations system, and vendor compatibility is now a release headline rather than a plan. What 2.50.0 announces as supported:
How it stays clean, for anyone joining the thread: every vendor lives in the separate netpulse-integrations repository and ships as a standalone binary against the signed ingest contract. The server only downloads and runs the code for a vendor you configure, so owning three routers does not mean carrying code for the other thirty platforms. Compatibility grows, the server binary carries no vendor code, and the shared surface everyone has to maintain stays small. Bbox is the next one waiting: the integration is merged in netpulse-integrations and the core already lists it, it just needs its first |
|
Hello, However, i have a second part of the question: what about integrating just some fields in working data collection? let me explain: owrt based 5g modems. |
|
Two answers, and the first one has a shortcut you may not have tried. The GS308E: check SNMP before writing a pusher. Without a MAC table per port the switch cannot feed the clients-per-port view, that is true. But NetPulse already reads managed switches over SNMP, and the core walks the standard bridge MIB ( The 5G modem is not an integration, it is a section of the OpenWrt agent. The native agent already runs on the router and sends system, interfaces, wireless, DHCP and FDB. What wwand gives you is modem state (signal, operator, bands, SIM), which belongs in the same payload as a One caveat for both: read-only, and real fixtures. That is the bar in this repository. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
NetPulse started as an OpenWrt-first tool: one static server binary, a small native agent on the router, and SNMP for switches and other generic devices. That boundary is now explicit.
What lives in NetPulse
POST /api/ingest/agent, plus history, topology, alerts and the UI.What runs beside NetPulse
Those belong in an external Go agent in the shared netpulse-integrations repository. Each vendor gets a directory and a maintainer chosen through
CODEOWNERS. The agent can run on a PC, a NAS, a small server or a container, normally as a systemd service. Docker is not required.The external agent sends signed payloads to NetPulse. It uses the same router identity, freshness rules, history and UI. NetPulse owns the contract and the generic data model. The maintainer of each directory owns the vendor client and its releases.
Why this boundary
A vendor adapter in the server needs hardware, firmware and time that the core project may not have. When nobody validates it, it stays in the tree as plausible-looking code that can break silently. Keeping vendor clients outside lets each integration ship and be tested on its own schedule, independently from other integrations and from NetPulse releases. It also means an OpenWrt router never carries code for RouterOS, Bbox or another platform.
A central repository makes integrations easy to find and gives them shared CI. Directory ownership keeps responsibility with the person who can test the hardware.
How to propose a new integration
Current transitions
bbox-pusherwas proposed in Feat/bbox integration #1527. It would live inbbox/, with juflo as the directory maintainer if he accepts.routeros/in the integrations repository (routeros: move polling from the server to the external pusher #1574). Existing installations will migrate to the external agent. There will be no hidden RouterOS compatibility path in the server.wlinside the router, so a PC-side pusher is not enough. It would need a separate agent in the integrations repository, maintained by someone with that hardware.The technical contract, payload semantics, authentication, testing and deployment details are in the guide: https://github.com/gnacho/netpulse/blob/main/docs/external-integrations.md
If you have hardware for one of these families and want to maintain its directory, comment with the model, firmware and the data you can collect read-only.
All reactions