我们在Amazon EC2实例上托管的docker容器中运行NodeJS应用程序。到
要使用Datadog启用Monitoring for Node.js应用程序,我们使用datadog-metrics库并将其与我们的应用程序集成。我们基本上需要将以下Javascript代码保存到名为example_app.js
的文件中
var metrics = require('datadog-metrics');
metrics.init({ **host: 'myhost', prefix: 'myapp.'** });
function collectMemoryStats() {
var memUsage = process.memoryUsage();
metrics.gauge('memory.rss', memUsage.rss);
metrics.gauge('memory.heapTotal', memUsage.heapTotal);
metrics.gauge('memory.heapUsed', memUsage.heapUsed);
metrics.increment('memory.statsReported');
}
setInterval(collectMemoryStats, 5000);
虽然,我们能够成功地将指标发布到datadog,但我们想知道这是否可以自动化。我们希望将它构建到我们的docker镜像中,因此需要一种自动方式来获取主机名,至少能够使用docker主机名,如果可能的话。因为到目前为止我们手动指定“myhost”和“myapp” “手动值。有没有更好的方法将AWS实例主机名值提取到%myhost?
答案 0 :(得分:2)
为什么不试试?
var os = require(“os”);
var hostname = os.hostname();
它将返回docker容器的主机名。如果您未使用docker run -h hostname image command
之类的内容明确设置主机名,则会返回泊坞主机的主机名。
或者,您可以使用puppet,ansible等部署工具执行此操作,并在部署容器时对文件进行模板化。