2015-03-02 81 views
5

我创建了一个基于ubuntu 14.04的定制Docker镜像,其中包含Sensu-Client包。Docker容器中的Sensu-Client

一切都很好,但现在我想知道如何触发检查从主机运行。

例如,我希望能够检查在主机上运行的进程,而不仅仅是在容器内运行的进程。

谢谢

回答

0

我不认为这是可能的现在。 如果主机实例中的进程在docker中运行,则可以安装套接字并从sensu容器获取状态

0

将sensu-client添加到主机?你可能想分割出来,所以你在容器中的问题和VS主机的问题之间造成了混乱。其他 - 你必须设置一些方法来从内部报告 - 使用低级别的东西(系统调用等)或者从外面设置一些东西来接听电话并回报状态。

HTH

1

这取决于你想要运行什么检查。如果使用--net = host和--privileged标志运行sensu容器,很多系统级别的检查都可以正常工作。 --net = host不仅允许您看到与主机系统相同的主机名和IP,而且所有的tcp连接和接口指标都将与容器和主机相匹配。

- 特权让容器完全访问像hdd,内存,cpu等系统度量标准。

棘手的事情是检查外部流程指标,因为码头工甚至将它从特权容器中隔离出来,但是您可以共享主机的根文件系统作为docker卷(-v /:/ host)和修补程序检查以使用chroot或使用/ host/proc而不是/ proc。长话短说,一些检查只会起作用,对于其他人你需要修补或开发你自己的方式,但码头工人的敏感是一种可能的方式。

0

大部分(如果不是全部)sensu插件硬编码proc文件的路径。一种选择是将主机proc文件挂载到docker容器内的不同路径,并修改sensu插件以支持其他位置。

这是我的基础码头容器,支持修改sensu插件proc文件位置。

https://github.com/sstarcher/docker-sensu

1

非特权搬运工容器无法检查过程之外这是因为集装箱码头工人使用内核命名空间将它从主机上运行的所有其他进程隔离。这是由设计:docker security documentation

如果你想运行具有这个命名空间中禁用的超级特权搬运工容器可以运行:

docker run -it --rm --privileged --pid=host alpine /bin/sh 

这样做会删除一个重要的安全层泊坞窗提供与应尽可能避免。一旦进入容器,请尝试运行ps auxf,您将看到主机上的所有进程。