繁体   English   中英

Docker容器内的Sensu-Client

[英]Sensu-Client inside Docker container

我创建了一个基于ubuntu 14.04的自定义Docker镜像,里面有Sensu-Client包。

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

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

谢谢

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

--privileged使容器可以完全访问系统指标,如硬盘,内存,CPU。

棘手的是检查外部流程指标,因为docker甚至将它与特权容器隔离,但是您可以将主机的根文件系统共享为docker volume(-v /:/ host)并使用chroot或者使用/ host / proc代替/ PROC。

简而言之,一些检查只会起作用,对于其他人来说,你需要修补或开发自己的方式,但是docker中的sensu是一种可能的方式。

无特权的 docker容器无法检查其容器外部的进程,因为docker使用内核命名空间将其与主机上运行的所有其他进程隔离。 这是设计: docker安全文档

如果要运行禁用此命名空间的超级特权泊坞窗容器,可以运行:

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

这样做会删除docker提供的重要安全层,如果可能,应该避免使用。 进入容器后,尝试运行ps auxf ,您将看到主机上的所有进程。

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

在主机上添加sensu-client? 您可能希望将其拆分,以便在容器中的问题与主机的问题之间进行粒化

否则 - 您必须设置一些从内部报告的方式 - 使用低级别(系统调用等)或从外部设置某些内容来捕获呼叫并报告状态。

HTHS

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

这是我的基本docker容器,支持修改sensu plugins proc文件位置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM