3

我们在托管在 Amazon EC2 实例上的 docker 容器内运行 NodeJS 应用程序。至

为了使用 Datadog 启用对 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 中的更好方法是什么?

4

1 回答 1

3

为什么不试试?

 var os = require(“os”);
 var hostname = os.hostname();

它将返回 docker 容器的主机名。如果您没有明确设置主机名,则使用类似docker run -h hostname image commandthen 的内容将返回 docker 主机的主机名。

或者,您可以使用 puppet、ansible 等部署工具执行此操作,并在部署容器时将文件模板化。

于 2016-06-29T03:35:15.170 回答