This repository was archived by the owner on Jun 30, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmon.js
94 lines (75 loc) · 2.26 KB
/
mon.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env node
var moment = require('moment');
require('log-timestamp')(function() {
return '[' + moment().format('YYYY-MM-DD hh:mm:ss') + ']'; }
);
var fs = require("fs");
var url = require("url");
var path = require("path");
var ConsoleController = require("./controller/console.js")
var ElasticsearchController = require("./controller/elasticsearch.js")
var ServerController = require("./controller/server.js")
var Config = require("./config.js");
var eol = require("os").EOL;
var optimist = require("optimist")
.default('es-port', 9200)
.default('es-index-prefix', 'mon-')
.usage("Usage:" + eol +
" mon [<configfile>]" + eol +
" mon --server <address>:<port> [<configfile>]" + eol +
" mon serve [--port <port>]");
var _ = require("underscore");
var controller;
var argv = optimist.argv;
switch (argv._[0])
{
case "serve":
if (argv.port && !_.isNumber(argv.port)) {
console.log(optimist.help());
return;
}
var port = argv.port || 8080;
controller = new ServerController(port);
break;
default:
if (argv.server) {
if (!_.isString(argv.server)) {
console.log(optimist.help());
return;
}
if (!/^http:\/\//i.exec(argv.server))
argv.server = "http://" + argv.server;
var server = url.parse(argv.server);
}
if (argv.var) {
if (!_.isArray(argv.var))
argv.var = [argv.var];
var variables = _.compact(_.map(argv.var, function(variable) {
var match = /^(.*?)=(.*?)$/.exec(variable);
if (!match)
return null;
return {
name: match[1],
value: match[2]
};
}));
}
var configFile = argv._[0] || path.resolve(__dirname, "./config/default.json");
var config = Config.parse(fs.readFileSync(configFile).toString()).instantiate(variables);
if (argv['es-address']) {
var elasticsearchConfig = {
address: argv['es-address'],
port: argv['es-port'],
indexPrefix: argv['es-index-prefix'],
};
controller = new ElasticsearchController(server, config, elasticsearchConfig);
}
else {
controller = new ConsoleController(server, config);
}
}
if (!controller) {
console.log(optimist.help());
return;
}
controller.run();