-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathcontroller.js
70 lines (66 loc) · 1.94 KB
/
controller.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
require('dotenv').config()
const cron = require('node-cron')
const async = require('async');
const request = require('request')
const influx = require('./model');
/*
* Node scheduler which runs on every 10 seconds.
*/
module.exports.indentify_node_process = cron.schedule('*/10 * * * * *', function () {
console.log("indentify_node_process called()");
pm2Data().then(function (pm2Response) {
let pm2DataResponse = JSON.parse(pm2Response);
async.map(pm2DataResponse.processes, (process, callback) => {
if (process) {
let influx_input = {};
influx_input['measurement'] = 'pm2-node';
influx_input['tags'] = {
"host": process.name || null
};
influx_input['fields'] = {
"NAME": process.name || null,
"CPU": process.monit.cpu || 0,
"MEM": process.monit.memory || 0,
"PROCESS_ID": process.pid || 0
};
callback(null, influx_input);
} else {
callback("Error", null);
}
}, (err, result) => {
if (err) {
console.log("Err :: ", err);
} else {
influx.writePoints(result)
.then(() => {
console.log('write point success');
}).catch(err => console.error(`write point fail, ${err.message}`));
}
});
}, function (rejectedValue) {
console.log("rejectedValue :: ", rejectedValue);
}).catch((err) => {
console.log(err);
});
}, false);
/*
* this function make request to your pm2 microservices server and
* get all the data of all microservices.
*/
var pm2Data = function () {
return new Promise((resolve, reject) => {
request({
method: "GET",
url: `http://${process.env.PM2_IP}:9615/`
}, function (error, response, body) {
if (error) {
reject();
} else if (response && response.statusCode == 200) {
resolve(body);
} else {
console.log("Did not get any response!");
reject();
}
});
});
};