自动获取docker容器内的主机名的方法

时间:2016-06-28 23:55:25

标签: node.js amazon-web-services amazon-ec2 docker datadog

我们在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?

1 个答案:

答案 0 :(得分:2)

为什么不试试?

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

它将返回docker容器的主机名。如果您未使用docker run -h hostname image command之类的内容明确设置主机名,则会返回泊坞主机的主机名。

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