2012-12-04 16 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