如何在Google Cloud Logging配置JSON中编写REGEXP_EXTRACT表达式
解决Google Cloud Logging分布指标的valueExtractor正则问题
问题根源
你的错误来自两方面:
- JSON字符串中反斜杠未正确双重转义,导致正则表达式解析失败;
- 原正则的空格匹配逻辑不符合日志格式(日志末尾的数值后无空格),无法正确捕获目标值。
修正方案
调整valueExtractor的正则表达式,同时确保JSON转义正确:
完整修正后的配置JSON
{ "name": "end-to-end-response-time-shell", "description": "Time duration of a chat request (in seconds).", "filter": "resource.type=\"cloud_run_revision\" AND logName=\"log_name\" AND severity=\"INFO\" AND textPayload=~\"Chat request completed in\"", "metricDescriptor": { "name": "cloud_run_revision", "type": "logging.googleapis.com/user/end-to-end-response-time-shell", "metricKind": "CUMULATIVE", "valueType": "DISTRIBUTION", "unit": "s", "description": "Time duration of a chat request (in seconds).", "displayName": "end-to-end-response-time-shell (sec)" }, "valueExtractor": "REGEXP_EXTRACT(textPayload, \"Chat request completed in (\\d+(?:\\.\\d+)?)\")" }
关键说明
- 正则逻辑:
Chat request completed in (\\d+(?:\\.\\d+)?)精准匹配日志中固定前缀后的数值,支持整数(如5)和小数(如3.818780105999849)两种格式,(?:\\.\\d+)?表示小数部分可选。 - JSON转义:JSON字符串中所有反斜杠需写成
\\,因此正则里的\d变为\\d,\.变为\\.,确保解析器能正确识别正则表达式。 - 去掉冗余空格匹配:原正则的
\\s会要求数值前后有空格,但日志末尾的数值后无空格,因此删除该部分,避免匹配失败。
内容的提问来源于stack exchange,提问作者four_leaves
相关产品推荐
相关产品推荐

