关于Stackdriver日志默认标签、上报及主行显示字段自定义的咨询
Stackdriver (Cloud Logging) 相关问题解答
Hey there! Let's tackle your two Stackdriver logging questions in detail:
1. Stackdriver日志的默认标签
Stackdriver(现在正式名称是Google Cloud Logging)会自动给日志条目添加一系列默认标签,帮你快速筛选和归类日志。常见的默认标签包括:
cloud.googleapis.com/location: 日志产生的GCP区域/可用区,比如us-central1-acloud.googleapis.com/resource_type: 生成日志的GCP资源类型,比如gce_instance、app_engine_servicecloud.googleapis.com/resource_id: 对应资源的唯一ID,比如GCE实例名称、App Engine服务IDlogging.googleapis.com/operation: 关联的操作ID(如果日志属于特定操作,比如部署、数据处理任务)logging.googleapis.com/timestamp: 日志生成的UTC时间戳,格式为RFC3339compute.googleapis.com/instance_name(针对GCE实例): 生成日志的虚拟机实例名称appengine.googleapis.com/service_name(针对App Engine): 对应的App Engine服务名称
这些标签都是日志条目自带的,不需要手动添加,在控制台的标签筛选栏里就能直接用它们过滤日志。
2. 发送日志至Stackdriver并自定义主行显示指定字段
第一步:发送包含目标字段的日志到Stackdriver
你可以通过多种方式发送日志,这里以Python客户端库为例,构造包含浏览器版本、HTTP方法、响应状态码的结构化日志:
from google.cloud import logging_v2 # 初始化Cloud Logging客户端 client = logging_v2.Client() logger = client.logger("my-application-logs") # 构造结构化日志条目,包含需要的字段 log_data = { "message": "User accessed product page", "http_request": { "request_method": "GET", "status": 200, "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15" }, # 自定义浏览器版本字段(也可以从user_agent中解析) "browser_version": "Safari 17.0" } # 发送结构化日志 logger.log_struct(log_data)
如果用其他语言(比如Node.js、Java),对应的Cloud Logging客户端库也支持发送结构化日志,核心是把需要的字段嵌入日志的结构化数据中。
第二步:自定义主行显示指定字段
要让日志主行显示浏览器版本、HTTP方法、响应状态码,你需要在Cloud Logging控制台创建自定义日志视图并配置主行格式:
- 打开Cloud Logging控制台,进入「日志视图」页面
- 点击「创建视图」,设置视图名称和日志范围(比如选择你刚才发送的日志所属的日志器)
- 在「主行格式」区域,输入格式表达式,比如:
这个表达式会让主行显示类似http_request.request_method + " | " + string(http_request.status) + " | " + browser_versionGET | 200 | Safari 17.0的内容 - 保存视图后,在这个视图下查看日志,主行就会按照你配置的格式展示指定字段了
如果你的日志是通过GCP服务(比如负载均衡、App Engine)自动生成的,这些服务已经会自动包含http_request相关字段,你只需要直接在主行格式中引用这些字段即可。
内容的提问来源于stack exchange,提问作者ziozec
相关产品推荐
相关产品推荐

