如何基于Cloud Run Job的JSON日志指标生成仪表盘曲线图?
解析Cloud Run Job日志中的JSON指标并可视化的方案
方法1:优化基于日志的指标,提取JSON数值
你之前用的基于日志的指标默认是计数器,改成分布类型指标就能提取JSON内的数值:
- 打开Cloud Logging,创建新的「基于日志的指标」,类型选「分布」
- 设置日志过滤器,匹配你的Cloud Run Job日志,例如:
resource.type="cloud_run_job" jsonPayload.metric_key:*(替换metric_key为你的实际字段名) - 在「提取标签」环节,添加数值提取规则:用JSON路径
jsonPayload.metric_key作为指标的数值来源 - 保存后,指标会同步到Cloud Monitoring,直接在仪表盘选择该指标即可生成折线图
方法2:用Cloud Function解析日志并推送自定义指标
无需sidecar,通过轻量函数完成指标提取与推送:
- 创建Cloud Function,触发源选择「Cloud Logging」,设置过滤器匹配目标日志
- 编写函数代码(以Python为例):解析日志的JSON payload,提取目标指标值,调用Cloud Monitoring API将数值推送到自定义指标
from google.cloud import monitoring_v3 def push_metric(event, context): log_entry = event['jsonPayload'] metric_value = log_entry.get('your_metric_field') if not metric_value: return client = monitoring_v3.MetricServiceClient() project_name = f"projects/{YOUR_PROJECT_ID}" series = monitoring_v3.TimeSeries() series.metric.type = "custom.googleapis.com/cloud_run_job/your_metric" series.resource.type = "cloud_run_job" # 添加上下文标签与时间序列数值 point = series.points.add() point.value.double_value = metric_value point.interval.end_time.seconds = int(context.timestamp.timestamp()) client.create_time_series(name=project_name, time_series=[series]) - 给函数配置Logging读取权限和Monitoring写入权限,部署后即可自动将日志中的指标同步到监控系统
方法3:直接在Cloud Monitoring用日志查询生成图表
无需预创建指标,直接通过日志查询生成可视化:
- 进入Cloud Monitoring仪表盘,新建图表,数据源选择「日志查询」
- 编写日志查询语句,提取并聚合JSON中的指标值,例如:
resource.type="cloud_run_job" | extract jsonPayload.your_metric_field as metric_val | group_by 1m, [avg_val: mean(metric_val)] - 选择图表类型为折线图,调整时间范围即可生成实时曲线图
内容的提问来源于stack exchange,提问作者Simson
相关产品推荐
相关产品推荐

