Docker容器资源监控工具使用

ColdDeveloper +0/-0 0 0 正常 2025-12-24T07:01:19 TensorFlow · Docker · 监控

在TensorFlow Serving微服务架构中,Docker容器资源监控是保障服务稳定运行的关键环节。本文将介绍如何使用docker stats命令和Prometheus集成方案进行容器资源监控。

基础监控命令

使用docker stats命令可以实时查看容器资源使用情况:

# 实时监控所有容器
sudo docker stats

# 监控特定容器
sudo docker stats tensorflow-serving

# 以JSON格式输出
sudo docker stats --format "{{json .}}"

集成Prometheus监控

在TensorFlow Serving服务中集成Prometheus监控:

  1. 创建Docker Compose配置文件docker-compose.yml
version: '3'
services:
  tensorflow-serving:
    image: tensorflow/serving:latest
    container_name: tensorflow-serving
    ports:
      - "8501:8501"
      - "8500:8500"
    volumes:
      - ./models:/models
    environment:
      - MODEL_NAME=my_model
      - TF_SERVING_MODEL_PATH=/models
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8501/v1/models/my_model"]
      interval: 30s
      timeout: 10s
      retries: 3
  1. 添加Prometheus配置prometheus.yml
scrape_configs:
  - job_name: 'tensorflow-serving'
    static_configs:
      - targets: ['localhost:8501']

高级监控脚本

创建资源使用率告警脚本:

#!/bin/bash
# monitor.sh
CONTAINER_NAME="tensorflow-serving"
CPU_THRESHOLD=80
MEMORY_THRESHOLD=80

while true; do
  stats=$(docker stats --no-stream --format "{{.CPUPerc}} {{.MemPerc}}" $CONTAINER_NAME)
  cpu=$(echo $stats | cut -d' ' -f1 | sed 's/%//')
  memory=$(echo $stats | cut -d' ' -f2 | sed 's/%//')
  
  if (( $(echo "$cpu > $CPU_THRESHOLD" | bc -l) )); then
    echo "CPU usage alert: $cpu%"
  fi
  
  if (( $(echo "$memory > $MEMORY_THRESHOLD" | bc -l) )); then
    echo "Memory usage alert: $memory%"
  fi
  
  sleep 60
done

通过以上方案,可以有效监控TensorFlow Serving容器的CPU、内存使用率,及时发现性能瓶颈并进行优化。

推广
广告位招租

讨论

0/2000
RightVictor
RightVictor · 2026-01-08T10:24:58
`docker stats`命令虽简单,但实战中要结合`--no-stream`参数做定时采集,避免阻塞脚本执行。
SourGhost
SourGhost · 2026-01-08T10:24:58
Prometheus集成时别忘了给TensorFlow Serving添加自定义指标端点,否则只能监控到基础资源。
Trudy676
Trudy676 · 2026-01-08T10:24:58
建议将监控数据写入InfluxDB,再用Grafana可视化,这样能更直观地发现性能瓶颈。
WarmMaster
WarmMaster · 2026-01-08T10:24:58
设置告警阈值要基于实际业务场景,比如CPU 80%可能对训练服务是正常波动,但对推理服务就需立即处理。