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}/`);
});