Cadvisor是Google用來監測單節點的資源信息的監控工具。它的資源消耗也比較低。但是,它有它的侷限性,它只能監控一個Docker主機。因此,如果你是多節點的話,那就比較麻煩了,你得在所有的主機上都安裝一個Cadvisor,肯定特別不方便。值得注意的是,如果你使用的是Kubernetes,你可以使用heapster來監控多節點集羣。Google的Kubernetes中也缺省地將其作爲單節點的資源監控工具,各個節點缺省會被安裝上Cadvisor。在免費的世界裏,Cadvisor作爲一個很不錯的工具,越來越多的引起很多人過渡性的關注。以下我們將詳細介紹如何創建我們的Docker監控方案。
cAdvisor: Google開源的用於監控基礎設施應用的工具,它是一個強大的監控工具,不需要任何配置就可以通過運行在Docker主機上的容器來監控Docker容器,而且可以監控Docker主機。更多詳細操作和配置選項可以查看Github上的cAdvisor項目文檔。
influxDB: 它是一個分佈式時間序列數據庫。cAdvisor僅僅顯示實時信息,但是不存儲監視數據。因此,我們需要提供時序數據庫用於存儲cAdvisor組件所提供的監控信息,以便顯示除實時信息之外的時序數據。
Grafana: Grafana可視化展示平臺允許我們可視化地展示監控信息。它允許我們對influxDB進行查詢,並通過強大的圖表功能進行可視化展示。
【influxdb】
1. 概念
database 數據庫
measurement 數據庫中的表
points 表裏面的一行數據
Point 由時間戳(time)、數據(field)、標籤(tags)組成。
series 所有在數據庫中的數據,都需要通過圖表來展示,而這個series表示這個表裏面的數據,可以在圖表上畫成幾條線:通過tags排列組合算出來。具體可以通過SHOW SERIES FROM "表名" 進行查詢。
8083: Web admin管理服務的端口, http://localhost:8083
8086: HTTP API的端口
8088: 集羣端口(目前還不是很清楚, 配置在全局的bind-address,默認不配置就是開啓的)
2. 常用命令
show databases;
create database "cadvisor";
SHOW USERS
# 創建用戶
CREATE USER "cadvisor" WITH PASSWORD '123456' WITH ALL PRIVILEGES
grant all on mydb to user
show grants for user
DROP USER "cadvisor"
auth
use cadvisor;
SHOW measurements
# influxdb下的表在插入數據庫的時候自動會創建
INSERT t_user,host=serverA,region=us_west value=0.64
SELECT * FROM t_user ORDER BY time DESC LIMIT 3
DROP MEASUREMENT "t_user" //刪除表
一般情況下基於時間序列的point數據不會進行直接刪除操作,一般我們平時只關心當前數據,歷史數據不需要一直保存,不然會佔用太多空間。這裏可以配置數據保存策略(Retention Policies),當數據超過了指定的時間之後,就會被刪除。
SHOW RETENTION POLICIES ON "cadvisor" //查看當前數據庫的Retention Policies
CREATE RETENTION POLICY "rp_name" ON "cadvisor" DURATION 30d REPLICATION 1 DEFAULT //創建新的Retention Policies
#註釋如下:
rp_name:策略名
db_name:具體的數據庫名
30d:保存30天,30天之前的數據將被刪除
它具有各種時間參數,比如:h(小時),w(星期)
REPLICATION 1:副本個數,這裏填1就可以了
DEFAULT 設爲默認的策略
也可以通過如下命令修改和刪策略:
ALTER RETENTION POLICY "rp_name" ON "cadvisor" DURATION 3w DEFAULT
DROP RETENTION POLICY "rp_name" ON "cadvisor"
3. 安全
influxdb類似與mongodb,默認是不開啓用戶認證的,可以修改其 conf文件,配置http塊內容如下:
[http]
enable = true
bind-address = ":8086"
auth-enabled = true # 開啓認證
4. web管理
默認情況下未開啓web管理功能。可以通過修改influxdb.conf文件中admin項的配置開啓web管理界面,具體如下:
[admin]
# Determines whether the admin service is enabled.
enabled = true
# The default bind address used by the admin service.
bind-address = ":8083"
注意 :
1. 0.13以上版本的image默認不支持web admin,測試中設置了也沒用,所以暫時用0.12版
2. tutum版的設置不了auth
3. web admin只能創建用戶,查詢,不能增刪改數據,需登陸容器-->influx-->auth,再進行數據操作
【cadvisor】
1. 每個節點機都要啓動,需配置對應的數據源,配置好後,在對應的influxdb database中SHOW MEASUREMENTS可看到load_average等表
【grafana】
1. 可在.ini中配置相關參數,暫時未使用grafana.ini等配置
2. 配置數據源dataSource
基本信息
Name:influxdb
Type:influxDB
Default: checked
Http settings
Url:http://mytest-influxdb:8086
Access:proxy
HTTP Auth
Basic Auth: checked
InfluxDB Details
Database:cadvisor
User:cadvisor
Password:123456
配置好後點擊 Save&Test