文檔來源
- 文檔來源:How to setup Docker Monitoring
- 由garyond翻譯、校正及整理
Docker監(jiān)控簡介
我們提供的Docker主機(jī)和容器越來越多,對(duì)Docker服務(wù)器和容器的監(jiān)控越來越必要。本文將引導(dǎo)你了解如何通過多個(gè)不同組件的配置和協(xié)作,以實(shí)現(xiàn)Docker監(jiān)控。
Docker監(jiān)控組件
首先, 我們假設(shè)在您的主機(jī)上已經(jīng)安裝、配置和運(yùn)行Docker Engine。請(qǐng)確保您可以通過Web瀏覽器在本地或者通過網(wǎng)絡(luò)IP連接到Docker主機(jī)。以下我們將詳細(xì)介紹如何創(chuàng)建我們的Docker監(jiān)控方案。
- cAdvisor: Google開源的用于監(jiān)控基礎(chǔ)設(shè)施應(yīng)用的工具,它是一個(gè)強(qiáng)大的監(jiān)控工具,不需要任何配置就可以通過運(yùn)行在Docker主機(jī)上的容器來監(jiān)控Docker容器,而且可以監(jiān)控Docker主機(jī)。更多詳細(xì)操作和配置選項(xiàng)可以查看Github上的cAdvisor項(xiàng)目文檔。
- influxDB: 它是一個(gè)分布式時(shí)間序列數(shù)據(jù)庫。cAdvisor僅僅顯示實(shí)時(shí)信息,但是不存儲(chǔ)監(jiān)視數(shù)據(jù)。因此,我們需要提供時(shí)序數(shù)據(jù)庫用于存儲(chǔ)cAdvisor組件所提供的監(jiān)控信息,以便顯示除實(shí)時(shí)信息之外的時(shí)序數(shù)據(jù)。
- Grafana: Grafana可視化展示平臺(tái)允許我們可視化地展示監(jiān)控信息。它允許我們對(duì)influxDB進(jìn)行查詢,并通過強(qiáng)大的圖表功能進(jìn)行可視化展示。
本文配置組件版本信息如下:
- InfluxDB: V 1.0.0
- cAdvisior: V 0.24.1
- Grafana: V 4.0.2
Docker監(jiān)控安裝與配置
下面,我們將根據(jù)上述的Docker監(jiān)控組件進(jìn)行安裝和配置,形成統(tǒng)一的Docker監(jiān)控平臺(tái)。
我們將首先先安裝influxDB, 以便于它能夠與cAdvisor進(jìn)行協(xié)作。
1. 安裝influxDB
下載influxDB鏡像
docker pull tutum/influxdb
運(yùn)行influxdb容器
docker run -d \
-p 8083:8083 \
-p 8086:8086 \
--expose 8090 \
--expose 8099 \
--name influxsrv \
tutum/influxdb
influxdb容器運(yùn)行成功后,通過Web瀏覽器訪問http://docker-host-ip:8083
訪問influxdb后臺(tái)管理,并登錄后臺(tái)管理系統(tǒng)(默認(rèn)用戶名:root, 默認(rèn)密碼:root
)。
2. 創(chuàng)建cAdvisor應(yīng)用數(shù)據(jù)庫
在登錄influxdb后臺(tái)數(shù)據(jù)庫管理平臺(tái)后, 創(chuàng)建cAdvisor
數(shù)據(jù)庫, 用于存儲(chǔ)cAdvisor應(yīng)用所獲取的實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)。在influxDB管理界面中的Querie s輸入框中創(chuàng)建數(shù)據(jù)庫和用戶:
# 創(chuàng)建數(shù)據(jù)庫
create database 'cadvisor';
# 創(chuàng)建用戶
CREATE USER 'cadvisor' WITH PASSWORD 'cadvisor'
# 用戶授權(quán)
grant all privileges on 'cadvisor' to 'cadvisor'
# 授予讀寫權(quán)限
grant WRITE on 'cadvisor' to 'cadvisor'
grant READ on 'cadvisor' to 'cadvisor'
3. 運(yùn)行cAdvisor應(yīng)用容器并與influxDB容器進(jìn)行互聯(lián)
啟動(dòng)cAdvisor容器
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
-p 8080:8080 \
--detach=true \
--link influxsrv:influxsrv \
--name=cadvisor \
google/cadvisor:latest \
-storage_driver=influxdb \
-storage_driver_db=cadvisor \
-storage_driver_host=influxsrv:8086
cAdvisor應(yīng)用容器啟動(dòng)成功后,通過Web瀏覽器訪問地址http://docker-host-ip:8080
,便可以查看cAdvisor監(jiān)控工具所收集到的Docker主機(jī)和容器的資源統(tǒng)計(jì)信息。
4. 運(yùn)行Grafana可視化平臺(tái)并與influxDB容器進(jìn)行互聯(lián)
docker run -d \
-p 3000:3000 \
-e INFLUXDB_HOST=localhost \
-e INFLUXDB_PORT=8086 \
-e INFLUXDB_NAME=cadvisor \
-e INFLUXDB_USER=root \
-e INFLUXDB_PASS=root \
--link influxsrv:influxsrv \
--name grafana \
grafana/grafana
5. 登錄Grafana管理平臺(tái)
通過Web瀏覽器訪問地址http://docker-host-ip:3000
登錄Grafana管理平臺(tái)。
- 用戶名:admin
- 密 碼:admin
6. 配置Grafana與influxDB數(shù)據(jù)庫連接
(1). 配置Granfana數(shù)據(jù)源
在Grafana管理平臺(tái)中,單擊“添加數(shù)據(jù)源”對(duì)數(shù)據(jù)源進(jìn)行配置。如下圖所示。
- 基本信息
Name:influxdb
Type:influxDB
Default: checked
- Http settings
Url:http://influxsrv:8086
Access:proxy
- HTTP Auth
Basic Auth: checked
- Basic Auth Details
User: admin
Password: admin
- InfluxDB Details
Database:cadvisor
User:cadvisor
Password:cadvisor
配置完成后, 我們已經(jīng)建立與influxDB的連接,下面我們將其進(jìn)行測(cè)試。
(2). 添加Dashboard
下面我們將使用Grafana配置我們的第一個(gè)Dashboard,并可視化來自cAdvisor的監(jiān)控?cái)?shù)據(jù)。
1). 點(diǎn)擊“Grafana”圖標(biāo), 打開Dashboard菜單,選擇新建Dashboard;
2). 在Dashboard面板中選擇相應(yīng)的組件并拖動(dòng)到相關(guān)的位置;
3). 點(diǎn)擊面板的標(biāo)題,會(huì)彈出相應(yīng)的選項(xiàng)"view"、"edit"、"Duplicates"、"share"和刪除按扭;
4). 選擇"edit"選項(xiàng),出現(xiàn)相應(yīng)的配置項(xiàng),在“Metrics”選項(xiàng)卡中配置相應(yīng)的數(shù)據(jù)表和數(shù)據(jù)源信息;
例如: 配置內(nèi)存使用率信息
在Metric選項(xiàng)卡中, 配置數(shù)據(jù)表來源為:SELECT mean("value") FROM "memory_usage" WHERE $timeFilter GROUP BY time(10s) fill(0)
, 配置數(shù)據(jù)源Panel Datasource為:cadvisor
;
在Axes選項(xiàng)卡中配置相關(guān)的顯示單位。
5). 配置完相關(guān)的選項(xiàng)后,點(diǎn)擊Dashboard導(dǎo)航欄的保存按鈕,便可完成Dashboard的配置。
至此, 所有配置步驟完成, 我們能夠看到Grafana顯示相關(guān)的監(jiān)控圖表信息。