Statistics Export via POST
The Statistics Export allows querying the API of the Allegro Network Multimeter and transmit JSON results to a remote server via HTTP POST requests. The API path can be determined by using a browser debug console on any of the modules of the Allegro Network Multimeter.
The configuration can be found in the menu "Settings -> Remote access & export -> Statistics export".
Example:
- Interval: 60
- Internal URL Path: /API/stats/interfaces
- External POST target: http://10.0.0.1:3000/interface-stats-for-mm-1234
This will generate a POST /interface-stats-for-mm-1234 request to 10.0.0.1 every minute and send the interface statistics of the Allegro Network Multimeter.
Example receiving server
To test the correct setup, a simple example server using Node.js can be used to receive the POST requests and show the transmitted data.
The following script is a basic Node.js server (with minimal error handling) which reads all POST requests and stores them to a file:
const http = require('http'); const fs = require('fs'); const listenAddress = '0.0.0.0'; const port = 3000; let fileCount = 1; const server = http.createServer((req, res) => { if (req.method != 'POST') { res.statusCode = 405; res.end(); return; } let id = fileCount++; let outputFilename = `${req.url.substring(1).replace(/\//g, '_')}_${id}.json`; console.log(`${id}: ${req.method} ${req.url} => ${outputFilename}`); let dataChunks = []; req.on('data', chunk => dataChunks.push(chunk)); req.on('end', () => { let data = Buffer.concat(dataChunks); fs.writeFile(outputFilename, data, (err) => { if (err != null) { console.log(err); res.statusCode = 500; } else { res.statusCode = 200; } res.end(); }); }); }); server.listen(port, listenAddress, () => { console.log(`Server running at http://${listenAddress}:${port}/`); });