2012-12-04 13 views
0

我想从一个NodeJS程序的Monit中获取状态。在我的monitrc中,我将它设置为使用端口2812,但我不确定在节点程序中该做什么。任何建议将不胜感激。如何从NodeJS程序的Monit获取状态?

我补充一点,我现在一无所知,但我已经试过:

var net = require('net'); 

var client = net.connect({port: 2812}, 
    function() { //'connect' listener 
    console.log('client connected'); 
    client.write('monit status'); 
}); 
client.on('data', function(data) { 
    console.log(data.toString()); 
    client.end(); 
}); 
client.on('end', function() { 
    console.log('client disconnected'); 
}); 

,输出:

client connected 
HTTP/1.0 400 Bad Request 
Date: Tue, 04 Dec 2012 17:03:15 GMT 
Server: monit 5.3.2 
Content-Type: text/html 
Connection: close 

<html><head><title>Bad Request</title></head><body bgcolor=#FFFFFF><h2>Bad Request</h2>Cannot parse request<p><hr><a href='http://mmonit.com/monit/'><font size=-1>monit 5.3.2</font></a></body></html> 

client disconnected 

这比仅此而已,因为它实际上列出的monit作为服务器,但我不知道如何使其工作。

回答

0

我想通了。原来是我想要做的是:

var http = require('http'); 

var options = { 
    hostname: '127.0.0.1', 
    port: 2812, 
    method: 'GET' 
}; 

var req = http.request(options, function(res) { 
    console.log('STATUS: ' + res.statusCode); 
    console.log('HEADERS: ' + JSON.stringify(res.headers)); 
    res.setEncoding('utf8'); 
    res.on('data', function (data) { 
    console.log('BODY: ' + data); 
    }); 
}); 

req.on('error', function(e) { 
    console.log('problem with request: ' + e.message); 
}); 

req.end(); 
+0

此外,它并没有真正做我想做的事,我不太明白什么是可能通过连接通过端口MONIT做。但至少这是有效的。 – user1756980