日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cAdvisor+InfluxDB+Grafana 监控Docker

發(fā)布時間:2023/12/19 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cAdvisor+InfluxDB+Grafana 监控Docker 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

容器的監(jiān)控方案其實有很多,有docker自身的docker stats命令、有Scout、有Data Dog等等,本文主要和大家分享一下比較經典的容器開源監(jiān)控方案組合:cAdvisor+InfluxDB+Grafan

一、概念

1). InfluxDB是什么nfluxDB是用GO語言編寫的一個開源分布式時序、事件和指標數(shù)據庫,無需外部的依賴,類似的數(shù)據庫有Elasticsearch、Graphite等等InfluxDB主要的功能:基于時間序列:支持與時間有關的相關函數(shù)(如最大、最小、求和等)可度量性:可以實時對大量數(shù)據進行計算基于事件:它支持任意的事件數(shù)據InfluxDB的主要特點:無結構(無模式):可以是任意數(shù)量的列可拓展的支持min, max, sum, count, mean, median 等一系列函數(shù),方便統(tǒng)計原生的HTTP支持,內置HTTP API強大的類SQL語法自帶管理界面,方便使用2). cAdvisor是什么它是Google用來監(jiān)測單節(jié)點的資源信息的監(jiān)控工具。Cadvisor提供了一目了然的單節(jié)點多容器的資源監(jiān)控功能。Google的Kubernetes中也缺省地將其作為單節(jié)點的資源監(jiān)控工具,各個節(jié)點缺省會被安裝上CadvisorcAvisor是利用docker status的數(shù)據信息,了解運行時容器資源使用和性能特征的一種工具cAdvisor的容器抽象基于Google的lmctfy容器棧,因此原生支持Docker容器并能夠“開箱即用”地支持其他的容器類型。cAdvisor部署為一個運行中的daemon,它會收集、聚集、處理并導出運行中容器的信息。這些信息能夠包含容器級別的資源隔離參數(shù)、資源的歷史使用狀況、反映資源使用和網絡統(tǒng)計數(shù)據完整歷史狀況的柱狀圖。cAdvisor功能:展示Host和容器兩個層次的監(jiān)控數(shù)據展示歷史變化數(shù)據溫馨提示:由于 cAdvisor 提供的操作界面略顯簡陋,而且需要在不同頁面之間跳轉,并且只能監(jiān)控一個 host,這不免會讓人質疑它的實用性。但 cAdvisor 的一個亮點是它可以將監(jiān)控到的數(shù)據導出給第三方工具,由這些工具進一步加工處理。我們可以把 cAdvisor 定位為一個監(jiān)控數(shù)據收集器,收集和導出數(shù)據是它的強項,而非展示數(shù)據3). Grafana是什么Grafana是一個可視化面板(Dashboard),有著非常漂亮的圖表和布局展示,功能齊全的度量儀表盤和圖形編輯器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作為數(shù)據源Grafana主要特性:靈活豐富的圖形化選項;可以混合多種風格;支持白天和夜間模式;支持多個數(shù)據源;溫馨提示:在這套監(jiān)控方案中:InfluxDB用于數(shù)據存儲,cAdvisor用戶數(shù)據采集,Grafana用于數(shù)據展示

二、單節(jié)點部署

溫馨提示:
服務器信息:
主機IP:192.168.15.129
主機名:master1
docker版本:18.06.1-ce

1. 下載鏡像(可做可不做,在創(chuàng)建容器的時候會如果本地沒有會自動下載)

# 下載鏡像 [root@master1 ~]# docker pull tutum/influxdb [root@master1 ~]# docker pull google/cadvisor [root@master1 ~]# docker pull grafana/grafana# 查看鏡像 [root@master1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE grafana/grafana latest 7038dbc9a50c 7 days ago 223MB google/cadvisor latest 75f88e3ec333 10 months ago 62.2MB tutum/influxdb latest c061e5808198 2 years ago 290MB

2.?創(chuàng)建InfluxDB容器

# 創(chuàng)建InfluxDB容器 [root@master1 ~]# docker run -itd -p 8083:8083 -p 8086:8086 --name influxdb tutum/influxdb參數(shù)詳解: -itd:已交互模式運行容器,并分配偽終端,并在后臺啟動容器 -p:端口映射 8083端口為influxdb后臺控制端口,8086端口是influxdb的數(shù)據端口 --name:給容器起個名字 tutum/influxdb:以這個鏡像運行容器(本地有使用本地,沒有先去下載然后啟動容器)# 查看容器 [root@master1 ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f01c5e754bc0 tutum/influxdb "/run.sh" 3 seconds ago Up 2 seconds 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb

配置InfluxDB

登錄InfluxDB的8083端口,也是管理平臺設置管理員用戶名密碼,并添加數(shù)據庫

登錄URL:http://192.168.15.129:8083

設置管理員用戶名密碼,并添加數(shù)據庫

3.?創(chuàng)建cadvisor容器

# 創(chuàng)建cadvisor容器 [root@master1 ~]# docker run -itd --name cadvisor -p 8080:8080 --mount type=bind,src=/,dst=/rootfs,ro --mount type=bind,src=/var/run,dst=/var/run --mount type=bind,src=/sys,dst=/sys,ro --mount type=bind,src=/var/lib/docker/,dst=/var/lib/docker,ro google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_user=root -storage_driver_password=root -storage_driver_host=192.168.15.129:8086參數(shù)詳解: -itd:已交互模式運行容器,并分配偽終端,并在后臺啟動容器 -p: 端口映射 8080為cadvisor的管理平臺端口 --name:給容器起個名字 --mout:把宿主機的相文目錄綁定到容器中,這些目錄都是cadvisor需要采集的目錄文件和監(jiān)控內容 google/cadvisor:以這個鏡像運行容器(本地有使用本地,沒有先去下載然后啟動容器) -storage_driver:需要指定cadvisor的存儲驅動這里是influxdb -storage_driver_db:需要指定存儲的數(shù)據庫 -storage_driver_user:influxdb數(shù)據庫的用戶名(測試可以加可以不加) -storage_driver_password:influxdb數(shù)據庫的密碼(測試可以加可以不加) -storage_driver_host:influxdb數(shù)據庫的地址和端口# 查看容器 [root@master1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7c2005bb79d1 google/cadvisor "/usr/bin/cadvisor -…" 3 seconds ago Up 2 seconds 0.0.0.0:8080->8080/tcp cadvisor 2fa150d3c52b tutum/influxdb "/run.sh" 10 minutes ago Up 10 minutes 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb

查看cadvisor管理平臺
登錄URL:http://192.168.15.129:8080

登錄數(shù)據庫查看有沒有把采集的數(shù)據寫入(SHOW MEASUREMENTS執(zhí)行這個命令)

得到上面的結果說明已經采集到數(shù)據并且寫入到數(shù)據庫了

4. 創(chuàng)建grafana容器

# 創(chuàng)建grafana容器 [root@master1 ~]# docker run -itd --name grafana -p 3000:3000 grafana/grafana參數(shù)詳解: -itd:已交互模式運行容器,并分配偽終端,并在后臺啟動容器 -p: 端口映射 3000為grafana的管理平臺端口 --name:給容器起個名字 grafana/grafana:以這個鏡像運行容器(本地有使用本地,沒有先去下載然后啟動容器)# 查看容器 [root@master1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 57f335665902 grafana/grafana "/run.sh" 2 seconds ago Up 1 second 0.0.0.0:3000->3000/tcp grafana 7c2005bb79d1 google/cadvisor "/usr/bin/cadvisor -…" 15 minutes ago Up 15 minutes 0.0.0.0:8080->8080/tcp cadvisor 2fa150d3c52b tutum/influxdb "/run.sh" 25 minutes ago Up 25 minutes 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb

配置granfana
登錄URL:http://192.168.15.129:3000
默認用戶名:admin
默認密碼:admin
溫馨提示:
首次登錄會提示修改密碼才可以登錄,我這里修改密碼為admin

?得到上面的結果表示整個監(jiān)控已經部署完成并可以對基礎監(jiān)控進行實施監(jiān)控,具體需要監(jiān)控什么,grafana怎么樣排版,怎樣起名字,根據個人的業(yè)務需求來進行設置即可 

三、Swarm多節(jié)點部署

剛剛上面的例子是在一臺主機上監(jiān)控一臺主機的容器信息,這里我們要使用Swarm的集群部署多臺主機容器之間的監(jiān)控
溫馨提示:
主機IP:192.168.15.129 主機名:master1 角色:Swarm的主 granfana容器 influxdb容器 cadvisor容器
主機IP:192.168.15.130 主機名:node1 角色:Swarm的node節(jié)點 cadvisor容器
主機IP:192.168.15.131 主機名:node2 角色:Swarm的node節(jié)點 cadvisor容器

1. 準備工作

# 創(chuàng)建InfluxDB的宿主機目錄掛載到容器 [root@master1 ~]# mkdir -p /opt/influxdb# 下載鏡像(可做可不做,在創(chuàng)建容器的時候會如果本地沒有會自動下載) [root@master1 ~]# docker pull tutum/influxdb [root@master1 ~]# docker pull google/cadvisor [root@master1 ~]# docker pull grafana/grafana# 查看鏡像 [root@master1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE grafana/grafana latest 7038dbc9a50c 7 days ago 223MB google/cadvisor latest 75f88e3ec333 10 months ago 62.2MB tutum/influxdb latest c061e5808198 2 years ago 290MB

2. 編寫創(chuàng)建容器的yml文件

# 編寫docker-compose.yml文件 [root@master1 ~]# mkdir test [root@master1 test]# cat docker-compose.yml version: '3.7'services:influx:image: tutum/influxdbports: - "8083:8083"- "8086:8086"volumes: - "/opt/influxdb:/var/lib/influxdb"deploy: replicas: 1placement: constraints: [node.role==manager]grafana: image: grafana/grafanaports: - "3000:3000"depends_on:- "influx"deploy: replicas: 1placement: constraints: [node.role==manager]cadvisor:image: google/cadvisorports:- "8080:8080"hostname: '{{.Node.Hostname}}'command: -logtostderr -docker_only -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influx:8086volumes: - /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rodepends_on: - influxdeploy: mode: globalvolumes: influx:driver: localgrafana: driver: local

3. 創(chuàng)建Swarm集群

# 在master1上執(zhí)行 [root@master1 test]# docker swarm init --advertise-addr 192.168.15.129 Swarm initialized: current node (xtooqr30af6fdcu51jzdv79wh) is now a manager.To add a worker to this swarm, run the following command:# 這里已經提示使用下面的命令在node節(jié)點上執(zhí)行就可以加入集群(前提docker服務一定是啟動的)docker swarm join --token SWMTKN-1-3yyjydabd8v340kptius215s29rbsq8tviy00s08g6md1y25k2-81tp7lpv114a393g4wlgx4a30 192.168.15.129:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.# 在node1和node2上執(zhí)行 [root@node1 ~]# docker swarm join --token SWMTKN-1-3yyjydabd8v340kptius215s29rbsq8tviy00s08g6md1y25k2-81tp7lpv114a393g4wlgx4a30 192.168.15.129:2377 This node joined a swarm as a worker[root@node2 ~]# docker swarm join --token SWMTKN-1-3yyjydabd8v340kptius215s29rbsq8tviy00s08g6md1y25k2-81tp7lpv114a393g4wlgx4a30 192.168.15.129:2377 This node joined a swarm as a worker.# 在master1上查看集群主機 [root@master1 test]# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION xtooqr30af6fdcu51jzdv79wh * master1 Ready Active Leader 18.06.1-ce y24c6sfs3smv5sd5h7k66x8zv node1 Ready Active 18.06.1-ce k554xe59lcaeu1suaguvxdnel node2 Ready Active 18.06.1-ce

4. 創(chuàng)建集群容器

# 創(chuàng)建集群容器 [root@master1 test]# docker stack deploy -c docker-compose.yml swarm-monitor Creating network swarm-monitor_default Creating service swarm-monitor_cadvisor Creating service swarm-monitor_influx Creating service swarm-monitor_grafana# 查看創(chuàng)建的容器 [root@master1 test]# docker service ls ID NAME MODE REPLICAS IMAGE PORTS wn36f7be6i5a swarm-monitor_cadvisor global 3/3 google/cadvisor:latest *:8080->8080/tcp ufn3lqbhbww3 swarm-monitor_grafana replicated 1/1 grafana/grafana:latest *:3000->3000/tcp lf0z6dp1u8sn swarm-monitor_influx replicated 1/1 tutum/influxdb:latest *:8083->8083/tcp, *:8086->8086/tcp# 查看容器的服務 [root@master1 test]# docker service ps swarm-monitor_cadvisor ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS vy1kqg5u8x3f swarm-monitor_cadvisor.k554xe59lcaeu1suaguvxdnel google/cadvisor:latest node2 Running Running about a minute ago a08b5bysra3d swarm-monitor_cadvisor.y24c6sfs3smv5sd5h7k66x8zv google/cadvisor:latest node1 Running Running about a minute ago kkca4kyojgr2 swarm-monitor_cadvisor.xtooqr30af6fdcu51jzdv79wh google/cadvisor:latest master1 Running Running 59 seconds ago [root@master1 test]# docker service ps swarm-monitor_grafana ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS klyjl7rxzmoz swarm-monitor_grafana.1 grafana/grafana:latest master1 Running Running about a minute ago [root@master1 test]# docker service ps swarm-monitor_influx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS pan5yvwq7b79 swarm-monitor_influx.1 tutum/influxdb:latest master1 Running Running about a minute ago

5. 訪問web測試
1) 訪問influxdb并創(chuàng)建數(shù)據庫
登錄InfluxDB的8083端口,并添加數(shù)據庫
登錄URL:http://192.168.15.129:8083

2) 訪問cadvisor
登錄URL:http://192.168.15.129:8080
登錄數(shù)據庫查看有沒有把采集的數(shù)據寫入

?

3) 訪問grafana并配置
登錄URL:http://192.168.15.129:3000
默認用戶名:admin
默認密碼:admin
溫馨提示:
首次登錄會提示修改密碼才可以登錄,我這里修改密碼為admin

這個動圖比較長 主要是對grafana的配置操作,注意里面的alpine_test容器不是和集群一塊創(chuàng)建的是我單獨創(chuàng)建的  

做到以上的效果,說明已經部署成功了,具體的配置方案就是因需求而異了

轉載于:https://www.cnblogs.com/zhujingzhi/p/9844558.html

總結

以上是生活随笔為你收集整理的cAdvisor+InfluxDB+Grafana 监控Docker的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。