docker容器技術(shù)學習筆記(10、Docker常用監(jiān)控方案)

目前比較常用的容器監(jiān)控工具和方案:

Docker 自帶的監(jiān)控子命令

  • ps

docker container ps 是我們早已熟悉的命令了躺孝,方便我們查看當前運行的容器享扔。新版的 Docker 提供了一個新命令 docker container ls,其作用和用法與 docker container ps 完全一樣括细。不過 ls 含義可能比 ps 更準確伪很,所以更推薦使用。

  • top

如果想知道某個容器中運行了哪些進程奋单,可以執(zhí)行 docker container top [container] 命令锉试。命令后面還可以跟上 Linux 操作系統(tǒng) ps 命令的參數(shù)顯示特定的信息,比如 -au览濒。

  • stats

docker container stats 用于顯示每個容器各種資源的使用情況呆盖。默認會顯示一個實時變化的列表,展示每個容器的 CPU 使用率贷笛,內(nèi)存使用量和可用量应又。注意:容器啟動時如果沒有特別指定內(nèi)存 limit,stats 命令會顯示 host 的內(nèi)存總量乏苦,但這并不意味著每個 container 都能使用到這么多的內(nèi)存株扛。

除此之外 docker container stats 命令還會顯示容器網(wǎng)絡和磁盤的 IO 數(shù)據(jù)。默認的輸出有個缺點汇荐,顯示的是容器 ID 而非名字洞就。我們可以在 stats 命令后面指定容器的名稱只顯示某些容器的數(shù)據(jù)。比如 docker container stats sysdig weave掀淘。

監(jiān)控利器sysdig

sysdig 是一個輕量級的系統(tǒng)監(jiān)控工具旬蟋,同時它還原生支持容器。通過 sysdig 我們可以近距離觀察 linux 操作系統(tǒng)和容器的行為革娄。

Linux 上有很多常用的監(jiān)控工具倾贰,比如 strace冕碟,tcpdump,htop匆浙, iftop安寺,lsof ......而 sysdig 則是將這些工具的功能集成到一個工具中,并且提供一個友好統(tǒng)一的操作界面吞彤。

安裝和運行 sysdig 的最簡單方法是運行 Docker 容器我衬,命令行為:

docker container run -it --rm --name=sysdig --privileged=true \
          --volume=/var/run/docker.sock:/host/var/run/docker.sock \
          --volume=/dev:/host/dev \
          --volume=/proc:/host/proc:ro \
          --volume=/boot:/host/boot:ro \
          --volume=/lib/modules:/host/lib/modules:ro \
          --volume=/usr:/host/usr:ro \
          sysdig/sysdig

可以看到,sysdig 容器是以 privileged 方式運行饰恕,而且會讀取操作系統(tǒng) /dev挠羔,/proc 等數(shù)據(jù),這是為了獲取足夠的系統(tǒng)信息埋嵌。

sysdig 的特點如下:
1破加、監(jiān)控信息全,包括 Linux 操作系統(tǒng)和容器雹嗦。
2范舀、界面交互性強。
不過 sysdig 顯示的是實時數(shù)據(jù)了罪,看不到變化和趨勢锭环。而且是命令行操作方式,需要 ssh 到 Host 上執(zhí)行泊藕,會帶來一些不便辅辩。

Weave Scope容器地圖

Weave Scope 的最大特點是會自動生成一張 Docker 容器地圖,讓我們能夠直觀地理解娃圆、監(jiān)控和控制容器玫锋。千言萬語不及一張圖,先感受一下讼呢。

  • 安裝

執(zhí)行如下腳本安裝運行 Weave Scope撩鹿。
curl -L git.io/scope -o /usr/local/bin/scope
chmod a+x /usr/local/bin/scope
scope launch
scope launch 將以容器方式啟動 Weave Scope。

數(shù)據(jù)收集利器cAdvisor

cAdvisor 是 google 開發(fā)的容器監(jiān)控工具悦屏。
在 host 中運行 cAdvisor 容器节沦。

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

通過 http://[Host_IP]:8080 訪問 cAdvisor。

cAdvisor 的主要功能础爬,總結(jié)起來主要兩點:
1散劫、展示 Host 和容器兩個層次的監(jiān)控數(shù)據(jù)。
2幕帆、展示歷史變化數(shù)據(jù)。

由于 cAdvisor 提供的操作界面略顯簡陋赖条,而且需要在不同頁面之間跳轉(zhuǎn)失乾,并且只能監(jiān)控一個 host常熙,這不免會讓人質(zhì)疑它的實用性。但 cAdvisor 的一個亮點是它可以將監(jiān)控到的數(shù)據(jù)導出給第三方工具碱茁,由這些工具進一步加工處理裸卫。

我們可以把 cAdvisor 定位為一個監(jiān)控數(shù)據(jù)收集器,收集和導出數(shù)據(jù)是它的強項纽竣,而非展示數(shù)據(jù)墓贿。

Prometheus

Prometheus 是一個非常優(yōu)秀的監(jiān)控工具。準確的說蜓氨,應該是監(jiān)控方案聋袋。Prometheus 提供了監(jiān)控數(shù)據(jù)搜集、存儲穴吹、處理幽勒、可視化和告警一套完整的解決方案。

架構(gòu)

Prometheus 架構(gòu)如下:

官網(wǎng)上的原始架構(gòu)圖比上面這張要復雜一些港令,為了集中大家的注意力啥容,我只保留了最重要的組件。

  • Prometheus Server

Prometheus Server 負責從 Exporter 拉取和存儲監(jiān)控數(shù)據(jù)顷霹,并提供一套靈活的查詢語言(PromQL)供用戶使用咪惠。

  • Exporter

Exporter 負責收集目標對象(host, container…)的性能數(shù)據(jù),并通過 HTTP 接口供 Prometheus Server 獲取淋淀。

  • 可視化組件

監(jiān)控數(shù)據(jù)的可視化展現(xiàn)對于監(jiān)控方案至關(guān)重要遥昧。以前 Prometheus 自己開發(fā)了一套工具,不過后來廢棄了绅喉,因為開源社區(qū)出現(xiàn)了更為優(yōu)秀的產(chǎn)品 Grafana渠鸽。Grafana 能夠與 Prometheus 無縫集成,提供完美的數(shù)據(jù)展示能力柴罐。

  • Alertmanager

用戶可以定義基于監(jiān)控數(shù)據(jù)的告警規(guī)則徽缚,規(guī)則會觸發(fā)告警。一旦 Alermanager 收到告警革屠,會通過預定義的方式發(fā)出告警通知凿试。支持的方式包括 Email、PagerDuty似芝、Webhook 等.

也許一些熟悉其他監(jiān)控方案的同學看了 Prometheus 的架構(gòu)會不以為然那婉,“這些功能 Zabbix、Graphite党瓮、Nagios 這類監(jiān)控系統(tǒng)也都有详炬,沒什么特別的啊寞奸!”呛谜。Prometheus 最大的亮點和先進性是它的多維數(shù)據(jù)模型在跳。

  • Prometheus 的核心:多維數(shù)據(jù)模型
    1、通過維度對數(shù)據(jù)進行說明隐岛,附加更多的業(yè)務信息猫妙,進而滿足不同業(yè)務的需求。同時維度是可以動態(tài)添加的聚凹,比如再給數(shù)據(jù)加上一個 user 維度割坠,就可以按用戶來統(tǒng)計容器內(nèi)存使用量了。
    2妒牙、Prometheus 豐富的查詢語言能夠靈活彼哼、充分地挖掘數(shù)據(jù)的價值。前面示例中的 avg单旁、sum沪羔、by 只是查詢語言中很小的一部分功能,已經(jīng)為我們展現(xiàn)了 Prometheus 對多維數(shù)據(jù)進行分片象浑、聚合的強大能力蔫饰。

總結(jié)

  • 部署容易度

ps/top/stats 無疑是最容易使用的,它們是 Docker 自帶的子命令,隨時隨地都可以用來快速了解容器的狀態(tài)。其余幾種也都能以容器的方式運行孵构,總的來說都不算復雜肆资。相對而言瘫絮,Prometheus 涉及的組件比較多,搭建整個方案需要運行的容器數(shù)量也要多些,部署和管理的難道稍大。

  • 數(shù)據(jù)詳細度

ps/top/stats 和 cAdvisor 能夠監(jiān)控容器基本的資源使用情況盛嘿,Sysdig、Weave Scope 和 Prometheus 則能提供更豐富的數(shù)據(jù)括袒。

  • 多 Host 監(jiān)控

Weave Scope 和 Prometheus 可以監(jiān)控整個集群次兆,而其余的工具只提供單個 Host 的監(jiān)控能力。

  • 告警功能

只有 Prometheus 具備原生的告警功能锹锰。

  • 監(jiān)控非容器資源

Sysdig芥炭、Weave Scope 和 cAdvisor 可以監(jiān)控到 Host 操作系統(tǒng)的狀態(tài), Prometheus 則可以通過 Exporter 支持應用級別的監(jiān)控恃慧,比如監(jiān)控 ceph园蝠、haproxy 等。

四個方面的比較結(jié)果如下表所示痢士。


  • 幾點建議
    1彪薛、Docker ps/top/stats 最適合快速了解容器運行狀態(tài),從而判斷是否需要進一步分析和排查。
    2陪汽、Sysdig 提供了的豐富的分析和挖掘功能训唱,是 Troubleshooting 的神器。
    3挚冤、cAdvisor 一般不會單獨使用,通常作為其他監(jiān)控工具的數(shù)據(jù)收集器赞庶,比如 Prometheus训挡。
    4、Weave Scope 流暢簡潔的操控界面是其最大亮點歧强,而且支持直接在 Web 界面上執(zhí)行命令澜薄。
    5、Prometheus 的數(shù)據(jù)模型和架構(gòu)決定了它幾乎具有無限的可能性摊册。Prometheus 和 Weave Scope 都是優(yōu)秀的容器監(jiān)控方案肤京。除此之外,Prometheus 還可以監(jiān)控其他應用和系統(tǒng)茅特,更為綜合和全面忘分。
    6、監(jiān)控系統(tǒng)的選擇白修,并不是一道單選題妒峦,應該根據(jù)需求和實際情況搭配組合,優(yōu)勢互補兵睛。除了這里介紹的 5 種工具和方案肯骇,監(jiān)控領域還有很多選項,也都可以考慮祖很。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笛丙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子假颇,更是在濱河造成了極大的恐慌胚鸯,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拆融,死亡現(xiàn)場離奇詭異蠢琳,居然都是意外死亡,警方通過查閱死者的電腦和手機镜豹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門傲须,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人趟脂,你說我怎么就攤上這事泰讽。” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵已卸,是天一觀的道長佛玄。 經(jīng)常有香客問我,道長累澡,這世上最難降的妖魔是什么梦抢? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮愧哟,結(jié)果婚禮上奥吩,老公的妹妹穿的比我還像新娘。我一直安慰自己蕊梧,他們只是感情好霞赫,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肥矢,像睡著了一般端衰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上甘改,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天旅东,我揣著相機與錄音,去河邊找鬼楼誓。 笑死玉锌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的疟羹。 我是一名探鬼主播主守,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼榄融!你這毒婦竟也來了参淫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤愧杯,失蹤者是張志新(化名)和其女友劉穎涎才,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體力九,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡耍铜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了跌前。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棕兼。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抵乓,靈堂內(nèi)的尸體忽然破棺而出伴挚,到底是詐尸還是另有隱情靶衍,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布茎芋,位于F島的核電站颅眶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏田弥。R本人自食惡果不足惜涛酗,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望偷厦。 院中可真熱鬧煤杀,春花似錦、人聲如沸沪哺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辜妓。三九已至,卻和暖如春忌怎,著一層夾襖步出監(jiān)牢的瞬間籍滴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工榴啸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留孽惰,地道東北人。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓鸥印,卻偏偏與公主長得像勋功,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子库说,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容