【问题标题】:Automatic way to pick up the hostname inside docker container自动获取 docker 容器内的主机名的方法
【发布时间】:2016-06-29 11:35:15
【问题描述】:

我们在托管在 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 中的更好方法是什么?

【问题讨论】:

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


    【解决方案1】:

    为什么不试试呢?

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多