Prometheus監控Docker Swarm集群(一)
cAdvisor簡介
為了解決容器的監控問題,Google開發了一款容器監控工具cAdvisor(Container Advisor),它為容器用戶提供了對其運行容器的資源使用和性能特征的直觀展示。 它是一個運行守護程序,用於收集,聚合,處理和導出有關正在運行的容器的信息。
cAdvisor可以對節點機器上的資源及容器進行實時監控和性能數據采集,包括CPU、內存、網絡及文件系統使用情況。
cAdvisor使用go語言開發,如果想了解更多請訪問其官方github
安裝cAdvisor
cAdvisor
有兩種方法來運行,一種是以二進制可執行文件安裝運行,配置 systemd
來管理,另一種是以 Docker
容器運行,使用docker-compose來管理,在這里我們只講docker方式部署與管理方法。
我們可以通過以下命令來在實驗環境的虛擬機運行cAdvisor容器:
Docker方式啟動
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=18080:18080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
以上的啟動方式對於管理來說稍顯繁瑣,為了方便管理,我們使用docker-compose來管理
安裝docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
mkdir -p /data/docker-monitor/
docker-compose文件
cat > docker-compose.yml <<EOF
version: '3.2'
volumes:
prometheus_data: {}
grafana_data: {}
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
depends_on:
- cadvisor
cadvisor:
image: google/cadvisor:latest
container_name: cadvisor
ports:
- 8080:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
depends_on:
- redis
redis:
image: redis:latest
container_name: redis
ports:
- 6379:6379
EOF
# Prometheus.yml文件
cat > prometheus.yml <<EOF
global:
scrape_interval: 15s # 每15秒抓取一次數據,默認值為1分鍾
evaluation_interval: 15s # 每15秒檢測一次可用性,默認值為1分鍾
scrape_timeout: 60s # 抓取的超時時間
# Alertmanager
alerting:
alertmanagers:
- static_configs:
#- targets: ['127.0.0.1:9093']
# 抓取配置配置
scrape_configs:
- job_name: 'cadvisor'
scrape_interval: 10s
static_configs:
- targets: ['localhost:8080']
labels:
instance: 'cadvisor-server'
alias: 'cadvisor'
EOF
# 啟動
docker-compose up -d
docker會自動去pull images,需要等一會,等待啟動完成后,我們直接可以訪問 http://192.168.1.220:8080
以上是我們為了大家能了解docker是如何監控實現的方法的,現在我們進入docker監控具體環節,GitHub上已經有了已經配置好的開源,直接拿來用即可。
git clone https://github.com/stefanprodan/dockprom.git
ADMIN_USER=admin ADMIN_PASSWORD=admin docker-compose up -d
先決條件:
- Docker Engine >= 1.13
- Docker Compose >= 1.11
Containers:
- Prometheus (metrics database) http://
:9090 - Prometheus-Pushgateway (push acceptor for ephemeral and batch jobs) http://
:9091 - AlertManager (alerts management) http://
:9093 - Grafana (visualize metrics) http://
:3000 - NodeExporter (host metrics collector)
- cAdvisor (containers metrics collector)
- Caddy (reverse proxy and basic auth provider for prometheus and alertmanager)
啟動完成以后,我們直接訪問http://192.168.1.220:3000端口,使用初始化的賬號密碼,admin:admin進入,此時會提示你修改密碼,修改成你需要的密碼即可。
redis:
image: redis:latest
container_name: redis
restart: unless-stopped
expose:
- 6379
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
# 重啟
docker-compose up -d
這時訪問CAdvisor,會發現container中已經有了redis這個容器了。