寫在前面,目前這里僅僅完成了容器性能的監(jiān)控颂碘;如CPU异赫,MEM,DISK头岔,NET塔拳; 運(yùn)行在容器的中應(yīng)用的監(jiān)控還未涉及!
Docker監(jiān)控?cái)?shù)據(jù)來源
-
docker stats api
GET /containers/container_name/stats HTTP/1.1
-
cadvisor
其實(shí)是docker stats api的封裝峡竣,同時(shí)提供了web頁(yè)面查看靠抑,通過cadvisor獲取stats的APIGET /api/v1.2/docker/<container_name>
監(jiān)控框架
不同的監(jiān)控框架都會(huì)有各自要求的數(shù)據(jù)結(jié)構(gòu),在數(shù)據(jù)采集完成后澎胡,需要轉(zhuǎn)換成各自要求的數(shù)據(jù)結(jié)構(gòu)孕荠;
-
Zabbix
-
架構(gòu)圖
image -
接受的數(shù)據(jù)格式
key_name = value的形式,一次只能處理一個(gè)
-
Docker容器數(shù)據(jù)的采集方式
通過docker stats的API采集攻谁,自己處理數(shù)據(jù)
GET /containers/container_name/stats HTTP/1.1
-
-
Prometheus
-
架構(gòu)圖
image -
接受的數(shù)據(jù)格式
<metric name>{<label name>=<label value>, ...} example: api_http_requests_total{method="POST", handler="/messages"}
-
Docker容器數(shù)據(jù)的采集方式
CAdvisor暴露了一個(gè)HTTP接口,且格式為prometheus要求的格式:
image
-
- Open-Falcon
- 架構(gòu)圖
image
-
接受數(shù)據(jù)的格式
{ "CounterType": "GAUGE", "Endpoint": "open-falcon-test", #這是一個(gè)特殊的tags弯予,代表主機(jī)名 "Metric": "redis.keyspace_hit_ratio", "Step": 60, "TAGS": "port=6379", "Timestamp": 1449711164, "Value": 0.72131147540983609 }
-
Docker容器數(shù)據(jù)的采集方式
基于CAdvisor之上戚宦,將docker容器的數(shù)據(jù)轉(zhuǎn)換成了要求的格式,采集指標(biāo)如下:
Counters | Notes |
---|---|
cpu.busy | cpu使用情況百分比 |
cpu.user | 用戶態(tài)使用的CPU百分比 |
cpu.system | 內(nèi)核態(tài)使用的CPU百分比 |
cpu.core.busy | 每個(gè)cpu的使用情況 |
mem.memused.percent | 內(nèi)存使用百分比 |
mem.memused | 內(nèi)存使用原值 |
mem.memtotal | 內(nèi)存總量 |
mem.memused.hot | 內(nèi)存熱使用情況 |
disk.io.read_bytes | 磁盤io讀字節(jié)數(shù) |
disk.io.write_bytes | 磁盤io寫字節(jié)數(shù) |
net.if.in.bytes | 網(wǎng)絡(luò)io流入字節(jié)數(shù) |
net.if.in.packets | 網(wǎng)絡(luò)io流入包數(shù) |
net.if.in.errors | 網(wǎng)絡(luò)io流入出錯(cuò)數(shù) |
net.if.in.dropped | 網(wǎng)絡(luò)io流入丟棄數(shù) |
net.if.out.bytes | 網(wǎng)絡(luò)io流出字節(jié)數(shù) |
net.if.out.packets | 網(wǎng)絡(luò)io流出包數(shù) |
net.if.out.errors | 網(wǎng)絡(luò)io流出出錯(cuò)數(shù) |
net.if.out.dropped | 網(wǎng)絡(luò)io流出丟棄數(shù) |