Docker容器資源監(jiān)控的終極指南
核心痛點(diǎn)
容器化應(yīng)用突發(fā)高負(fù)載、內(nèi)存泄漏等問(wèn)題時(shí)常困擾運(yùn)維團(tuán)隊(duì)。掌握以下監(jiān)控手段,5分鐘內(nèi)精準(zhǔn)定位資源瓶頸:
一、原生監(jiān)控三板斧
1. 實(shí)時(shí)資源儀表盤(pán):docker stats
docker stats --no-stream [容器名]
輸出解讀
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS nginx 0.12% 35.8MiB / 1.944GiB 1.8% 1.2kB / 0B 0B / 0B 3 mysql 45.7% 1.2GiB / 2GiB 60.0% 15.4MB/3.2MB 2.1GB/0B 28
關(guān)鍵字段:
- CPU%:?jiǎn)魏藵M(mǎn)載=100%,四核滿(mǎn)載=400%
- MEM USAGE/LIMIT:當(dāng)使用量接近Limit需警惕OOM
- PIDS:進(jìn)程數(shù)突增預(yù)示程序異常
2. 進(jìn)程級(jí)洞察:docker top
docker top mysql_container -o pid,ppid,user,cmd,%cpu,%mem
輸出示例
PID PPID USER CMD CPU% MEM% 6723 6718 mysql mysqld 24.3 18.7 6789 6723 mysql mysqld_safe 0.2 0.5
3. 磁盤(pán)空間監(jiān)控
docker system df -v
輸出分析:
TYPE ACTIVE RECLAIMABLE Images 5 1.2GB (35%) Containers 8 350MB (22%) Volumes 3 800MB (61%)
二、企業(yè)級(jí)監(jiān)控方案
1. cAdvisor + Prometheus + Grafana 黃金組合
部署架構(gòu):
快速部署
# 啟動(dòng)cAdvisor docker run -d \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --publish=8080:8080 \ --name=cadvisor \ google/cadvisor:v0.47.0 # Prometheus配置示例 scrape_configs: - job_name: cadvisor static_configs: - targets: ['cadvisor:8080']
2. 關(guān)鍵監(jiān)控指標(biāo)
指標(biāo)類(lèi)型 | PromQL示例 | 告警閾值 |
---|---|---|
CPU使用率 | rate(container_cpu_usage_seconds_total[5m]) | >75%持續(xù)5分鐘 |
內(nèi)存使用量 | container_memory_working_set_bytes | >90% Limit |
網(wǎng)絡(luò)丟包率 | container_network_transmit_packets_dropped_total | >1% |
存儲(chǔ)空間 | container_fs_usage_bytes | >85% |
三、場(chǎng)景化診斷技巧
1. CPU異常飆升排查
診斷步驟:
2. 內(nèi)存泄漏定位
# 監(jiān)控RSS內(nèi)存增長(zhǎng) watch -n 5 "docker stats --no-stream --format '{{.Name}} {{.MemUsage}}'" # 生成內(nèi)存快照(Java示例) docker exec my_app jcmd 1 GC.heap_dump /tmp/dump.hprof
3. 網(wǎng)絡(luò)瓶頸分析
# 查看容器網(wǎng)絡(luò)接口 docker exec -it nginx ip addr show eth0 # 抓取容器網(wǎng)絡(luò)包 docker run --net container:nginx -it nicolaka/netshoot tcpdump -i eth0
四、監(jiān)控避坑指南
1. 指標(biāo)認(rèn)知誤區(qū)
指標(biāo) | 真實(shí)含義 | 常見(jiàn)誤判 |
---|---|---|
CPU% | 占滿(mǎn)單核=100% | 誤以為總CPU率 |
MEM USAGE | 包含Page Cache | 高估實(shí)際用量 |
MEM LIMIT | 不設(shè)置則默認(rèn)主機(jī)內(nèi)存 | 突發(fā)OOM |
2. 生產(chǎn)環(huán)境鐵律
強(qiáng)制設(shè)置資源限制:
docker run -d --cpus=2 --memory=1g --memory-swap=0 nginx
啟用實(shí)時(shí)監(jiān)控告警:
# Prometheus Alertmanager配置示例 - alert: HighMemoryUsage expr: container_memory_usage_bytes / container_spec_memory_limit_bytes > 0.9 for: 5m
五、免費(fèi)監(jiān)控工具推薦
Lens IDE:K8s容器實(shí)時(shí)監(jiān)控(含Docker)
!不能放圖
NetData:輕量級(jí)主機(jī)監(jiān)控
docker run -d --cap-add SYS_PTRACE \ -p 19999:19999 \ netdata/netdata
Dozzle:實(shí)時(shí)日志儀表盤(pán)
docker run -d --volume=/var/run/docker.sock:/var/run/docker.sock \ -p 8080:8080 \ amir20/dozzle
終極建議:
生產(chǎn)環(huán)境務(wù)必配置--memory和--cpus限制,配合Prometheus+Grafana實(shí)現(xiàn):
- 資源使用率歷史趨勢(shì)分析
- 自動(dòng)觸發(fā)水平擴(kuò)容(HPA)
- 生成季度容量規(guī)劃報(bào)告
通過(guò)docker stats快速響應(yīng)突發(fā)問(wèn)題,結(jié)合APM工具深入診斷應(yīng)用層性能,構(gòu)建完整監(jiān)控鏈條。
以上就是Docker容器資源監(jiān)控的終極指南的詳細(xì)內(nèi)容,更多關(guān)于Docker容器資源監(jiān)控的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
通過(guò)Docker安裝啟動(dòng)DB2在Spring?Boot整合DB2的方法
DB2是IBM的一款優(yōu)秀的關(guān)系型數(shù)據(jù)庫(kù),這篇文章主要介紹了通過(guò)Docker啟動(dòng)DB2,并在Spring?Boot整合DB2,需要的朋友可以參考下2023-01-01docker 安裝部署 Prometheus 與grafana的詳細(xì)過(guò)程
本文給大家詳細(xì)介紹了如何在CentOS 7上使用Docker和Docker Compose安裝和配置Prometheus和Grafana,并展示了如何進(jìn)行基本的監(jiān)控配置和數(shù)據(jù)可視化,感興趣的朋友跟隨小編一起看看吧2024-12-12基于Docker結(jié)合Canal實(shí)現(xiàn)MySQL實(shí)時(shí)增量數(shù)據(jù)傳輸功能
這篇文章主要介紹了基于Docker結(jié)合Canal實(shí)現(xiàn)MySQL實(shí)時(shí)增量數(shù)據(jù)傳輸功能,本文給圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07如何在 Ubuntu 下通過(guò) Docker 部署 Caddy 
本文介紹了如何在Ubuntu系統(tǒng)下通過(guò)Docker部署Caddy服務(wù)器,首先安裝Docker,然后啟動(dòng)Docker服務(wù)并設(shè)置為開(kāi)機(jī)自啟,接著拉取Caddy鏡像,并創(chuàng)建一個(gè)Caddyfile配置文件,使用命令運(yùn)行Caddy容器,并將本地的Caddyfile掛載到容器內(nèi),感興趣的朋友跟隨小編一起看看吧2025-03-03