Docker之容器監控部署

一、搭建

1. 創建虛擬網卡(可選)

爲了網絡環境隔離,同時把後期創建的cAdvisor+InfluxDB+Grafana這三個容器都加入自己定義的網絡,便於理解和管理

:容器啓動可以設置使用改網卡 即使用 --net 網卡名指定 若不指定則默認使用docker主機默認網卡docker0

//創建一個名爲 zcoder-monitor 的docker網絡環境
# docker network create zcoder-monitor
6e7653302309a5b80917334104250bdfc9d3a03c92f1af3d9089bf3d0e59db78

//查看 zcoder-monitor 網絡環境的信息
# docker network inspect zcoder-monitor
[
    {
        "Name": "zcoder-monitor",
        "Id": "6e7653302309a5b80917334104250bdfc9d3a03c92f1af3d9089bf3d0e59db78",
        "Created": "2019-09-26T00:26:25.88034987-04:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

2. 部署influxdb

influxdb中文文檔:https://jasper-zhang1.gitbooks.io/influxdb/content/  

InfluxDB是一個用於存儲和分析時間序列數據的開源數據庫。

主要特性有:

  • 內置HTTP接口,使用方便
  • 數據可以打標記,查讓查詢可以很靈活
  • 類SQL的查詢語句
  • 安裝管理很簡單,並且讀寫數據很高效
  • 能夠實時查詢,數據在寫入時被索引後就能夠被立即查出
  • ……
# docker run -d --net zcoder-monitor -p 8083:8083 -p 8086:8086 --expose 8011 --expose 8012 -e PRE_CREATE_DB=cadvisor --name influxsrv tutum/influxdb:0.8.8
9cf2bcc3131722619a176be2c47f111147fbcfabcfc6484ad80fc631fa40091d

docker -p 宿主機端口:容器端口   

訪問 http://docker主機的ip:映射端口8083     

// 創建管理員角色 cadvisor 密碼 123456 以連接cadvisor數據庫
CREATE USER "cadvisor" WITH PASSWORD '123456' WITH ALL PRIVILEGES 

// 創建數據庫 cadvisor 用於接收cadvisor的數據
CREATE DATABASE "cadvisor"

3. 部署cadvisor

# docker run -d \
  --privileged=true --net zcoder-monitor \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8013:8080 \
  --link=influxsrv:influxsrv  \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:0.14.0 \
  -storage_driver=influxdb \
  -storage_driver_db=cadvisor \
  -storage_driver_host=influxsrv:8086

//若啓動失敗,啓動cAdvisor報錯:/sys/fs/cgroup/cpuacct,cpu: no such file or directory
//則執行以下命令
# sudo mount -o remount,rw '/sys/fs/cgroup'
# sudo ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu

參數解釋:

--privileged=true           :設置掛載目錄權限爲最大 否則掛載出錯
--net docker-monitor        :設置加入docker-monitor網絡
--volume=/:/rootfs:ro       :將容器/rootfs目錄掛載到docker /
--volume=/var/run:/var/run:rw :將容器/var/run 掛載到docker /var/run
--volume=/sys:/sys:ro         :rw表示讀寫  ro表示只讀
--volume=/var/lib/docker:/var/lib/docker:ro 
--volume=/sys/fs/cgroup:/sys/fs/cgroup:ro 
-p 8013:8080                  :設置cadvisor端口映射  由於8080端口被使用  我分配8013
--detach=true                 :是否後臺運行容器服務
--name=cadvisor google/cadvisor :容器服務名 爲cadvisor  從docker默認倉庫 下載google/cadvisor鏡像
-storage_driver=influxdb        :綁定存儲驅動 爲 influxdb
-storage_driver_db=cadvisor     :數據庫爲  cadvisor  請對應
-storage_driver_host=influxdb:8086 :綁定數據庫的管理地址  容器名:容器端口

訪問 http://docker主機的ip:映射端口8013     本來爲8080 修改爲8013

初始登錄名:root  密碼:root

4. 部署grafana

grafana官方文檔 https://grafana.com/docs/

Grafana允許查詢,可視化,警報和了解指標

可視化:從熱圖到直方圖,圖形到地理地圖,Grafana有大量可視化選項,可幫助客戶精美地理解數據。

警報:在數據中時,在有意義的地方無縫定義警報。可視地定義閾值,並通過Slack,PagerDuty等獲得通知。

開源:由一個充滿活力的社區提供支持,可輕鬆安裝在任何平臺上。

延伸:在官方庫中有數百個儀表盤和插件。

# docker run -d -p 3000:3000 \
  --name grafana --net zcoder-monitor \
  -e HTTP_USER=admin \
  -e HTTP_PASS=admin \
  -e INFLUXDB_HOST=localhost \
  -e INFLUXDB_PORT=8086 \
  -e INFLUXDB_NAME=cadvisor \
  -e INFLUXDB_USER=root \
  -e INFLUXDB_PASS=123456 \
  --link=influxsrv:influxsrv  \
  grafana/grafana:2.0.2

訪問 http://docker主機的ip:映射端口3000  默認帳號admin admin

二、簡單使用Grafana

 

備註:數據源有多種,influxdbd對實時時序數據有良好的存儲方案。你也可以隨業務場景切換安裝其他數據源

點擊圖標回到首頁,添加儀表盤

 

相關資料:

How to setup Docker Monitoring

docker:快速構建容器監控系統cAdvisor+InfluxDB+Grafana

docker監控方案的最佳實踐(cadvisor+influxdb+grafana)

Docker monitoring with cAdvisor, InfluxDB and Grafana

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章