tensorflow(10)使用Prometheus对tensorflow/serving进行服务监控

共 3475字,需浏览 7分钟

 ·

2021-02-25 22:44

  在之前的文章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,即可看到如下界面:

Promethus启动界面

  我们使用multi_tf_serving.py对tensorflow/serving部署的模型进行调用,在Prometheus中的监控结果如下:


Prometheus最近10分钟的服务监控界面

以上为Prometheus对最近10分钟tensorflow/serving提供的模型服务的调用次数的监控情况。

参考文章

  1. TensorFlow Serving | Advanced Configuration 高级配置篇: https://anoyi.com/p/7bbdcac2fd0e

  2. https://tensorflow.google.cn/tfx/serving/serving_config


后台发送消息tf serving PDF,即可下载tensorflow/serving模型部署PDF文件。

浏览 46
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报