mirror of
https://github.com/openmhz/trunk-server.git
synced 2026-11-13 09:17:30 -05:00
First Commit
This commit is contained in:
164
backend/support/error_stats.js
Normal file
164
backend/support/error_stats.js
Normal file
@@ -0,0 +1,164 @@
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var config = require('./config/config.json');
|
||||
var csvWriter = require('csv-write-stream');
|
||||
|
||||
var mongo = require('mongodb');
|
||||
var ObjectID = require('mongodb').ObjectID;
|
||||
mongo.BSONPure = require('bson').BSONPure;
|
||||
var BSON = mongo.BSONPure;
|
||||
var MongoClient = require('mongodb').MongoClient,
|
||||
assert = require('assert');
|
||||
var db = require('./db');
|
||||
var getSize = require('get-folder-size');
|
||||
var util = require("util"),
|
||||
rl = require('readline'),
|
||||
spawn = require('child_process').spawn;
|
||||
|
||||
exports.test = function() {
|
||||
|
||||
|
||||
map = function() {
|
||||
|
||||
for (var idx = 0; idx < this.freqList.length; idx++) {
|
||||
var key = this.freqList[idx].freq;
|
||||
if (this.freqList[idx].errors >= 0) {
|
||||
if (this.freqList[idx].len > 0) {
|
||||
var errRatio = Math.round((this.freqList[idx].errors / this.freqList[idx].len) * 100 * 1e2) / 1e2 ;
|
||||
} else {
|
||||
var errRatio = 0;
|
||||
}
|
||||
var value = {
|
||||
|
||||
"spikes": this.freqList[idx].spikes,
|
||||
"errRatio": errRatio
|
||||
};
|
||||
emit(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
reduce = function(key, values) {
|
||||
var spikes = new Array();
|
||||
var errors = new Array();
|
||||
printjson(key);
|
||||
printjson(values);
|
||||
values.forEach(function(v) {
|
||||
spikes.push(v['spikes']);
|
||||
errors.push(v['errRatio']);
|
||||
});
|
||||
return {
|
||||
"spikes": spikes,
|
||||
"errors": errors
|
||||
};
|
||||
}
|
||||
db.get().collection('calls', function(err, transCollection) {
|
||||
|
||||
transCollection.mapReduce(map, reduce, {
|
||||
query: {
|
||||
"shortName": "tester"
|
||||
},
|
||||
out: {
|
||||
inline: 1
|
||||
},
|
||||
}, function(err, results) {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
} else {
|
||||
|
||||
for (var freq in results) {
|
||||
if (results[freq].value.spikes) {
|
||||
writer.pipe(fs.createWriteStream(results[freq]._id + '.csv'));
|
||||
|
||||
for (var idx = 0; idx < results[freq].value.spikes.length; idx++) {
|
||||
writer.write({
|
||||
"spikes": results[freq].value.spikes[idx],
|
||||
"errors": results[freq].value.errors[idx]
|
||||
});
|
||||
}
|
||||
}
|
||||
/*results[freq].forEach(function(err){
|
||||
writer.write(err)
|
||||
});*/
|
||||
|
||||
console.log("Freq: " + freq + "\n" + util.inspect(results[freq]));
|
||||
}
|
||||
writer.end();
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
db.connect(function(err) {
|
||||
if (err) {
|
||||
console.log('Unable to connect to Mongo.')
|
||||
process.exit(1)
|
||||
} else {
|
||||
//call_stats.build_usage();
|
||||
//call_stats.build_call_volume();
|
||||
//exports.test();
|
||||
var start = new Date();
|
||||
start.setHours(start.getHours() - 1);
|
||||
var collection = db.get().collection("calls");
|
||||
collection.aggregate([
|
||||
{
|
||||
$match: {
|
||||
time: {
|
||||
$gte: start
|
||||
},
|
||||
shortName: "wmata"
|
||||
}
|
||||
},
|
||||
|
||||
{ "$unwind": "$freqList"
|
||||
},
|
||||
{ "$project": {
|
||||
"freqList":1,
|
||||
"errorRatio": { $cond: [ { $eq: [ "$freqList.len", 0 ] }, 0, {"$multiply": [ {"$divide": ["$freqList.errors", "$freqList.len"]}, 100]} ] },
|
||||
"time": { $dateToString: { format: "%H:%M:%S", date: "$time" } }
|
||||
}},
|
||||
{
|
||||
"$group": {
|
||||
"_id": {
|
||||
freq: "$freqList.freq"
|
||||
},
|
||||
|
||||
"time": { $push: "$time"},
|
||||
"errors": { $push: "$errorRatio"},
|
||||
"spikes": { $push: "$freqList.spikes"}
|
||||
}
|
||||
},
|
||||
{$sort:{_id:-1}}
|
||||
], function(err, results) {
|
||||
if (err) console.error("ERror" + err);
|
||||
|
||||
|
||||
for (var freq in results) {
|
||||
if (results[freq].errors) {
|
||||
var writer = csvWriter();
|
||||
writer.pipe(fs.createWriteStream(results[freq]._id.freq + '.csv'));
|
||||
|
||||
for (var idx = 0; idx < results[freq].spikes.length; idx++) {
|
||||
writer.write({
|
||||
"time": results[freq].time[idx],
|
||||
"spikes": results[freq].spikes[idx],
|
||||
"errors": results[freq].errors[idx]
|
||||
});
|
||||
}
|
||||
writer.end();
|
||||
console.log("Freq: " + freq + "\n" + util.inspect(results[freq]));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user