Docker監(jiān)控實(shí)戰(zhàn)分析
大小:0.4 MB 人氣: 2017-10-13 需要積分:1
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
標(biāo)簽:Docker(11471)
Docker 優(yōu)勢(shì)那為什么 Docker 越來(lái)越火呢?一談起 Docker 總是會(huì)跟著讓人聯(lián)想到輕量這個(gè)詞,甚至?xí)幸环N通過(guò) Docker 啟動(dòng)一個(gè)服務(wù)會(huì)節(jié)省很多資源的錯(cuò)覺(jué)。然而 Docker 的「輕」也只是相對(duì)于傳統(tǒng)虛擬機(jī)而已。傳統(tǒng)虛擬機(jī)和 Docker 的對(duì)比如圖:

從圖中可以看出 Docker 和 虛擬機(jī)的差異,虛擬機(jī)的 Guest OS 和 Hypervisor 層在 Docker 中被 Docker Engine 層所替代,Docker 有著比虛擬機(jī)更少的抽象層。
由于 Docker 不需要通過(guò) Hypervisor 層實(shí)現(xiàn)硬件資源虛擬化,運(yùn)行在 Docker 容器上的程序直接使用實(shí)際物理機(jī)的硬件資源。因此在 CPU、內(nèi)存利用率上 Docker 略勝一籌。
Docker 利用的是宿主機(jī)的內(nèi)核,而不需要 Guest OS,因此,當(dāng)新建一個(gè)容器時(shí),Docker 不需要和虛擬機(jī)一樣重新加載一個(gè)操作系統(tǒng)內(nèi)核,因此新建一個(gè) Docker 容器只需要幾秒鐘。
總結(jié)一下 Docker 容器相對(duì)于 VM 有以下幾個(gè)優(yōu)勢(shì):?jiǎn)?dòng)速度快、資源利用率高、性能開(kāi)銷(xiāo)小。
Docker 監(jiān)控方案
那么,既然 Docker 這么火,Docker 監(jiān)控是不是也該提上日程?或許具體問(wèn)題要具體分析,但是似乎大家都在使用開(kāi)源的監(jiān)控方案,來(lái)解決 Docker監(jiān)控的問(wèn)題。
就拿騰訊游戲來(lái)說(shuō)吧,我們看看尹燁(騰訊互娛運(yùn)營(yíng)部高級(jí)工程師, 干貨 | 騰訊游戲是如何使用 Docker 的?)怎么說(shuō):
容器的監(jiān)控問(wèn)題也花了我們很多精力。監(jiān)控、告警是運(yùn)營(yíng)系統(tǒng)最核心的功能之一,騰訊內(nèi)部有一套很成熟的監(jiān)控告警平臺(tái),而且開(kāi)發(fā)運(yùn)維同學(xué)已經(jīng)習(xí)慣這套平臺(tái),如果我們針對(duì) Docker 容器再開(kāi)發(fā)一個(gè)監(jiān)控告警平臺(tái),會(huì)花費(fèi)很多精力,而且沒(méi)有太大的意義。所以,我們盡量去兼容公司現(xiàn)有的監(jiān)控告警平臺(tái)。每個(gè)容器內(nèi)部會(huì)運(yùn)行一個(gè)代理,從 /proc 下面獲取 CPU、內(nèi)存、IO 的信息,然后上報(bào)公司的監(jiān)控告警平臺(tái)。但是,默認(rèn)情況下,容器內(nèi)部的 proc 顯示的是 Host 信息,我們需要用 Host 上 cgroup 中的統(tǒng)計(jì)信息來(lái)覆蓋容器內(nèi)部的部分 proc 信息。我們基于開(kāi)源的 lxcfs,做了一些改造實(shí)現(xiàn)了這個(gè)需求。

這些解決方案都是基于開(kāi)源系統(tǒng)來(lái)實(shí)現(xiàn)的,當(dāng)然,我們也會(huì)把我們自己覺(jué)得有意義的修改回饋給社區(qū),我們給 Docker、Kubernetes 和 lxcfs 等開(kāi)源項(xiàng)目貢獻(xiàn)了一些 patch。融入社區(qū),與社區(qū)共同發(fā)展,這是一件很有意義的事情。
在沒(méi)有專業(yè)運(yùn)維團(tuán)隊(duì)來(lái)監(jiān)控 Docker 的情況下,并且還想加快 Docker 監(jiān)控的進(jìn)程,該怎么辦呢?
為了能夠更精確的分配每個(gè)容器能使用的資源,我們想要實(shí)時(shí)獲取容器運(yùn)行時(shí)使用資源的情況,怎樣對(duì) Docker 上的應(yīng)用進(jìn)行監(jiān)控呢?Docker 的結(jié)構(gòu)會(huì)不會(huì)加大監(jiān)控難度?
我們都了解, container 相當(dāng)于小型 host,可以說(shuō)存在于 hosts 與應(yīng)用之間的監(jiān)控盲區(qū),無(wú)論是傳統(tǒng)的基礎(chǔ)組件監(jiān)控還是應(yīng)用性能監(jiān)控的方式,都很難有效地監(jiān)控 Docker。了解了一下現(xiàn)有的 Docker 相關(guān)監(jiān)測(cè) App 和服務(wù),包括簡(jiǎn)單的開(kāi)源工具和復(fù)雜的企業(yè)整體解決方案,下面列舉其中的幾種作為參考:
1. cAdvisor
谷歌的 container introspection 解決方案是 cAdvisor,這是一個(gè) Docker 容器內(nèi)封裝的工具,能夠采集、處理和導(dǎo)出運(yùn)行中的容器的數(shù)據(jù)。通過(guò)它可以看到 CPU 的使用率、內(nèi)存使用率、網(wǎng)絡(luò)吞吐量以及磁盤(pán)空間利用率等。同時(shí),你還可以通過(guò)點(diǎn)擊在網(wǎng)頁(yè)頂部的 Docker Containers 鏈接,選擇某個(gè)容器來(lái)詳細(xì)了解它的使用情況。cAdvisor 部署和使用簡(jiǎn)單,但它只可以監(jiān)視在同一個(gè) host 上運(yùn)行的容器,對(duì)多節(jié)點(diǎn)部署不是太管用。
2. Cloud Insight
在我們列舉的幾個(gè)監(jiān)控 Docker 的服務(wù)或平臺(tái)中,這是唯一一款國(guó)內(nèi)產(chǎn)品。 Cloud Insight支持多種操作系統(tǒng)、云主機(jī)、數(shù)據(jù)庫(kù)和中間件的監(jiān)控,原理是在平臺(tái)服務(wù)儀表盤(pán)和自定義儀表盤(pán)中,采集并處理 Metric,對(duì)數(shù)據(jù)進(jìn)行聚合與分組等計(jì)算,提供曲線圖、柱狀圖等多樣化的展現(xiàn)形式。優(yōu)點(diǎn)是監(jiān)控的指標(biāo)很全,簡(jiǎn)單易用,可以期待一下。
3. Scout
Scout 是一款監(jiān)視服務(wù),并不是一個(gè)獨(dú)立的開(kāi)源項(xiàng)目。它有大量的插件,除了 Docker 信息還可以吸收其他有關(guān)部署的數(shù)據(jù)。因此 Scout 算是一站式監(jiān)控系統(tǒng),無(wú)需對(duì)系統(tǒng)的各種資源來(lái)安裝各種不同的監(jiān)控系統(tǒng)。 Scout 的一個(gè)缺點(diǎn)是,它不顯示有關(guān)每個(gè)主機(jī)上單獨(dú)容器的詳細(xì)信息。此外,每個(gè)監(jiān)控的主機(jī)十美元這樣略微昂貴的價(jià)格也是是否選擇 Scout 作為監(jiān)控服務(wù)的一個(gè)考慮因素,如果運(yùn)行一個(gè)有多臺(tái)主機(jī)的超大部署,成本會(huì)比較高。
4. Sematext
Sematext 也是一款付費(fèi)監(jiān)控解決方案,計(jì)劃收費(fèi)方案是3.5美分/小時(shí)。同樣也支持 Docker 監(jiān)控,還包括對(duì)容器級(jí)事件的監(jiān)測(cè)(停止、開(kāi)始等等)和管理容器產(chǎn)生的日志。
5. Prometheus
Prometheus 由 SoundCloud 發(fā)明,適合于監(jiān)控基于容器的基礎(chǔ)架構(gòu)。支持監(jiān)控容器的資源和運(yùn)行特性,支持多維度查詢,能聚合 Docker 監(jiān)控?cái)?shù)據(jù)。
Docker 監(jiān)控實(shí)踐
數(shù)據(jù)的聚合&分組,是運(yùn)維2.0時(shí)代的重頭戲,因此我們重點(diǎn)選取其中比較有這個(gè)方面代表性的兩個(gè)監(jiān)控方案來(lái)看看具體的 Docker 監(jiān)控過(guò)程。
先借鑒「Monitor Docker Containers with Prometheus](http://5pi.de/2015/01/26/monitor-docker-container」一文中的介紹,來(lái)說(shuō)說(shuō)這套開(kāi)源的 Docker 監(jiān)控方案:Prometheus;而此篇文字的原文地址:Monitor Docker Containers with Prometheus。
Prometheus 由 SoundCloud 發(fā)明,可用于監(jiān)控基于容器的基礎(chǔ)架構(gòu)。Prometheus 特點(diǎn)是高維度數(shù)據(jù)模型,時(shí)間序列是通過(guò)一個(gè)度量值名字和一套鍵值對(duì)識(shí)別。靈活的查詢語(yǔ)言允許查詢和繪制數(shù)據(jù)。它采用了先進(jìn)的度量標(biāo)準(zhǔn)類型像匯總(summaries),從指定時(shí)間跨度的總數(shù)構(gòu)建比率或者是在任何異常的時(shí)候報(bào)警并且沒(méi)有任何依賴,中斷期間使它成為一個(gè)可靠的系統(tǒng)進(jìn)行調(diào)試。
Prometheus 支持維度數(shù)據(jù),你可以擁有全局和簡(jiǎn)單的指標(biāo)名像 container_memory_usage_bytes,使用多個(gè)維度來(lái)標(biāo)識(shí)你服務(wù)的指定實(shí)例。
可以創(chuàng)建一個(gè)簡(jiǎn)單的 container-exporter來(lái)收集 Docker 容器的指標(biāo)以及輸出給 Prometheus 來(lái)消費(fèi)。這個(gè)輸出器使用容器的名字,id 和 鏡像作為維度。額外的 per-exporter維度可以在 prometheus.conf中設(shè)置。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
Docker監(jiān)控實(shí)戰(zhàn)分析下載
相關(guān)電子資料下載
- 如何在Windows系統(tǒng)上設(shè)置Docker鏡像源 55
- 機(jī)器學(xué)習(xí)需要掌握的九種工具盤(pán)點(diǎn) 16
- Docker鏡像國(guó)內(nèi)加速的幾種方法 55
- VectorCAST|Docker場(chǎng)景下的代碼白盒測(cè)試實(shí)施 402
- 如何用Springboot整合Redis 118
- 如何在macOS系統(tǒng)中用Docker運(yùn)行macOS鏡像呢? 364
- 什么是Docker容器?為什么需要Docker容器? 71
- 為什么需要Docker容器?Docker容器和VM有什么區(qū)別? 323
- 如何使用 Docker容器化技術(shù) 1188
- Dockerfile定義Docker鏡像的構(gòu)建過(guò)程 1088