精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用Elasticsearch和cAdvisor監(jiān)控Docker容器

運(yùn)維 系統(tǒng)運(yùn)維 云計(jì)算
在 Docker network 特性出來以前,你可以使用 Docker link 特性實(shí)現(xiàn)容器互相發(fā)現(xiàn)、安全通信。而在 network 特性出來以后,你還可以使用 link,但是當(dāng)容器處于默認(rèn)橋接網(wǎng)絡(luò)或用戶自定義網(wǎng)絡(luò)時(shí),它們的表現(xiàn)是不一樣的。現(xiàn)在創(chuàng)建 overlay 網(wǎng)絡(luò),名稱為 monitoring。

如果你正在運(yùn)行 Swarm 模式的集群,或者只運(yùn)行單臺 Docker,你都會有下面的疑問:

我如何才能監(jiān)控到它們都在干些什么?這個(gè)問題的答案是“很不容易”。

你需要監(jiān)控下面的參數(shù):

  1. 容器的數(shù)量和狀態(tài)。
  2. 一臺容器是否已經(jīng)移到另一個(gè)節(jié)點(diǎn)了,如果是,那是在什么時(shí)候,移動(dòng)到哪個(gè)節(jié)點(diǎn)?
  3. 給定節(jié)點(diǎn)上運(yùn)行著的容器數(shù)量。
  4. 一段時(shí)間內(nèi)的通信峰值。
  5. 孤兒卷和網(wǎng)絡(luò)(LCTT 譯注:孤兒卷就是當(dāng)你刪除容器時(shí)忘記刪除它的卷,這個(gè)卷就不會再被使用,但會一直占用資源)。
  6. 可用磁盤空間、可用 inode 數(shù)。
  7. 容器數(shù)量與連接在 docker0 和 docker_gwbridge 上的虛擬網(wǎng)卡數(shù)量不一致(LCTT 譯注:當(dāng) docker 啟動(dòng)時(shí),它會在宿主機(jī)器上創(chuàng)建一個(gè)名為 docker0 的虛擬網(wǎng)絡(luò)接口)。
  8. 開啟和關(guān)閉 Swarm 節(jié)點(diǎn)。
  9. 收集并集中處理日志。

本文的目標(biāo)是介紹 Elasticsearch + Kibana + cAdvisor 的用法,使用它們來收集 Docker 容器的參數(shù),分析數(shù)據(jù)并產(chǎn)生可視化報(bào)表。

閱讀本文后你可以發(fā)現(xiàn)有一個(gè)監(jiān)控儀表盤能夠部分解決上述列出的問題。但如果只是使用 cAdvisor,有些參數(shù)就無法顯示出來,比如 Swarm 模式的節(jié)點(diǎn)。

如果你有一些 cAdvisor 或其他工具無法解決的特殊需求,我建議你開發(fā)自己的數(shù)據(jù)收集器和數(shù)據(jù)處理器(比如Beats),請注意我不會演示如何使用 Elasticsearch 來集中收集 Docker 容器的日志。

你要如何才能監(jiān)控到 Swarm 模式集群里面發(fā)生了什么事情?要做到這點(diǎn)很不容易。” —— @fntlnz

我們?yōu)槭裁匆O(jiān)控容器?

想象一下這個(gè)經(jīng)典場景:你在管理一臺或多臺虛擬機(jī),你把 tmux 工具用得很溜,用各種 session 事先設(shè)定好了所有基礎(chǔ)的東西,包括監(jiān)控。然后生產(chǎn)環(huán)境出問題了,你使用 top、htop、iotop、jnettop 各種 top 來排查,然后你準(zhǔn)備好修復(fù)故障。

現(xiàn)在重新想象一下你有 3 個(gè)節(jié)點(diǎn),包含 50 臺容器,你需要在一個(gè)地方查看整潔的歷史數(shù)據(jù),這樣你知道問題出在哪個(gè)地方,而不是把你的生命浪費(fèi)在那些字符界面來賭你可以找到問題點(diǎn)。

什么是 Elastic Stack ?

Elastic Stack 就一個(gè)工具集,包括以下工具:

  • Elasticsearch
  • Kibana
  • Logstash
  • Beats

我們會使用其中一部分工具,比如使用 Elasticsearch 來分析基于 JSON 格式的文本,以及使用 Kibana 來可視化數(shù)據(jù)并產(chǎn)生報(bào)表。

另一個(gè)重要的工具是 Beats,但在本文中我們還是把精力放在容器上,官方的 Beats 工具不支持 Docker,所以我們選擇原生兼容 Elasticsearch 的 cAdvisor。

cAdvisor 工具負(fù)責(zé)收集、整合正在運(yùn)行的容器數(shù)據(jù),并導(dǎo)出報(bào)表。在本文中,這些報(bào)表被到入到 Elasticsearch 中。

cAdvisor 有兩個(gè)比較酷的特性:

  • 它不只局限于 Docker 容器。
  • 它有自己的 Web 服務(wù)器,可以簡單地顯示當(dāng)前節(jié)點(diǎn)的可視化報(bào)表。

設(shè)置測試集群,或搭建自己的基礎(chǔ)架構(gòu)

和我以前的文章一樣,我習(xí)慣提供一個(gè)簡單的腳本,讓讀者不用花很多時(shí)間就能部署好和我一樣的測試環(huán)境。你可以使用以下(非生產(chǎn)環(huán)境使用的)腳本來搭建一個(gè) Swarm 模式的集群,其中一個(gè)容器運(yùn)行著 Elasticsearch。

如果你有充足的時(shí)間和經(jīng)驗(yàn),你可以搭建自己的基礎(chǔ)架構(gòu)Bring Your Own Infrastructure,BYOI。如果要繼續(xù)閱讀本文,你需要:

  • 運(yùn)行 Docker 進(jìn)程的一個(gè)或多個(gè)節(jié)點(diǎn)(docker 版本號大于等于 1.12)。
  • 至少有一個(gè)獨(dú)立運(yùn)行的 Elasticsearch 節(jié)點(diǎn)(版本號 2.4.X)。

重申一下,此 Elasticsearch 集群環(huán)境不能放在生產(chǎn)環(huán)境中使用。生產(chǎn)環(huán)境也不推薦使用單節(jié)點(diǎn)集群,所以如果你計(jì)劃安裝一個(gè)生產(chǎn)環(huán)境,請參考 Elastic 指南

對喜歡嘗鮮的用戶的友情提示

我就是一個(gè)喜歡嘗鮮的人(當(dāng)然我也已經(jīng)在生產(chǎn)環(huán)境中使用了最新的 alpha 版本),但是在本文中,我不會使用最新的 Elasticsearch 5.0.0 alpha 版本,我還不是很清楚這個(gè)版本的功能,所以我不想成為那個(gè)引導(dǎo)你們出錯(cuò)的關(guān)鍵。

所以本文中涉及的 Elasticsearch 版本為最新穩(wěn)定版 2.4.0。

測試集群部署腳本

前面已經(jīng)說過,我提供這個(gè)腳本給你們,讓你們不必費(fèi)神去部署 Swarm 集群和 Elasticsearch,當(dāng)然你也可以跳過這一步,用你自己的 Swarm 模式引擎和你自己的 Elasticserch 節(jié)點(diǎn)。

執(zhí)行這段腳本之前,你需要:

Docker Machine – 最終版:在 DigitalOcean 中提供 Docker 引擎。

DigitalOcean API Token: 讓 docker 機(jī)器按照你的意思來啟動(dòng)節(jié)點(diǎn)。

創(chuàng)建集群的腳本

現(xiàn)在萬事俱備,你可以把下面的代碼拷到 create-cluster.sh 文件中:

  1. #!/usr/bin/env bash 
  2. Create a Swarm Mode cluster with a single master and a configurable number of workers 
  3.  
  4. workers=${WORKERS:-"worker1 worker2"
  5.  
  6. ####################################### 
  7. # Creates a machine on Digital Ocean 
  8. # Globals: 
  9. #   DO_ACCESS_TOKEN The token needed to access DigitalOcean's API 
  10. # Arguments: 
  11. #   $1 the actual name to give to the machine 
  12. ####################################### 
  13. create_machine() { 
  14.   docker-machine create \ 
  15.     -d digitalocean \ 
  16.     --digitalocean-access-token=$DO_ACCESS_TOKEN \ 
  17.     --digitalocean-size 2gb \ 
  18.     $1 
  19.  
  20. ####################################### 
  21. # Executes a command on the specified machine 
  22. # Arguments: 
  23. #   $1     The machine on which to run the command 
  24. #   $2..$n The command to execute on that machine 
  25. ####################################### 
  26. machine_do() { 
  27.   docker-machine ssh $@ 
  28.  
  29. main() { 
  30.  
  31.   if [ -z "$DO_ACCESS_TOKEN" ]; then 
  32.     echo "Please export a DigitalOcean Access token: https://cloud.digitalocean.com/settings/api/tokens/new" 
  33.     echo "export DO_ACCESS_TOKEN=<yourtokenhere>" 
  34.     exit 1 
  35.   fi 
  36.  
  37.   if [ -z "$WORKERS" ]; then 
  38.     echo "You haven't provided your workers by setting the \$WORKERS environment variable, using the default ones: $workers" 
  39.   fi 
  40.  
  41.   # Create the first and only master 
  42.   echo "Creating the master" 
  43.  
  44.   create_machine master1 
  45.   master_ip=$(docker-machine ip master1) 
  46.  
  47.   # Initialize the swarm mode on it 
  48.  
  49.   echo "Initializing the swarm mode" 
  50.   machine_do master1 docker swarm init --advertise-addr $master_ip 
  51.   # Obtain the token to allow workers to join 
  52.  
  53.   worker_tkn=$(machine_do master1 docker swarm join-token -q worker) 
  54.   echo "Worker token: ${worker_tkn}" 
  55.   # Create and join the workers
  56.  
  57.   for worker in $workers; do 
  58.     echo "Creating worker ${worker}" 
  59.     create_machine $worker 
  60.     machine_do $worker docker swarm join --token $worker_tkn $master_ip:2377 
  61.   done 
  62.  
  63. main $@ 

賦予它可執(zhí)行權(quán)限:

  1. chmod +x create-cluster.sh 

創(chuàng)建集群

如文件名所示,我們可以用它來創(chuàng)建集群。默認(rèn)情況下這個(gè)腳本會創(chuàng)建一個(gè) master 和兩個(gè) worker,如果你想修改 worker 個(gè)數(shù),可以設(shè)置環(huán)境變量 WORKERS。

現(xiàn)在就來創(chuàng)建集群吧。

  1. ./create-cluster.sh 

你可以出去喝杯咖啡,因?yàn)檫@需要花點(diǎn)時(shí)間。

最后集群部署好了。

現(xiàn)在為了驗(yàn)證 Swarm 模式集群已經(jīng)正常運(yùn)行,我們可以通過 ssh 登錄進(jìn) master:

  1. docker-machine ssh master1 

然后列出集群的節(jié)點(diǎn):

  1. docker node ls 
  1. ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS 
  2. 26fi3wiqr8lsidkjy69k031w2 *  master1   Ready   Active        Leader 
  3. dyluxpq8sztj7kmwlzs51u4id    worker2   Ready   Active 
  4. epglndegvixag0jztarn2lte8    worker1   Ready   Active 

安裝 Elasticsearch 和 Kibana

注意,從現(xiàn)在開始所有的命令都運(yùn)行在主節(jié)點(diǎn) master1 上。在生產(chǎn)環(huán)境中,你可能會把 Elasticsearch 和 Kibana 安裝在一個(gè)單獨(dú)的、大小合適的實(shí)例集合中。但是在我們的實(shí)驗(yàn)中,我們還是把它們和 Swarm 模式集群安裝在一起。

為了將 Elasticsearch 和 cAdvisor 連通,我們需要?jiǎng)?chuàng)建一個(gè)自定義的網(wǎng)絡(luò),因?yàn)槲覀兪褂昧思海⑶胰萜骺赡軙植荚诓煌墓?jié)點(diǎn)上,我們需要使用 overlay 網(wǎng)絡(luò)(LCTT 譯注:overlay 網(wǎng)絡(luò)是指在不改變現(xiàn)有網(wǎng)絡(luò)基礎(chǔ)設(shè)施的前提下,通過某種約定通信協(xié)議,把二層報(bào)文封裝在 IP 報(bào)文之上的新的數(shù)據(jù)格式,是目前最主流的容器跨節(jié)點(diǎn)數(shù)據(jù)傳輸和路由方案)。

也許你會問,“為什么還要網(wǎng)絡(luò)?我們不是可以用 link 嗎?” 請考慮一下,自從引入用戶定義網(wǎng)絡(luò)后,link 機(jī)制就已經(jīng)過時(shí)了。

以下內(nèi)容摘自 Docker 文檔:

在 Docker network 特性出來以前,你可以使用 Docker link 特性實(shí)現(xiàn)容器互相發(fā)現(xiàn)、安全通信。而在 network 特性出來以后,你還可以使用 link,但是當(dāng)容器處于默認(rèn)橋接網(wǎng)絡(luò)或用戶自定義網(wǎng)絡(luò)時(shí),它們的表現(xiàn)是不一樣的。現(xiàn)在創(chuàng)建 overlay 網(wǎng)絡(luò),名稱為 monitoring:

  1. docker network create monitoring -d overlay 

Elasticsearch 容器

  1. docker service create --network=monitoring \ 
  2.   --mount type=volume,target=/usr/share/elasticsearch/data \ 
  3.   --constraint node.hostname==worker1 \ 
  4.   --name elasticsearch elasticsearch:2.4.0 

注意 Elasticsearch 容器被限定在 worker1 節(jié)點(diǎn),這是因?yàn)樗\(yùn)行時(shí)需要依賴 worker1 節(jié)點(diǎn)上掛載的卷。

Kibana 容器

  1. docker service create --network=monitoring --name kibana -e ELASTICSEARCH_URL="http://elasticsearch:9200" -p 5601:5601 kibana:4.6.0 

如你所見,我們啟動(dòng)這兩個(gè)容器時(shí),都讓它們加入 monitoring 網(wǎng)絡(luò),這樣一來它們可以通過名稱(如 Kibana)被相同網(wǎng)絡(luò)的其他服務(wù)訪問。

現(xiàn)在,通過 routing mesh 機(jī)制,我們可以使用瀏覽器訪問服務(wù)器的 IP 地址來查看 Kibana 報(bào)表界面。

獲取 master1 實(shí)例的公共 IP 地址:

  1. docker-machine ip master1 

打開瀏覽器輸入地址:http://[master1 的 ip 地址]:5601/status

所有項(xiàng)目都應(yīng)該是綠色:

讓我們接下來開始收集數(shù)據(jù)!

收集容器的運(yùn)行數(shù)據(jù)

收集數(shù)據(jù)之前,我們需要?jiǎng)?chuàng)建一個(gè)服務(wù),以全局模式運(yùn)行 cAdvisor,為每個(gè)有效節(jié)點(diǎn)設(shè)置一個(gè)定時(shí)任務(wù)。

這個(gè)服務(wù)與 Elasticsearch 處于相同的網(wǎng)絡(luò),以便于 cAdvisor 可以推送數(shù)據(jù)給 Elasticsearch。

  1. docker service create --network=monitoring --mode global --name cadvisor \ 
  2.   --mount type=bind,source=/,target=/rootfs,readonly=true \ 
  3.   --mount type=bind,source=/var/run,target=/var/run,readonly=false \ 
  4.   --mount type=bind,source=/sys,target=/sys,readonly=true \ 
  5.   --mount type=bind,source=/var/lib/docker/,target=/var/lib/docker,readonly=true \ 
  6.   google/cadvisor:latest \ 
  7.   -storage_driver=elasticsearch \ 
  8.   -storage_driver_es_host="http://elasticsearch:9200" 

注意:如果你想配置 cAdvisor 選項(xiàng),參考這里。現(xiàn)在 cAdvisor 在發(fā)送數(shù)據(jù)給 Elasticsearch,我們通過定義一個(gè)索引模型來檢索 Kibana 中的數(shù)據(jù)。有兩種方式可以做到這一點(diǎn):通過 Kibana 或者通過 API。在這里我們使用 API 方式實(shí)現(xiàn)。

我們需要在一個(gè)連接到 monitoring 網(wǎng)絡(luò)的正在運(yùn)行的容器中運(yùn)行索引創(chuàng)建命令,你可以在 cAdvisor 容器中拿到 shell,不幸的是 Swarm 模式在開啟服務(wù)時(shí)會在容器名稱后面附加一個(gè)唯一的 ID 號,所以你需要手動(dòng)指定 cAdvisor 容器的名稱。

拿到 shell:

  1. docker exec -ti <cadvisor-container-name> sh 

創(chuàng)建索引:

  1. curl -XPUT http://elasticsearch:9200/.kibana/index-pattern/cadvisor -d '{"title" : "cadvisor*", "timeFieldName": "container_stats.timestamp"}' 

如果你夠懶,可以只執(zhí)行下面這一句:

  1. docker exec $(docker ps | grep cadvisor | awk '{print $1}' | head -1) curl -XPUT http://elasticsearch:9200/.kibana/index-pattern/cadvisor -d '{"title" : "cadvisor*", "timeFieldName": "container_stats.timestamp"}' 

把數(shù)據(jù)匯總成報(bào)表

你現(xiàn)在可以使用 Kibana 來創(chuàng)建一份美觀的報(bào)表了。但是不要著急,我為你們建了一份報(bào)表和一些圖形界面來方便你們?nèi)腴T。

訪問 Kibana 界面 => Setting => Objects => Import,然后選擇包含以下內(nèi)容的 JSON 文件,就可以導(dǎo)入我的配置信息了:

  1.   { 
  2.     "_id""cAdvisor"
  3.     "_type""dashboard"
  4.     "_source": { 
  5.       "title""cAdvisor"
  6.       "hits": 0, 
  7.       "description"""
  8.       "panelsJSON""[{\"id\":\"Filesystem-usage\",\"type\":\"visualization\",\"panelIndex\":1,\"size_x\":6,\"size_y\":3,\"col\":1,\"row\":1},{\"id\":\"Memory-[Node-equal->Container]\",\"type\":\"visualization\",\"panelIndex\":2,\"size_x\":6,\"size_y\":4,\"col\":7,\"row\":4},{\"id\":\"memory-usage-by-machine\",\"type\":\"visualization\",\"panelIndex\":3,\"size_x\":6,\"size_y\":6,\"col\":1,\"row\":4},{\"id\":\"CPU-Total-Usage\",\"type\":\"visualization\",\"panelIndex\":4,\"size_x\":6,\"size_y\":5,\"col\":7,\"row\":8},{\"id\":\"Network-RX-TX\",\"type\":\"visualization\",\"panelIndex\":5,\"size_x\":6,\"size_y\":3,\"col\":7,\"row\":1}]"
  9.       "optionsJSON""{\"darkTheme\":false}"
  10.       "uiStateJSON""{}"
  11.       "version": 1, 
  12.       "timeRestore"false
  13.       "kibanaSavedObjectMeta": { 
  14.         "searchSourceJSON""{\"filter\":[{\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}}}]}" 
  15.       } 
  16.     } 
  17.   }, 
  18.   { 
  19.     "_id""Network"
  20.     "_type""search"
  21.     "_source": { 
  22.       "title""Network"
  23.       "description"""
  24.       "hits": 0, 
  25.       "columns": [ 
  26.         "machine_name"
  27.         "container_Name"
  28.         "container_stats.network.name"
  29.         "container_stats.network.interfaces"
  30.         "container_stats.network.rx_bytes"
  31.         "container_stats.network.rx_packets"
  32.         "container_stats.network.rx_dropped"
  33.         "container_stats.network.rx_errors"
  34.         "container_stats.network.tx_packets"
  35.         "container_stats.network.tx_bytes"
  36.         "container_stats.network.tx_dropped"
  37.         "container_stats.network.tx_errors" 
  38.       ], 
  39.       "sort": [ 
  40.         "container_stats.timestamp"
  41.         "desc" 
  42.       ], 
  43.       "version": 1, 
  44.       "kibanaSavedObjectMeta": { 
  45.         "searchSourceJSON""{\"index\":\"cadvisor*\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"highlight\":{\"pre_tags\":[\"@kibana-highlighted-field@\"],\"post_tags\":[\"@/kibana-highlighted-field@\"],\"fields\":{\"*\":{}},\"fragment_size\":2147483647},\"filter\":[]}" 
  46.       } 
  47.     } 
  48.   }, 
  49.   { 
  50.     "_id""Filesystem-usage"
  51.     "_type""visualization"
  52.     "_source": { 
  53.       "title""Filesystem usage"
  54.       "visState""{\"title\":\"Filesystem usage\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":false,\"addTooltip\":true,\"defaultYExtents\":false,\"mode\":\"stacked\",\"scale\":\"linear\",\"setYExtents\":false,\"shareYAxis\":true,\"times\":[],\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"container_stats.filesystem.usage\",\"customLabel\":\"USED\"}},{\"id\":\"2\",\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"machine_name\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"row\":false}},{\"id\":\"3\",\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"container_stats.filesystem.capacity\",\"customLabel\":\"AVAIL\"}},{\"id\":\"4\",\"type\":\"terms\",\"schema\":\"segment\",\"params\":{\"field\":\"container_stats.filesystem.device\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}],\"listeners\":{}}"
  55.       "uiStateJSON""{\"vis\":{\"colors\":{\"Average container_stats.filesystem.available\":\"#E24D42\",\"Average container_stats.filesystem.base_usage\":\"#890F02\",\"Average container_stats.filesystem.capacity\":\"#3F6833\",\"Average container_stats.filesystem.usage\":\"#E24D42\",\"USED\":\"#BF1B00\",\"AVAIL\":\"#508642\"}}}"
  56.       "description"""
  57.       "version": 1, 
  58.       "kibanaSavedObjectMeta": { 
  59.         "searchSourceJSON""{\"index\":\"cadvisor*\",\"query\":{\"query_string\":{\"analyze_wildcard\":true,\"query\":\"*\"}},\"filter\":[]}" 
  60.       } 
  61.     } 
  62.   }, 
  63.   { 
  64.     "_id""CPU-Total-Usage"
  65.     "_type""visualization"
  66.     "_source": { 
  67.       "title""CPU Total Usage"
  68.       "visState""{\"title\":\"CPU Total Usage\",\"type\":\"area\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"smoothLines\":false,\"scale\":\"linear\",\"interpolate\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"container_stats.cpu.usage.total\"}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"container_stats.timestamp\",\"interval\":\"auto\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"container_Name\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}},{\"id\":\"4\",\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"machine_name\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"row\":true}}],\"listeners\":{}}"
  69.       "uiStateJSON""{}"
  70.       "description"""
  71.       "version": 1, 
  72.       "kibanaSavedObjectMeta": { 
  73.         "searchSourceJSON""{\"index\":\"cadvisor*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" 
  74.       } 
  75.     } 
  76.   }, 
  77.   { 
  78.     "_id""memory-usage-by-machine"
  79.     "_type""visualization"
  80.     "_source": { 
  81.       "title""Memory [Node]"
  82.       "visState""{\"title\":\"Memory [Node]\",\"type\":\"area\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"smoothLines\":false,\"scale\":\"linear\",\"interpolate\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"container_stats.memory.usage\"}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"container_stats.timestamp\",\"interval\":\"auto\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"machine_name\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}}],\"listeners\":{}}"
  83.       "uiStateJSON""{}"
  84.       "description"""
  85.       "version": 1, 
  86.       "kibanaSavedObjectMeta": { 
  87.         "searchSourceJSON""{\"index\":\"cadvisor*\",\"query\":{\"query_string\":{\"query\":\"*\",\"analyze_wildcard\":true}},\"filter\":[]}" 
  88.       } 
  89.     } 
  90.   }, 
  91.   { 
  92.     "_id""Network-RX-TX"
  93.     "_type""visualization"
  94.     "_source": { 
  95.       "title""Network RX TX"
  96.       "visState""{\"title\":\"Network RX TX\",\"type\":\"histogram\",\"params\":{\"addLegend\":true,\"addTimeMarker\":true,\"addTooltip\":true,\"defaultYExtents\":false,\"mode\":\"stacked\",\"scale\":\"linear\",\"setYExtents\":false,\"shareYAxis\":true,\"times\":[],\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"container_stats.network.rx_bytes\",\"customLabel\":\"RX\"}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"container_stats.timestamp\",\"interval\":\"s\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"container_stats.network.tx_bytes\",\"customLabel\":\"TX\"}}],\"listeners\":{}}"
  97.       "uiStateJSON""{\"vis\":{\"colors\":{\"RX\":\"#EAB839\",\"TX\":\"#BF1B00\"}}}"
  98.       "description"""
  99.       "savedSearchId""Network"
  100.       "version": 1, 
  101.       "kibanaSavedObjectMeta": { 
  102.         "searchSourceJSON""{\"filter\":[]}" 
  103.       } 
  104.     } 
  105.   }, 
  106.   { 
  107.     "_id""Memory-[Node-equal->Container]"
  108.     "_type""visualization"
  109.     "_source": { 
  110.       "title""Memory [Node=>Container]"
  111.       "visState""{\"title\":\"Memory [Node=>Container]\",\"type\":\"area\",\"params\":{\"shareYAxis\":true,\"addTooltip\":true,\"addLegend\":true,\"smoothLines\":false,\"scale\":\"linear\",\"interpolate\":\"linear\",\"mode\":\"stacked\",\"times\":[],\"addTimeMarker\":false,\"defaultYExtents\":false,\"setYExtents\":false,\"yAxis\":{}},\"aggs\":[{\"id\":\"1\",\"type\":\"avg\",\"schema\":\"metric\",\"params\":{\"field\":\"container_stats.memory.usage\"}},{\"id\":\"2\",\"type\":\"date_histogram\",\"schema\":\"segment\",\"params\":{\"field\":\"container_stats.timestamp\",\"interval\":\"auto\",\"customInterval\":\"2h\",\"min_doc_count\":1,\"extended_bounds\":{}}},{\"id\":\"3\",\"type\":\"terms\",\"schema\":\"group\",\"params\":{\"field\":\"container_Name\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\"}},{\"id\":\"4\",\"type\":\"terms\",\"schema\":\"split\",\"params\":{\"field\":\"machine_name\",\"size\":5,\"order\":\"desc\",\"orderBy\":\"1\",\"row\":true}}],\"listeners\":{}}"
  112.       "uiStateJSON""{}"
  113.       "description"""
  114.       "version": 1, 
  115.       "kibanaSavedObjectMeta": { 
  116.         "searchSourceJSON""{\"index\":\"cadvisor*\",\"query\":{\"query_string\":{\"query\":\"* NOT container_Name.raw: \\\\\\\"/\\\\\\\" AND NOT container_Name.raw: \\\\\\\"/docker\\\\\\\"\",\"analyze_wildcard\":true}},\"filter\":[]}" 
  117.       } 
  118.     } 
  119.   } 

這里還有很多東西可以玩,你也許想自定義報(bào)表界面,比如添加內(nèi)存頁錯(cuò)誤狀態(tài),或者收發(fā)包的丟包數(shù)。如果你能實(shí)現(xiàn)開頭列表處我沒能實(shí)現(xiàn)的項(xiàng)目,那也是很好的。

總結(jié)

正確監(jiān)控需要大量時(shí)間和精力,容器的 CPU、內(nèi)存、IO、網(wǎng)絡(luò)和磁盤,監(jiān)控的這些參數(shù)還只是整個(gè)監(jiān)控項(xiàng)目中的滄海一粟而已。

我不知道你做到了哪一階段,但接下來的任務(wù)也許是:

  • 收集運(yùn)行中的容器的日志
  • 收集應(yīng)用的日志
  • 監(jiān)控應(yīng)用的性能
  • 報(bào)警
  • 監(jiān)控健康狀態(tài)

如果你有意見或建議,請留言。祝你玩得開心。

現(xiàn)在你可以關(guān)掉這些測試系統(tǒng)了:

  1. docker-machine rm master1 worker{1,2} 
責(zé)任編輯:武曉燕 來源: Linux中國
相關(guān)推薦

2019-09-26 08:59:39

DockerGoogle軟件

2019-07-01 09:33:58

DockerNginx操作系統(tǒng)

2021-05-11 08:00:00

Docker容器開發(fā)

2019-12-05 10:40:41

DockerMySQL數(shù)據(jù)庫

2016-11-03 20:06:53

UbuntuGrafanaDocker

2023-06-16 16:06:02

lazydockerDocker容器

2021-11-07 07:45:39

ODBParser數(shù)據(jù)安全安全工具

2021-01-15 13:37:43

Portainer.iDocker運(yùn)維

2021-01-15 13:54:04

Portainer.iDocker運(yùn)維

2023-02-22 08:28:22

開源搜索引擎python

2023-11-26 00:52:12

Docker鏡像容器

2021-04-16 08:00:00

容器Docker工具

2019-07-08 08:59:41

Docker容器主機(jī)

2021-06-09 09:36:18

DjangoElasticSearLinux

2019-07-16 14:44:52

DockerMySQL操作系統(tǒng)

2022-07-25 14:24:53

Docker容器安全

2021-06-02 08:11:59

ElasticSearUptim監(jiān)控

2021-10-26 07:24:10

Gorsair容器安全工具

2015-08-07 10:10:18

LinuxDocker容器

2023-11-02 08:45:07

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

99国产欧美久久久精品| 93在线视频精品免费观看| 日韩欧美999| 亚洲欧洲精品一区二区| 性生交大片免费看女人按摩| 免费亚洲视频| 欧美成人精品三级在线观看| 黄色录像a级片| 日韩护士脚交太爽了| 一区二区三区不卡在线观看| 热re99久久精品国99热蜜月| 99在线精品视频免费观看软件| 激情综合电影网| 综合国产在线视频| 国产精品麻豆入口| 国产乱码精品一区二区三区亚洲人| 天天综合色天天| av动漫免费观看| 黄色av网址在线免费观看| 国产精品中文字幕日韩精品| 国产精欧美一区二区三区| 成人写真视频福利网| 91免费综合在线| 精品在线免费观看视频| 国产一区网站| 精品美女一区二区| 色噜噜狠狠一区二区| 久草在线资源福利站| 成人欧美一区二区三区1314| 欧美在线播放一区| 五十路在线观看| 国产精品一二一区| 91精品在线看| 中文字幕av影视| 亚洲永久免费精品| 性欧美视频videos6一9| 欧美黄色一级网站| 91成人精品视频| 日韩在线视频线视频免费网站| 国产精品亚洲欧美导航| 人妻 日韩精品 中文字幕| 国产精品国码视频| 欧美成人h版在线观看| 国产不卡在线观看视频| 精品久久精品| 国产亚洲精品美女| xxxx日本黄色| 国产一区二区三区不卡视频网站| 亚洲精品xxxx| 中文字幕一区三区久久女搜查官| 欧美黄色一级| 日韩欧美中文一区二区| 国产性生活一级片| 日韩一区二区三区高清在线观看| 制服丝袜亚洲网站| 91小视频在线播放| 国产在线不卡一区二区三区| 91精品欧美久久久久久动漫| 久久精品久久99| 日韩欧美中文在线观看| 日韩欧美黄色影院| 亚洲久久久久久| 亚洲精品推荐| 亚洲无亚洲人成网站77777| 国产美女永久免费无遮挡| 欧美午夜精彩| www.亚洲免费视频| 欧美日韩在线观看成人| 狠狠色丁香久久综合频道| 国产69精品久久久| 三级黄色在线视频| 日日摸夜夜添夜夜添国产精品| 国产成人精品免费视频| 伊人久久成人网| 国产精品99久久久久久有的能看| 99在线免费观看视频| 无码精品人妻一区二区三区影院| 久久久久久亚洲综合影院红桃 | 日韩欧美国产亚洲| 六月天综合网| 国产伊人精品在线| www.国产麻豆| 国产片一区二区三区| 色乱码一区二区三区熟女 | 欧亚精品在线观看| 中文字幕+乱码+中文| 国产ts人妖一区二区| 久久人人九九| 欧美videos极品另类| 午夜天堂影视香蕉久久| 久久综合久久色| 日韩精品成人| 国产亚洲在线播放| 国产在线成人精品午夜| 日日夜夜精品视频天天综合网| 成人激情视频网| 天天综合网天天综合| 国产精品天干天干在线综合| 久青草视频在线播放| av免费在线一区| 精品国产一区二区三区av性色| 亚洲区免费视频| 欧美日韩精品一本二本三本| 青青草成人在线| www.av导航| 中文字幕高清不卡| 国产 福利 在线| 国产高清日韩| 亚洲无限av看| 日韩精品在线观看免费| 国产精品一区二区91| 日韩wuma| 欧美男男tv网站在线播放| 欧美精品一二三区| 泷泽萝拉在线播放| 欧美精品三级| 国产一区二中文字幕在线看| 日韩专区一区二区| 亚洲第一综合色| 一级 黄 色 片一| 成人精品视频| 欧洲中文字幕国产精品| 风流老熟女一区二区三区| 17c精品麻豆一区二区免费| 国产乱子夫妻xx黑人xyx真爽| 亚洲专区**| 日韩一区二区三区xxxx| 波多野结衣一区二区三区在线 | 国产伦精品一区二区三区高清版| 麻豆传媒视频在线观看| 在线观看av一区二区| 亚洲专区区免费| 亚洲国产午夜| 国产日本一区二区三区| 午夜dj在线观看高清视频完整版| 欧美精品久久久久久久久老牛影院 | 成人精品在线看| 成人免费视频视频| 欧美黄网在线观看| 精品国产一区二| 久久天天躁狠狠躁夜夜躁| 国产一区二区麻豆| 亚洲欧美中日韩| 亚洲第一区第二区第三区| 日韩黄色大片网站| 国产日韩欧美视频| 免费观看久久久久| 欧美一区二区在线播放| 在线看的片片片免费| 国产一区在线视频| 国产一级黄色录像片| 午夜视频一区二区在线观看| 欧美黑人巨大xxx极品| 亚洲国产成人在线观看| 亚瑟在线精品视频| 色噜噜日韩精品欧美一区二区| 亚洲欧美成人| 亚洲福利av在线| 一级欧美视频| 欧美精品亚州精品| 日本国产在线观看| 欧美色另类天堂2015| 加勒比综合在线| 久久国产精品99精品国产| 一区二区三区四区不卡| 精品国产乱码一区二区三区| 欧美激情亚洲另类| 深夜福利视频在线观看| 欧美综合色免费| 国产激情无码一区二区三区| 国产成人亚洲精品狼色在线| 人人妻人人添人人爽欧美一区| 蜜桃a∨噜噜一区二区三区| 国产精品免费在线免费| 超碰在线caoporn| 精品国产乱码久久久久久图片| 久久久久久久久久免费视频| 国产亚洲精品超碰| √天堂资源在线| 国产精品三上| 中文字幕精品—区二区日日骚| 国产一区精品二区| 欧美中文在线免费| 久久黄色美女电影| 亚洲激情在线观看视频免费| 超碰在线97观看| 亚洲在线中文字幕| 欧美做受高潮6| 国产成人精品亚洲777人妖| 那种视频在线观看| 欧美在线影院| 亚洲国产高清国产精品| 91成人噜噜噜在线播放| 国产乱肥老妇国产一区二 | 韩国三级在线观看久| 日韩一区二区麻豆国产| 毛片视频网站在线观看| 亚洲日本在线天堂| 素人fc2av清纯18岁| 国产一区二区三区四区在线观看| 国产午夜大地久久| 婷婷综合伊人| 欧美精品国产精品久久久| 亚洲性视频在线| 国产精品丝袜一区二区三区| 免费在线小视频| 久精品免费视频| caoporn国产精品免费视频| 亚洲白虎美女被爆操| 国产又粗又大又爽| 91久久精品一区二区二区| 国产精品999久久久| 亚洲三级电影网站| 欧美日韩中文字幕视频| 91在线视频免费观看| av在线天堂网| 国产精品一区二区视频| 久久国产激情视频| 久久成人精品| 欧美日韩在线一| 一区在线视频观看| 天堂а√在线中文在线| 欧美国产偷国产精品三区| 免费试看一区| 亚洲人成亚洲精品| 国产精品我不卡| 亚洲天堂av资源在线观看| 91老司机在线| 日韩在线激情| 国产欧美精品一区二区| 精品日韩视频| 国产91在线高潮白浆在线观看| 精精国产xxx在线视频app| 久久久久免费视频| 少女频道在线观看高清| 欧美成人午夜免费视在线看片 | 伊人久久大香线蕉| 精品欧美国产| 日本一区福利在线| 精品在线视频一区二区| 欧美日韩一本| 精品一区二区久久久久久久网站| 精品素人av| 精品一区二区不卡| 外国成人在线视频| 欧美日韩亚洲一区二区三区四区| 中文字幕伦av一区二区邻居| 欧美日韩亚洲一区二区三区在线观看| 亚洲欧美tv| 日韩成人在线资源| 日本精品三区| 中文网丁香综合网| 五月天激情综合网| 成年在线观看视频| 在线成人黄色| 无码人妻丰满熟妇区毛片18| 久久久蜜桃一区二区人| 天天操天天爱天天爽| 美女看a上一区| 亚洲精品性视频| 国产成人综合自拍| 男人的天堂影院| 久久久久一区二区三区四区| 久久久国产一级片| 亚洲精品视频自拍| 91av在线免费视频| 在线精品亚洲一区二区不卡| 中文字幕有码视频| 日韩午夜精品电影| 亚州男人的天堂| 伊人伊人伊人久久| 麻豆免费在线观看| 97精品视频在线| 欧美性片在线观看| 91久久久久久久| 成人搞黄视频| 日韩久久不卡| 欧美在线影院| 91免费视频网站在线观看| 男男成人高潮片免费网站| 永久av免费在线观看| 不卡免费追剧大全电视剧网站| 老熟妇一区二区| 亚洲欧美色一区| 青青草免费观看视频| 欧美人动与zoxxxx乱| 亚洲精品久久久久久久久久久久久久 | 午夜精品成人在线| 中文字幕 国产| 亚洲国产天堂久久国产91| av电影在线观看| 久久久久久久久久久久久久久久久久av| 欧美私密网站| 亚洲www视频| 国产免费av一区二区三区| 91免费国产精品| 日韩精品国产精品| 中文字幕在线国产| 国产精品对白交换视频| 西西44rtwww国产精品| 91精品国产高清一区二区三区| 日本在线丨区| 欧美大成色www永久网站婷| 欧美momandson| 国产精品久久一区二区三区| 欧美wwwww| 欧美视频第一区| 福利一区二区在线| 亚洲综合久久av一区二区三区| 欧美日韩免费观看中文| www.久久伊人| 久久精品中文字幕一区| 色尼玛亚洲综合影院| 精品999在线观看| 国产综合精品| 欧美激情第一区| 国产精品午夜在线| 无码人妻丰满熟妇精品区| 亚洲国产第一页| 羞羞的视频在线观看| 国产日韩在线一区| 欧美一区二区三区高清视频| 国产超级av在线| www.日本不卡| 国产无精乱码一区二区三区| 欧美一区二区三区四区视频| 91电影在线播放| 国产精品电影久久久久电影网| 日韩福利视频一区| 波多野结衣综合网| 成人久久视频在线观看| 久久高清无码视频| 欧美第一区第二区| 天堂亚洲精品| 国产精品麻豆免费版| 亚洲天堂成人| 精品国产一二区| 夜夜操天天操亚洲| 亚洲成人77777| 欧美国产视频一区二区| 伊人久久大香线蕉av超碰| 国产一级不卡视频| 大陆成人av片| 国产午夜免费视频| 亚洲激情 国产| 国产不卡人人| 欧美二区三区在线| 日本美女视频一区二区| 又色又爽的视频| 欧美日韩成人综合在线一区二区| 91福利在线视频| 91在线精品播放| 欧美精品入口| 久久久久国产精品无码免费看| 午夜电影久久久| 激情在线视频| 国产欧美日韩专区发布| 亚洲精品网址| 国产av一区二区三区传媒| 午夜亚洲国产au精品一区二区| 天堂在线一二区| 国产精品第8页| 欧美1区3d| 国产又黄又粗又猛又爽的视频| 欧美日韩在线观看视频| 精品一二三区视频| 国产日韩视频在线观看| 国产精品观看| 成年人免费观看视频网站| 欧美性受极品xxxx喷水| 毛片av在线| 国产伦精品一区二区三区视频孕妇 | 久久久久久久久久久亚洲| 香蕉久久夜色精品国产更新时间| 国产精品天天av精麻传媒| 亚洲欧洲日产国码二区| 免费看av毛片| 国产精品普通话| 很黄很黄激情成人| av网在线播放| 日韩一区二区三区电影在线观看 | 国产天堂素人系列在线视频| 成人福利在线视频| 99精品国产福利在线观看免费| 国产真人做爰视频免费| 日韩一区二区在线播放| 中文字幕成在线观看| 日本丰满大乳奶| 91日韩精品一区| 国产人妻精品一区二区三| 欧美成人精品h版在线观看| 欧美性猛交99久久久久99按摩| 天天综合永久入口| 国产精品十八以下禁看| 亚洲福利久久| 免费在线观看a视频| 精品日韩在线观看| www.一区| 精品无码国模私拍视频| 综合久久久久久|