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

目前比較常用的容器監控工具和方案:

Docker 自帶的監控子命令

  • ps

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

  • top

如果想知道某個容器中運行了哪些進程,可以執行 docker container top [container] 命令。命令後面還可以跟上 Linux 操作系統 ps 命令的參數顯示特定的信息,比如 -au。

  • stats

docker container stats 用於顯示每個容器各種資源的使用情況。默認會顯示一個實時變化的列表,展示每個容器的 CPU 使用率,內存使用量和可用量。注意:容器啓動時如果沒有特別指定內存 limit,stats 命令會顯示 host 的內存總量,但這並不意味着每個 container 都能使用到這麼多的內存。

除此之外 docker container stats 命令還會顯示容器網絡和磁盤的 IO 數據。默認的輸出有個缺點,顯示的是容器 ID 而非名字。我們可以在 stats 命令後面指定容器的名稱只顯示某些容器的數據。比如 docker container stats sysdig weave。

監控利器sysdig

sysdig 是一個輕量級的系統監控工具,同時它還原生支持容器。通過 sysdig 我們可以近距離觀察 linux 操作系統和容器的行爲。

Linux 上有很多常用的監控工具,比如 strace,tcpdump,htop, iftop,lsof ......而 sysdig 則是將這些工具的功能集成到一個工具中,並且提供一個友好統一的操作界面。

安裝和運行 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 方式運行,而且會讀取操作系統 /dev,/proc 等數據,這是爲了獲取足夠的系統信息。

sysdig 的特點如下:
1、監控信息全,包括 Linux 操作系統和容器。
2、界面交互性強。
不過 sysdig 顯示的是實時數據,看不到變化和趨勢。而且是命令行操作方式,需要 ssh 到 Host 上執行,會帶來一些不便。

Weave Scope容器地圖

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

  • 安裝

執行如下腳本安裝運行 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。

數據收集利器cAdvisor

cAdvisor 是 google 開發的容器監控工具。
在 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 的主要功能,總結起來主要兩點:
1、展示 Host 和容器兩個層次的監控數據。
2、展示歷史變化數據。

由於 cAdvisor 提供的操作界面略顯簡陋,而且需要在不同頁面之間跳轉,並且只能監控一個 host,這不免會讓人質疑它的實用性。但 cAdvisor 的一個亮點是它可以將監控到的數據導出給第三方工具,由這些工具進一步加工處理。

我們可以把 cAdvisor 定位爲一個監控數據收集器,收集和導出數據是它的強項,而非展示數據。

Prometheus

Prometheus 是一個非常優秀的監控工具。準確的說,應該是監控方案。Prometheus 提供了監控數據蒐集、存儲、處理、可視化和告警一套完整的解決方案。

架構

Prometheus 架構如下:

官網上的原始架構圖比上面這張要複雜一些,爲了集中大家的注意力,我只保留了最重要的組件。

  • Prometheus Server

Prometheus Server 負責從 Exporter 拉取和存儲監控數據,並提供一套靈活的查詢語言(PromQL)供用戶使用。

  • Exporter

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

  • 可視化組件

監控數據的可視化展現對於監控方案至關重要。以前 Prometheus 自己開發了一套工具,不過後來廢棄了,因爲開源社區出現了更爲優秀的產品 Grafana。Grafana 能夠與 Prometheus 無縫集成,提供完美的數據展示能力。

  • Alertmanager

用戶可以定義基於監控數據的告警規則,規則會觸發告警。一旦 Alermanager 收到告警,會通過預定義的方式發出告警通知。支持的方式包括 Email、PagerDuty、Webhook 等.

也許一些熟悉其他監控方案的同學看了 Prometheus 的架構會不以爲然,“這些功能 Zabbix、Graphite、Nagios 這類監控系統也都有,沒什麼特別的啊!”。Prometheus 最大的亮點和先進性是它的多維數據模型。

  • Prometheus 的核心:多維數據模型
    1、通過維度對數據進行說明,附加更多的業務信息,進而滿足不同業務的需求。同時維度是可以動態添加的,比如再給數據加上一個 user 維度,就可以按用戶來統計容器內存使用量了。
    2、Prometheus 豐富的查詢語言能夠靈活、充分地挖掘數據的價值。前面示例中的 avg、sum、by 只是查詢語言中很小的一部分功能,已經爲我們展現了 Prometheus 對多維數據進行分片、聚合的強大能力。

總結

  • 部署容易度

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

  • 數據詳細度

ps/top/stats 和 cAdvisor 能夠監控容器基本的資源使用情況,Sysdig、Weave Scope 和 Prometheus 則能提供更豐富的數據。

  • 多 Host 監控

Weave Scope 和 Prometheus 可以監控整個集羣,而其餘的工具只提供單個 Host 的監控能力。

  • 告警功能

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

  • 監控非容器資源

Sysdig、Weave Scope 和 cAdvisor 可以監控到 Host 操作系統的狀態, Prometheus 則可以通過 Exporter 支持應用級別的監控,比如監控 ceph、haproxy 等。

四個方面的比較結果如下表所示。


  • 幾點建議
    1、Docker ps/top/stats 最適合快速瞭解容器運行狀態,從而判斷是否需要進一步分析和排查。
    2、Sysdig 提供了的豐富的分析和挖掘功能,是 Troubleshooting 的神器。
    3、cAdvisor 一般不會單獨使用,通常作爲其他監控工具的數據收集器,比如 Prometheus。
    4、Weave Scope 流暢簡潔的操控界面是其最大亮點,而且支持直接在 Web 界面上執行命令。
    5、Prometheus 的數據模型和架構決定了它幾乎具有無限的可能性。Prometheus 和 Weave Scope 都是優秀的容器監控方案。除此之外,Prometheus 還可以監控其他應用和系統,更爲綜合和全面。
    6、監控系統的選擇,並不是一道單選題,應該根據需求和實際情況搭配組合,優勢互補。除了這裏介紹的 5 種工具和方案,監控領域還有很多選項,也都可以考慮。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章