Skip to content

Commit d73c55e

Browse files
author
anandkumarpatel
committed
Merge pull request #447 from CodeNow/bump-max-socket
add socket and file monitoring
2 parents e0d77c0 + ec08249 commit d73c55e

File tree

4 files changed

+37
-14
lines changed

4 files changed

+37
-14
lines changed

configs/.env

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ HASHIDS_LENGTH=6
2020
DOCKER_IMAGE_BUILDER_NAME="runnable/image-builder"
2121
DOCKER_IMAGE_BUILDER_VERSION="d1.3.1-v1.4.3"
2222
DOCKER_IMAGE_BUILDER_CACHE="/tmp"
23+
DOCKER_TIMEOUT=5000
2324
BUILD_END_TIMEOUT=100
2425
DATADOG_HOST="localhost"
2526
DATADOG_PORT=8125

lib/express-app.js

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@ var pkg = require('../package.json');
1010
var dogstatsd = require('models/datadog');
1111
var app = module.exports = express();
1212

13-
app.use(require('connect-datadog')({
14-
'dogstatsd': dogstatsd,
15-
'response_code':true,
16-
'method':true,
17-
'tags': ['name:api', 'logType:express', 'env:'+process.env.NODE_ENV]
18-
}));
13+
if (envIs('production')) {
14+
app.use(require('connect-datadog')({
15+
'dogstatsd': dogstatsd,
16+
'response_code':true,
17+
'method':true,
18+
'tags': ['name:api', 'logType:express', 'env:'+process.env.NODE_ENV]
19+
}));
1920

20-
if (envIs('development', 'local', 'io')) {
21-
app.use(morganFreeman());
22-
app.use(function (req, res, next) {
23-
console.log(req.method, '-', req.url);
24-
next();
25-
});
21+
app.use(dogstatsd.captureSocketCount);
22+
}
23+
24+
if (envIs('development', 'local', 'stage')) {
25+
app.use(morganFreeman('short'));
2626
}
2727

2828
app.use(require('./routes/github'));

lib/models/apis/docker.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ function Docker (dockerHost) {
2626
this.port = parsed.port || 4243;
2727
this.docker = dogerode(new Dockerode({
2828
host: this.dockerHost,
29-
port: this.port
29+
port: this.port,
30+
timeout: process.env.DOCKER_TIMEOUT
3031
}), {
3132
service: 'api',
3233
host: process.env.DATADOG_HOST,

lib/models/datadog/index.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ var StatsD = require('node-dogstatsd').StatsD;
33
var client = module.exports = new StatsD(
44
process.env.DATADOG_HOST,
55
process.env.DATADOG_PORT);
6-
6+
var exec = require('child_process').exec;
77

88
function captureSteamData (streamName, stream) {
99
stream.on('data', function(){
@@ -21,5 +21,26 @@ function captureSteamData (streamName, stream) {
2121
}
2222

2323

24+
function captureSocketCount (req, res, next) {
25+
var sockets = require('http').globalAgent.sockets;
26+
var request = require('http').globalAgent.requests;
27+
var key;
28+
29+
for (key in sockets) {
30+
client.gauge('api.sockets_open', sockets[key].length, 1, ['target:'+key]);
31+
}
32+
33+
for (key in request) {
34+
client.gauge('api.sockets_pending', request[key].length, 1, ['target:'+key]);
35+
}
36+
37+
exec('lsof -p ' + process.pid + ' | wc -l', function (err, stdout) {
38+
if (err) { return; }
39+
client.gauge('api.openFiles', parseInt(stdout), 1, ['target:'+key]);
40+
});
41+
42+
next();
43+
}
2444

2545
module.exports.captureSteamData = captureSteamData;
46+
module.exports.captureSocketCount = captureSocketCount;

0 commit comments

Comments
 (0)