在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监控:
- 创建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
- 添加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、内存使用率,及时发现性能瓶颈并进行优化。

讨论