2015-03-02 95 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,您將看到主機上的所有進程。