James Allen 12 лет назад
Родитель
Сommit
00c0036ca5

+ 1 - 0
libraries/metrics/metrics.coffee

@@ -33,4 +33,5 @@ module.exports =
 
 	mongodb: require "./mongodb"
 	http: require "./http"
+	open_sockets: require "./open_sockets"
 

+ 19 - 0
libraries/metrics/open_sockets.coffee

@@ -0,0 +1,19 @@
+URL = require "url"
+seconds = 1000
+
+module.exports = OpenSocketsMonitor =
+	monitor: (logger) ->
+		setInterval () ->
+			OpenSocketsMonitor.gaugeOpenSockets()
+		, 5 * seconds
+
+	gaugeOpenSockets: () ->
+		Metrics = require "./metrics"
+		for url, agents of require('http').globalAgent.sockets
+			url = URL.parse("http://#{url}")
+			hostname = url.hostname?.replace(/\./g, "_")
+			Metrics.gauge "open_connections.http.#{hostname}", agents.length
+		for url, agents of require('https').globalAgent.sockets
+			url = URL.parse("https://#{url}")
+			hostname = url.hostname?.replace(/\./g, "_")
+			Metrics.gauge "open_connections.https.#{hostname}", agents.length

+ 1 - 1
libraries/metrics/package.json

@@ -4,7 +4,7 @@
   "description": "A drop-in metrics and monitoring module for node.js apps",
   "dependencies": {
     "lynx": "~0.1.1",
-    "coffee-script": "~1.7.1",
+    "coffee-script": "1.6.0",
     "underscore": "~1.6.0"
   }
 }