Notes /
MonitoringMonitoringIn order to check the behavior of the accessors in a running swarmlet, monitoring routines are added. For this, an object monitor is added as a property of an accessor during the construction. this.monitor = {}; The { 'eventName': { 'count' : number, 'firstOccurrenceDate' : date, 'latestOccurrenceDate' : date } } Therefore, for a given event, we record the number of occurrences, as well as the date and time of the first and last calls. If the accessor is top level, composite, extended or implemented, the possible events are: ImplementationTwo functions are added for this purpose. The first one is the prototype function that updates the monitoring information (count, date/time of the first event and date/time of the last event). The event name is passed as a parameter. Accessor.prototype.updateMonitoringInformation = function(info) For visualization and analysis purpose, the function getMonitoringInformation() is exported by commonHost. This function return an object of objects. Each object (referenced by the accessor name) contains:
function getMonitoringInformation() Web Service on Node for monitoring information retrievalA web service running on Node returns the monitoring information of all accessors in JSON format. In order to test this service, you need first to un-comment the code in the bottom of nodeHost.js file. After running the swarmlet on a node host, it is possible to open, from the browser, the following URL: http://127.0.0.1:8082/monitor/. A JSON object is displayed. It shows for each accessor: the name, the 'type'and all the monitoring information that are stored. Below is the code for the web service creation: var http = require('http'); var url = require('url'); // Create a server http.createServer(function (request, response) { var reqParts = request.url.split("/"); console.log(reqParts); if (reqParts[1] == "monitor") { // HTTP Status: 200 : OK // Content Type: text/plain response.writeHead(200, {'Content-Type': 'text/html'}); // Write the content of the file to response body //console.log(commonHost.getMonitoringInformation()); // Retrieve all monitoring information var allMonitoringInformation = commonHost.getMonitoringInformation(); // Parse the elements and send them one by one Object.keys(allMonitoringInformation).forEach(function (accName) { var accMonitoringInformation = {}; accMonitoringInformation[accName] = allMonitoringInformation[accName]; console.log(JSON.stringify(accMonitoringInformation)); response.write(JSON.stringify(accMonitoringInformation)); }); } else { response.writeHead(404, {'Content-Type': 'text/html'}); response.write("Hello, nothing received!"); } // Send the response body response.end(); }).listen(8082); See Also |