1. 程式人生 > >漫談容器的監控

漫談容器的監控

監控系統 文件系統 方案 inspect 意義 分時 分配 選擇 right

序言

很多事情說起來容易,做起來卻很難,開始的時候就已經經歷了各種選擇,而開始才是一個真正開始。

監控系統需要監控很多資源,主要需要監控什麽,為什麽需要監控?

監控

打開腦洞,那是個無底洞,那是記憶的深淵,是否能改變或者是否是在準備?

技術分享圖片

docker的監控系統,有好幾種監控方案,重在合適,prometheus作為一種集各種功能於一身的獲取數據,存儲數據,展示數據,告警功能於一身,這種一套完備的監控方案。

而對於weave scope來說,也是一種分布式的監控容器,最大的亮點在於在界面上能直接進入shell執行界面,就像登錄了主機一樣執行各種命令。

在docker中,其實本身就自帶了監控的命令,只不過一般不會用來跨主機執行,從而這種是主要用來登錄host主機,直接執行docker命令來查看所有容器的容器的方法。

技術分享圖片

在以上的命令中ls主要用來查看運行狀態的容器,而對於其他狀態的容器,可以使用參數,和linux命令是一樣;而top主要是用來查看進程的信息,其實這個和linux命令的top略微有所區別,和命令ps的命令一樣的,但是ps被ls以前的功能所占用;而stats主要是用來查看容器的性能數據,包括使用的內存,cpu,網絡IO,塊IO,進程號,那麽如何來設置這些數據呢?

技術分享圖片

設置相關資源限定,也就是幾個參數來限制,如上,主要設置了內存使用的大小為200M,使用swap空間大小為200M,CPU使用的權重為512,默認為1024,也可以設置cpu使用的顆數,然後設置了磁盤的讀的速度。

為什麽需要設置資源限定?

為什麽需要設置資源限定?我有一臺物理主機,CPU56顆,內存256G,帶寬萬M網卡,能跑多少個容器?

資源限定?在一個集群中,有多少臺物理機器組成,能給客戶使用多少內存,多少CPU,多少存儲,多少網絡。

在VM的時代,創建VM的時候,也要進行規劃,一臺主機上最多可以創建幾個VM,分配多少的計算,存儲和網絡資源。

再是工作的時候,公司給你開多少一個月?有多少預算,資金鏈上有多少錢?

對整個集群中資源進行劃分了後,那麽就要涉及到調度,在哪個host上創建這個容器,在哪個vm上創建這個容器,這就是所謂的規劃。。

技術分享圖片

容器如何做資源限定

容器來進行資源的限定和資源隔離呢?

在linux上怎麽來進行資源的隔離?chroot,使用不同的文件系統來隔離用戶,隔離用戶的權限,容器也不例外,使用的是namespace來進行隔離,各種各樣的命令空間,在各種編程語言中也是可以看到。

在容器的資源隔離的時候,主要使用了6種:

UTS:主要用來設定容器的主機名稱和域名,主要的作用是讓容器在網絡上成為一個單獨的節點,而不是宿主機上的一個進程。unix time-sharing system。。分時系統。。ntp?還是cpu的時間片呢?

IPC:進程間通信,有獨立的通信空間,在一個namespace中的進程可以相互通信。inter process communication。

PID:進程隔離,和宿主機上進程進行隔離。

network:網絡隔離,有獨立的網絡棧,有獨立的端口,網絡設備,這也就是為什麽每次創建一個容器網絡的時候,會有一些橋接設備,host模型的網絡使用。

user:用戶隔離,主機上的用戶和容器中的用戶會有一層映射關系,但是不會相互影響。

mount:掛載的文件系統,主要使用文件系統的隔離,可以理解為chroot的一種實現方式。。。再想想容器的文件系統組成,unfs,聯合文件系統,容器的讀寫層,改變了容器的內容,不會影響使用相同鏡像的容器。

而資源的限制則是使用cgroup來進行控制的。在相關的目錄中可以找到,如下:

技術分享圖片

而這種數據還能在docker inspect nginx中找到,如下:

技術分享圖片

從而在監控的時候可以使用不同的方式來進行監控。

總結

1、 在監控容器的時候,幾個關鍵指標,容器運行的數量,容器分配的計算(cpu和內存),網絡,存儲資源。

2、 監控的方式多樣,可以使用基本的docker命令來進行監控,也可以直接查看相應目錄下的文件獲取對應的信息。

3、 容器的資源分配,主要涉及到容器的資源分配和規劃,就算是在集群中,底層無需考慮,但是每個容器占用的最大資源需要進行限制,不然可能耗費掉整個集群的計算能力、網絡能力或者存儲能力。

技術分享圖片

老了,昨天想的事,今天就記不住了。

忘記昨天,擁抱未來,不是更好?

如果忘記了昨天,隨著年齡的增大,我又是什麽?我是誰?我在哪裏?我在做什麽?

如果我的昨天不能提升我的閱歷,我的境界,我的道,我昨天有什麽意義?

漫談容器的監控