在TensorFlow Serving容器化部署中,日志收集是保障服务可观测性的关键环节。本文将对比两种主流日志收集方案:基于Docker日志驱动和基于Filebeat的集中式收集。
方案一:Docker原生日志驱动
Docker默认使用json-file驱动记录容器日志,配置简单但存在日志轮转问题。通过以下docker run命令启用日志轮转:
docker run --log-driver=json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
tensorflow/serving:latest
方案二:Filebeat集中收集
为解决Docker日志轮转问题,推荐使用Filebeat。首先配置TensorFlow Serving容器挂载日志目录:
version: '3'
services:
tensorflow-serving:
image: tensorflow/serving:latest
volumes:
- ./logs:/var/log/tensorflow-serving
logging:
driver: "none"
然后部署Filebeat收集器:
filebeat.inputs:
- type: log
paths:
- /var/log/tensorflow-serving/*.log
fields:
service: tensorflow-serving
负载均衡配置
结合Nginx负载均衡,将日志收集器统一接入:
upstream tensorflow_serving {
server 172.16.0.10:8080;
server 172.16.0.11:8080;
}
通过Filebeat收集的日志可直接发送到ELK栈进行分析,实现完整的可观测性方案。

讨论