如何为Vertex AI自定义容器端点创建Prometheus指标
自定义容器部署Vertex AI Endpoint配置Prometheus指标方案
一、可行性结论
完全可以为搭载自定义容器的Vertex AI Endpoint配置Prometheus自定义指标,无需依赖日志生成指标,能有效避免大量日志产生的问题。
二、具体操作步骤
1. 在自定义容器中暴露Prometheus指标端点
- 为模型服务代码集成对应语言的Prometheus客户端库:Python用
prometheus-client,Go用官方prometheus库,Java用simpleclient等。 - 定义业务所需的自定义指标,比如用于监控预测分布的直方图、请求计数、延迟统计等。
- 启动一个独立的HTTP服务(推荐用9090端口,可自定义),暴露
/metrics端点供指标抓取。
以下是Python示例代码片段:from prometheus_client import start_http_server, Histogram, Counter from flask import Flask, request, jsonify # 定义自定义指标 prediction_distribution = Histogram( "prediction_value_histogram", "Distribution of model prediction values", buckets=[0, 0.2, 0.4, 0.6, 0.8, 1.0] ) total_prediction_requests = Counter( "prediction_requests_total", "Total number of prediction requests received" ) app = Flask(__name__) # 模拟模型预测逻辑 def model_predict(input_data): return float(input_data["feature"]) * 0.5 @app.post("/predict") def predict(): req_data = request.get_json() pred_result = model_predict(req_data) # 更新指标 prediction_distribution.observe(pred_result) total_prediction_requests.inc() return jsonify({"prediction": pred_result}) if __name__ == "__main__": # 启动Prometheus指标端点 start_http_server(9090) # 启动模型服务 app.run(host="0.0.0.0", port=8080) - 确保容器启动时,模型服务和指标端点服务同时运行(可通过启动脚本或进程管理器实现)。
2. 配置Vertex AI Endpoint的监控抓取规则
- 使用gcloud命令部署:添加
--monitoring-config参数指定指标端口和路径,示例命令如下:gcloud ai endpoints deploy-model YOUR_ENDPOINT_ID \ --model=YOUR_MODEL_ID \ --machine-type=n1-standard-4 \ --container-image-uri=YOUR_GCR_IMAGE_URI \ --monitoring-config=port=9090,path=/metrics - 使用控制台部署:在部署流程的「高级设置」-「监控配置」中,勾选「启用自定义指标」,填写指标端口(如9090)和路径(
/metrics)。
3. 在Cloud Monitoring中查看与使用自定义指标
- 部署完成后,Cloud Monitoring会自动开始周期性抓取自定义容器暴露的指标。
- 进入Cloud Monitoring控制台,打开「指标资源管理器」,在指标列表中选择「Vertex AI」下的自定义指标(即你定义的
prediction_value_histogram等),即可查看指标数据。 - 可基于这些指标创建自定义仪表盘、设置告警规则,实现对预测分布等业务维度的监控。
三、关键注意事项
- 指标端口不能与模型服务端口冲突(常规模型服务用8080,建议指标用9090)。
- 确保容器内的指标端点服务绑定
0.0.0.0,允许外部访问。 - 指标命名需符合Cloud Monitoring规范,仅使用字母、数字和下划线,避免特殊字符。
内容的提问来源于stack exchange,提问作者jiaoshang
相关产品推荐
相关产品推荐

