我已經使用Telegraf + InfluxDB + Grafana監控過NodeJS應用程序,但這是我第一次嘗試監視Dokku應用程序,目前爲止沒有成功。Telegraf守護進程沒有收到與Dokku一起部署的應用程序的指標
我有以下設置
app server monitoring serveur
- telegraf daemon (listening on udp 8125) ------> InfluxDB + Grafana
- dokku
- myapp : sending metrics on localhost:udp:8125
我還沒有被telegraf
收到來自myapp
發送上udp://localhost:8125
指標的問題。
從telegraf的連通influxdb和grafana是好的,因爲我跑的應用服務器上運行以下命令:
echo "foobar:1|c" | nc -u -w0 127.0.0.1 8125
我可以想象裏面Grafana的foobar
計數器增量。
所以我猜這個問題是由於myapp
或我如何配置Dokku。
在myapp(一個節點JS應用程序)中,我使用hot-shots包發送指標(也嘗試使用lynx而沒有成功)。
這是我用來instanciate statsd客戶端的代碼。
var StatsD = require('hot-shots');
var client = new StatsD();
// Attaching an error handler to client's socket
client.socket.on('error', function(error) {
console.error('StatsD client error in socket: ', error);
});
我在應用程序啓動時增加了一個計數器來指示重新啓動。這是通過下面的代碼完成:
metrics.increment('server_restart', function(err, bytes) {
if (err) {
console.log(err);
} else {
console.log('StatsD sent : ', bytes);
}
});
裏面的應用服務器,我進行部署後跑了dokku logs myapp
。
我得到以下輸出
$ dokku logs myapp
2017-05-06T14:51:19.977938845Z app[web.1]:
2017-05-06T14:51:19.977996938Z app[web.1]: > [email protected] start /app
2017-05-06T14:51:19.978002950Z app[web.1]: > node .
2017-05-06T14:51:19.978005766Z app[web.1]:
2017-05-06T14:51:21.849086537Z app[web.1]: StatsD sent : 18
$
如此看來,該指標有效載荷正確的正確的端口上發送,但它從來沒有達到telegraf。
- 在Dokku中是否有任何配置要授權外部UDP請求到本地主機?
- 我能做些什麼來進一步調試呢?