node-exporter 应该从主机还是容器运行?

Posted

技术标签:

【中文标题】node-exporter 应该从主机还是容器运行?【英文标题】:Should node-exporter run from host or container? 【发布时间】:2019-04-03 07:13:20 【问题描述】:

有一个非常简单的问题:运行node-exporter 的最佳位置是什么?直接在主机内部还是从容器中?

这两种解决方案的优缺点是什么?开发人员的最佳实践是什么?从使用指南对我来说不是很清楚!

【问题讨论】:

你检查过这个吗:github.com/prometheus/node_exporter#using-docker? 是的,他们写了It's not recommended to deploy it as a Docker container because it requires access to the host system,但之后他们解释了如何从容器内运行它......所以我有点困惑!是否最好来自外部容器?有什么区别? 附注:容器只不过是一个带有 chroot 的进程。两者都在“主机”上运行。 Ummm 谈到进程在哪里运行正常,但是当您尝试使用系统调用和其他特定于平台的功能时存在一些差异......我认为您不能完全监控系统以与您直接在主机上相同的方式在容器内(但这是我的猜测) 有趣的阅读:github.com/prometheus/node_exporter/pull/672. 【参考方案1】:

我肯定会在主机上说。这是推荐的方式,因为节点导出器需要访问容器中不可用的某些指标。 确实,即使在容器中运行时,如果您公开 /proc 和 /sys,您仍然可以访问各种主机指标,但您仍然冒着抓取与容器相关的指标而不是主机的风险。

一个例子是与网​​络相关的指标。默认情况下,容器在它们自己的网络命名空间中运行(这是您希望它们在正常情况下运行的方式),因此在默认情况下,您将只抓取与该容器相关的信息,而不是与主机相关的信息,尽管您正在公开上述伪文件系统这一事实。

【讨论】:

以上是关于node-exporter 应该从主机还是容器运行?的主要内容,如果未能解决你的问题,请参考以下文章

存放应用程序文件的位置 - Docker

在容器中运行Jenkins部署主机中的docker应用

在容器中运行Jenkins部署主机中的docker应用

在容器中运行Jenkins部署主机中的docker应用

如何从容器内部访问在主机上运行的数据库?

从 docker 内部运行 docker 可以吗?