Prometheus監控Docker Swarm集群(一)


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這個容器了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM