容器監(jiān)控
在公司的時候,監(jiān)控類的還是接觸的比較多?;旧暇褪莋rafana + datasource(prometheus、pg、es) + 告警規(guī)則
下面簡單介紹一些監(jiān)控維度以及幾種數(shù)據(jù)源工具和grafana使用(全部以docker部署,方便學(xué)習(xí))
監(jiān)控維度
在主機上運?的容器是監(jiān)控的重中之重。作為應(yīng)?的直接載體,使?者需要對容器的各類信息進?實時監(jiān)控,以保證應(yīng)?的正常運?。Docker在底層使?了Linux內(nèi)核提供的資源機制——namespace和cgroups,以此來?持容器的運?。通過這些機制,我們可以很?便地獲取容器的各項監(jiān)控指標(biāo)。
- 容器的基本信息
- 容器的運?狀態(tài)
- 容器的?量信息
? 容器的基本信息包括容器的總數(shù)、ID、名稱、鏡像、啟動命令、端?等信息。容器監(jiān)控時可以依據(jù)容器的運?狀態(tài),即運?中、暫停、停?及異常退出,來統(tǒng)計各狀態(tài)的容器的數(shù)量,并實時反饋各個容器的運?狀態(tài)。容器的?量信息則是?戶最關(guān)?的,也是監(jiān)控中最為復(fù)雜的部分,它可以統(tǒng)計容器的CPU使?率、內(nèi)存使?量、塊設(shè)備I/O使?量、?絡(luò)使?情況等資源的使?情況
監(jiān)控命令
- docker ps 命令
通過使?docker ps 命令,可以查看當(dāng)前主機上的容器信息,包括容器ID、鏡像名、容器啟動執(zhí)?命令、創(chuàng)建時間、狀態(tài)、端?信息和容器名稱。
- docker images 命令
通過使?docker images 命令,可以查看當(dāng)前主機上的鏡像信息,包括鏡像所屬的庫、標(biāo)簽、ID、創(chuàng)建時間和實際??。該命令默認(rèn)只會列出所有頂層鏡像的信息,可以通過-a參數(shù)來查看所有中間層的鏡像信息
- docker stats命令
docker stats 命令是Docker1.5版本提供的命令,專??于容器狀態(tài)信息的統(tǒng)計,同時還有配套的API(GET /containers/(id)/stats),可供開發(fā)?員調(diào)?。使?該命令,可以實時監(jiān)控運?中的容器運?情況,包括CPU、內(nèi)存、塊設(shè)備I/O和?絡(luò)I/O,這些信息都會定期刷新以現(xiàn)實最新運?情況。
docker stats container_name_or_id
echo -e "GET /containers/cidemo/stats HTTP/1.0\r\n" | nc -U /var/run/docker.sock
者可以使?stats api 將容器的運?狀態(tài)信息傳遞到??構(gòu)建的應(yīng)?中,以實現(xiàn)容器的的系統(tǒng)監(jiān)控
- docker inspect 命令
通過使?docker inspect 命令,可以查看鏡像或容器的底層詳細(xì)信息,以此來了解鏡像或容器的完整構(gòu)建信息,包括基礎(chǔ)配置、主機配置、?絡(luò)設(shè)置、狀態(tài)信息等。同時,如果需要查看其他特定信息,可以通過-f參數(shù)來設(shè)定輸出格式。
docker inspect -f {{.NetworkSettings.IPAddress}} <容器名稱/ID>
- docker top 命令
通過使?docker top 命令,可以查看正在運?的容器中的進程的運?情況。該命令可以使?戶在沒有通過/bin/bash終端與容器交互式,幫助?戶查看容器內(nèi)的進程信息,包括進程號、?進程號、命令等。
- docker port
docker port 命令的?途較為特定化,?于查看容器與主機之間的端?映射關(guān)系。
常用監(jiān)控工具
cAdvisor
cAdvisor對Node機器上的資源及容器進?實時監(jiān)控和性能數(shù)據(jù)采集,包括CPU使?情況、內(nèi)存使?情況、?絡(luò)吞吐量及?件系統(tǒng)使?情況。
源碼
cadvisor獲取的典型監(jiān)控指標(biāo)
指標(biāo)名稱 類型 含義
container_cpu_load_average_10s gauge 過去10秒容器CPU的平均負(fù)
載
container_cpu_usage_seconds_total counter 容器在每個CPU內(nèi)核上的累
積占?時間 (單位:秒)
container_cpu_system_seconds_total counter System CPU累積占?時間
(單位:秒)
container_cpu_user_seconds_total counter User CPU累積占?時間
(單位:秒)
container_fs_usage_bytes gauge 容器中?件系統(tǒng)的使?量
(單位:字節(jié))
container_fs_limit_bytes gauge 容器可以使?的?件系統(tǒng)總
量(單位:字節(jié))
container_fs_reads_bytes_total counter 容器累積讀取數(shù)據(jù)的總量
(單位:字節(jié))
container_fs_writes_bytes_total counter 容器累積寫?數(shù)據(jù)的總量
(單位:字節(jié))
container_memory_max_usage_bytes gauge 容器的最?內(nèi)存使?量(單
位:字節(jié))
container_memory_usage_bytes gauge 容器當(dāng)前的內(nèi)存使?量(單
位:字節(jié)
container_spec_memory_limit_bytes gauge 容器的內(nèi)存使?量限制
machine_memory_bytes gauge 當(dāng)前主機的內(nèi)存總量
container_network_receive_bytes_total counter 容器?絡(luò)累積接收數(shù)據(jù)總量
(單位:字節(jié))
container_network_transmit_bytes_total counter 容器?絡(luò)累積傳輸數(shù)據(jù)總量
(單位:字節(jié))
cAdvisor 對外暴露的Prometheus容器指標(biāo)
docker啟動cAdvisor
# 安裝cAdvisor 來收集容器信息 所有節(jié)點運?以下命令來安裝cAdvisor
docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8081:8080 \
--detach=true \
--name=cadvisor \
--privileged=true \
-v "/etc/localtime:/etc/localtime" \
google/cadvisor:latest
Node Exporter
Node Exporter 是prometheus官?提供的agent,是非常常用的采集agent。 同時可以在代碼中自定義實現(xiàn)exporter,將指標(biāo)暴露給prometheus采集
1.源碼地址
2.默認(rèn)啟?指標(biāo)
3.默認(rèn)禁用指標(biāo)
安裝Node Exporter
# 安裝Node Exporter 來收集硬件信息
docker run -d -p 9100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
-v "/etc/localtime:/etc/localtime" \
--net=bridge \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)
($|/)"
Prometheus
?個系統(tǒng)和服務(wù)監(jiān)控系統(tǒng)。它以給定的時間間隔從配置的?標(biāo)收集度量,評估規(guī)則表達式,顯示結(jié)果,并在觀察到指定條件時觸發(fā)警報。
- 多維數(shù)據(jù)模型(由度量名稱和鍵/值維度集定義的時間序列)
- PromQL提供?種強??靈活的查詢語?
- 不依賴分布式存儲;單服務(wù)器節(jié)點是?治的
- ?種?于時間序列采集的HTTP pull模型
- 通過批處理作業(yè)的中間?關(guān)?持推送時間序列
- 通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置發(fā)現(xiàn)?標(biāo)
- 多種圖形和儀表板?持模式
源碼地址
安裝
# 拉取鏡像
docker pull prom/prometheus
# 查看docker的ip地址
ifconfig | grep -A 1 docker0
# 創(chuàng)建?錄/opt/prometheus
mkdir -p /opt/prometheus
# 新增prometheus.yml?件
vim /opt/prometheus/prometheus.yml
# prometheus.yml的內(nèi)容如下
# 其中targets中的?址是對應(yīng)服務(wù)器所在的地址
global:
scrape_interval: 20s
evaluation_interval: 20s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.28.12:9090']
- job_name: 'linux'
static_configs:
- targets: ['192.168.28.12:9100']
- job_name: 'cadvisor'
static_configs:
- targets: ['192.168.28.12:8081']
# 創(chuàng)建prometheus容器
docker run -itd --name prometheus -p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /etc/localtime:/etc/localtime:ro \
prom/prometheus
grafana
?個開源的監(jiān)控系統(tǒng)Web UI ,?持多種數(shù)據(jù)源。?持?定義看板
可以去官網(wǎng)導(dǎo)入各種模板,并配置數(shù)據(jù)源配合使用
官網(wǎng)文章來源:http://www.zghlxwxcb.cn/news/detail-821010.html
docker run -d -i -p 3000:3000 \
-v "/etc/localtime:/etc/localtime" \
-e "GF_SERVER_ROOT_URL=http://grafana.server.name" \
-e "GF_SECURITY_ADMIN_PASSWORD=admin123" \
--net=bridge \
grafana/grafana
訪問對應(yīng)主機3000端口即可,admin賬戶密碼設(shè)置為admin123文章來源地址http://www.zghlxwxcb.cn/news/detail-821010.html
到了這里,關(guān)于docker——監(jiān)控以及常用監(jiān)控工具介紹和docker部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!