tensorflow(10)使用Prometheus对tensorflow/serving进行服务监控
在之前的文章tensorflow(6)利用tensorflow/serving实现模型部署及预测中,笔者介绍了如何使用tensorflow/serving对单模型、多模型、不同版本模型进行部署及预测。本文将在此基础上,使用Prometheus对tensorflow/serving进行服务监控。
网上虽然有很多关于tensorflow/serving的服务监控的配置说明,但大多只是简单介绍,并没有给出具体的使用方式。本文将给出一个详细使用例子。
在此,我们只需要了解Prometheus是一款监控软件即可。
项目结构如下:
tensorflow_serving_examples
├── ckpt_models
├── docker-compose.yml
├── multi_ckpt_2_pb.py
├── multi_model.py
├── multi_tf_serving.py
├── pb_models
│ ├── add
│ │ └── 1
│ │ ├── saved_model.pb
│ │ └── variables
│ │ ├── variables.data-00000-of-00001
│ │ └── variables.index
│ ├── divide
│ │ └── 1
│ │ ├── saved_model.pb
│ │ └── variables
│ │ ├── variables.data-00000-of-00001
│ │ └── variables.index
│ ├── models.config
│ ├── monitoring_config.txt
│ ├── multiply
│ │ └── 1
│ │ ├── saved_model.pb
│ │ └── variables
│ │ ├── variables.data-00000-of-00001
│ │ └── variables.index
│ ├── prometheus.yml
│ └── subtract
│ └── 1
│ ├── saved_model.pb
│ └── variables
│ ├── variables.data-00000-of-00001
│ └── variables.index
运行multi_model.py
即可生成加法、减法、乘法、除法模型,并保存为ckpt格式。再运行multi_ckpt_2_pb.py
将ckpt格式的模型转化为pb格式的模型,便于tensorflow/serving部署。
使用tensorflow/serving部署多模型时需要配置models.config,该文件位于pb_models文件夹下,内容为:
model_config_list {
config {
name: "add"
base_path: "/models/add"
model_platform: "tensorflow"
}
config {
name: "subtract"
base_path: "/models/subtract"
model_platform: "tensorflow"
}
config {
name: "multiply"
base_path: "/models/multiply"
model_platform: "tensorflow"
}
config {
name: "divide"
base_path: "/models/divide"
model_platform: "tensorflow"
}
}
如果需要对tensorflow/serving进行服务监控,则需要配置monitoring_config.txt
,内容如下:
prometheus_config {
enable: true,
path: "/monitoring/prometheus/metrics"
}
pb_models文件夹下prometheus.yml
为Prometheus的配置文件,内容如下:
global:
scrape_interval: 15s
evaluation_interval: 15s
external_labels:
monitor: 'tf-serving-monitor'
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
metrics_path: /monitoring/prometheus/metrics
static_configs:
- targets: ['model_serving:8501']
该配置文件用于监控model_serving:8501这个路径下的/monitoring/prometheus/metrics,爬取时间间隔为5s。
最后,我们再使用Docker-Compose启动服务即可,docker-compose.yml
内容如下:
version: "3.4"
services:
model_serving:
image: tensorflow/serving:1.14.0
container_name: model_serving
ports:
- "8511:8501"
restart: always
networks:
- tf_net
volumes:
- ./pb_models:/models
command: --model_config_file=/models/models.config && --monitoring_config_file=/models/monitoring_config.txt
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
restart: always
container_name: prometheus
networks:
- tf_net
volumes:
- ./pb_models/prometheus.yml:/etc/prometheus/prometheus.yml
networks:
tf_net:
使用docker-compose up -d
启动服务。
等待服务启动成功后,在浏览器中输入网址http://服务器IP:9090,即可看到如下界面:
我们使用
multi_tf_serving.py
对tensorflow/serving部署的模型进行调用,在Prometheus中的监控结果如下:以上为Prometheus对最近10分钟tensorflow/serving提供的模型服务的调用次数的监控情况。
参考文章
TensorFlow Serving | Advanced Configuration 高级配置篇: https://anoyi.com/p/7bbdcac2fd0e
https://tensorflow.google.cn/tfx/serving/serving_config
后台发送消息tf serving PDF,即可下载tensorflow/serving模型部署PDF文件。