自动获取Docker容器中的主机名
我们在托pipe在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);
虽然,我们能够成功发布度量标准,但是我们想知道这是否可以自动化。 我们希望将其构build到Docker镜像中,因此需要自动获取主机名,至less可以使用Docker主机名。因为直到现在我们手动指定“myhost”和“myapp “值手动。 将AWS实例主机名值读取到%myhost中的更好方法?
为什么不试试?
var os = require(“os”); var hostname = os.hostname();
它将返回docker容器的主机名。 如果你没有明确地设置一个主机名,使用像docker run -h hostname image command
那么它将返回docker主机的主机名。
或者,您可以使用像puppet,ansible等部署工具来做到这一点,并在部署容器时对文件进行模板化。