如何解决如何使用 Ruby 从 Google Cloud Logging 获取请求 IP 地址?
使用适用于 Ruby (2.6.6) 的 google-cloud-logging gem(1.10.9 和 2.2.0),我可以遍历我的 GAE 应用程序的请求日志消息,并且我想列出请求的 IP请求日志中每个项目的地址。官方示例显示了每个日志条目如何有一个 payload
,在我的例子中,它是一个 Google::Protobuf::Any
对象,我希望它包含请求者的 IP。如何提取/解码/解包此 Protobuf 消息? The docs aren't helpful。
我也试过 entry.http_request
具有 request_ip
属性,但始终设置为空字符串。
我的代码是这样的:
require "google/cloud/logging"
log_name = "projects/msw-actionrev-prod/logs/appengine.googleapis.com%2Frequest_log"
logging = Google::Cloud::Logging.new
entries = logging.entries filter: "logName:#{log_name}",max: 10,order: "timestamp desc"
entries.each do |entry|
puts "[#{entry.timestamp}] #{entry.http_request.inspect} - #{entry.payload.inspect}"
end
对于每个条目,我都会得到这样的信息:
[2021-04-05 12:32:43 -0700]
#<Google::Cloud::Logging::Entry::HttpRequest:0x00007f96140d6b08 @request_method="",@url="",@size=0,@status=200,@response_size=0,@user_agent="",@remote_ip="",@referer="",@cache_hit=false,@validated=false> -
<Google::Protobuf::Any:
type_url: "type.googleapis.com/google.appengine.logging.v1.RequestLog",value: "\n\x14s~msw-actionrev-prod\x12\x14master-pr-sha1fa33dc\x1Ax606b65db00ff0d74801d2714410001737e6d73772d616374696f6e7265762d70726f6400016d61737465722d70722d73686131666133336463000100\"\x0E24.120.116.2022\f\b\xDB\xCB\xAD\x83\x06\x10\xE8\x97\xC4\xA4\x03:\f\b\xDB\xCB\xAD\x83\x06\x10\xC8\xD1\x9A\xB6\x03B\x05\x10\xE0\xB9\xD6\x11H\xAD\x02R\x03GETZ\f/favicon.icob\bHTTP/1.1h\xC8\x01p\xB5zz+https://jands.actionrev.com/estimates/32153\x82\x01rMozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/89.0.4389.114 Safari/537.36\x8A\x01\x04auto\xA2\x01\x13jands.actionrev.com\xA9\x01B\xBC\n}\x1Ea\xBD>\xD0\x01\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x01\xD8\x01\x01\xE2\x01\x8E\x0100c61b117c15c5c4188ce70178a79da68bf702722659bee6d5d0451cb3e7b2871e1acc064c992803df43dbf9c041a2a8e10f20666596c98f1175daa2577675996e1421c3f73345\xB2\x02\x061.9.71\xBA\x02 49b399e301b80433f456863f0f8529b3\xD0\x02\x01">
在 Google Cloud Console 中查看相同的日志时,我看到每个日志条目都有一个 protoPayload.ip 字段 - 这正是我希望提取的字段。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。