Apache APISIX 集成 Google Cloud Logging

日志是大型分布式系统的重要基础设施,可以帮助开发者检查观测服务运行的状态,提高服务故障排查和诊断效率以及进行多维度的分析,以此提高系统整体的稳定性和运行效率。

Google Cloud Logging 是由 Google Cloud 提供的全代管式实时日志管理服务,提供 EB 级的存储、搜索、分析和提醒等服务。通过 Google Cloud Loging 的日志浏览器你可以简单高效的对日志进行对日志进行搜索、排序和分析,并且 Google Cloud Logging 还提供了保存查询和丰富的图表功能可以使日志筛查结果可回溯且有更直观的呈现。

Apache APISIX 在此之前已经支持集成了 HTTP LoggerTCP LoggerKafka LoggerUDP LoggerRocketMQ LoggerSkyWalking LoggerAliyun Cloud Logging(SLS)等众多开源及云日志服务解决方案。

最近,Apache APISIX 对 Google Cloud Logging 也完成了支持,在使用 Apache APISIX 作为网关时用户又多了一种新的日志解决方案:使用 google-cloud-logging 插件,将 Apache APISIX 的请求日志转发到 Google Cloud Logging 服务中进行分析和存储。

启用该插件后, Apache APISIX 将在 Log Phase 获取请求上下文信息并序列化为 Google Cloud Logging 的 日志格式,然后将序列化后的日志数据提交到批处理队列中,当批处理队列触发用户设置的时间或条目阈值时会将日志数据通过 Google Cloud API 批量转发到 Google Cloud Logging 服务中。

本文将为大家介绍如何在 Apache APISIX 中配置和使用 Google Cloud Logging 服务。

配置 Google Cloud

  1. 打开浏览器,访问 Google Cloud 首页
  2. 输入用户名和密码,登录 Google Cloud 控制台。
  3. 单击 Google Cloud 控制台左侧菜单,选择 “IAM& Admin > Create a Project”,开始创建项目。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sFyE9vk5-1645609953442)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=MDM5Y2MyMjhkZjZmZjdhMjc0NThhYTYxZmYyODI1MjVfQllOSUw3VXk5YU4zMDZlbXNUWGlDdkhmY1g1NlFsR1pfVG9rZW46Ym94Y242ZmVCYjl4VnVtMHE2OXoyVWFWMmduXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 输入项目名称,选择组织名称,单击 “CREATE” 创建项目。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aRXW9yAJ-1645609953444)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=Zjc5ZjdjNzMwM2EyMjMzZjgzNTJlYTg4OWJiZGE1MjJfYXMzYkkwWXdxUDAxdUZ1NHZRQzhBa09LcDEzTFhsRkRfVG9rZW46Ym94Y25TS3ZoYXpaT0FFNHZESjBzWEJpbFJjXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 创建项目成功后,控制台右上角提示创建成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ba11DtQQ-1645609953445)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=MTViYTc3OTk3OWFjY2VmMDY3YTY5NWE3ZTNmMDZjMDJfaXh5VTN1clZFUHliRUhVekZscVEyOFh3NG1PMUwzRWdfVG9rZW46Ym94Y25HTmxMUkIxVVVQNFl5eFU5aXNCTmZoXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 在窗口中点击选择项目,或在控制台首页顶部导航栏选择项目操作路径。选择项目后,将跳转至控制台首页,此时在顶部导航栏和信息中心的项目信息中已经可以看到当前项目的相关数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aM5StCLA-1645609953446)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=NGYxOGNiYWYxZDA2M2YzNDk2YjlkMmRhZDQzYWU0ZTRfcnpJMU1UbE9XbzVaR0Ywa1RXM0xkTmxrZ0xhWld2V1dfVG9rZW46Ym94Y25zRFNZSExjVEg3WlVvQ004MWcwVUVkXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 完成项目创建后,你需要为该项目创建服务账号。请返回 Google Cloud 控制台首页,单击左侧菜单“IAM & Admin > Service Account”,开始创建服务账号。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DPzVA8J4-1645609953447)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=MzdiM2NjYmE2YTZkNWVlNjcwYzQyMjUyY2RhMjRhMTVfOUQwOUFpZlI5b3l4UFJmdFhnVEk5SXRzdU43a1dMWHdfVG9rZW46Ym94Y25JYjNxMXBwalowS29VZ0JNNEl4OHNiXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 单击“CREATE SERVICE ACCOUNT”创建服务账号。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ElARl9Z2-1645609953448)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=ZjYxMTYzMzM3MjgyZTdkMTIzMzZmMTAyMjEzNjZhZDdfMzJTMEtBVmd1RFh6UDkzQWVPVVpuR2d6dExad0dNQUZfVG9rZW46Ym94Y256VXY1UkdSYmdmd3dnOWw5eGVZRXllXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 输入服务账号名称及 ID(ID 一般跟随账号生成),然后单击 “CREATE AND CONTINUE”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fViZnc7d-1645609953448)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=ODM2YTk3NmI3MjQxNTVlYWM2MjE5NWEzZWE1ZGVhZmVfbW5PRkc5VGgxNnNHS3NTSXJxTnhaZTNxeU0xYUJYOHBfVG9rZW46Ym94Y25tRlRrYmVFZks0Q05ickVpVzVQUmVkXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 单击“Role”,在搜索框中输入“Logging Admin” 搜索这个角色,选择“Logging Admin”作为角色。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d0AE6778-1645609953449)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=MjM5MjA1YmZjYmNlM2I3ZTljYTk5NGNmNTNlZWVjN2VfRzZXV2ZZMW5tM25Za0JxekJYT0JQc3ZKcERYaGlxNU5fVG9rZW46Ym94Y25OSlQ5dUVhY3RBdzZJRUR5VXV1OWVkXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 单击“DONE”, 完成服务账号创建,跳转到服务账号首页。此时你可以在列表中看到刚刚创建的账号及详情。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gdfeXmnC-1645609953450)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=MTY2Nzg5ZGRlN2Q1MmQ2MmMwYjc0NTJiNWE0OGQ2NDRfeDdPU0h1N0FyVTZxRHBKYWRBS01kOHBUUUJ5SkR4VjFfVG9rZW46Ym94Y25kTEg0VGVta0RCVEU4VEp4MGhFcktiXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 在服务账号最后一列的操作栏单击“Manage keys”,进入秘钥管理界面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dg9H2O8N-1645609953451)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=YTNhN2Y0MGQ0NmIxMmMyNTIzMWJhMzU4ZTJkNWExZGJfZTVSMUhySWRiUklFWFhoZE5tUDhSMXF1RGFhN0NVNmdfVG9rZW46Ym94Y25wZktoY3J3VmtwV1hDdlA3ZHJYR1ljXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 单击“ADD KEY > Create new key”,开始创建新秘钥。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YytzpWJ0-1645609953452)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=NmUxYzA4NDY2ZTI1Y2IxZjFiNjA5NTZiYzMxMmVhZDRfcVQ2aXpkeGZBbDViNHNENUM4UW5ONkVReDBqYU1Md2lfVG9rZW46Ym94Y25wRnhxRGpKaHZBNXJmN0tzYXFNQzFkXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 在弹窗页中选择秘钥类型为“JSON”,然后单击“CREATE”,创建新秘钥。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kJduVmVc-1645609953452)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=NmE5NzFiNmY1NjYyYzkyOGI0OTIzOGZkNjQ2ODBkMmVfYmYxTGl5SzZwdWdFOWx0dXR5U3c3bWtjVkFKUTZHeDlfVG9rZW46Ym94Y25YMGU5VTFBaUlkeEN0OXR3bU5lNk1lXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

  1. 私钥信息将通过浏览器自动下载到系统默认 Downloads 目录中,启用 google-cloud-logging 插件时,需要使用这个私钥中的信息,因此请妥善保存私钥文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HS9wRCNg-1645609953453)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=ODM1NzFlM2E1OTdlOWMwMzc4NGYxNGExMTY4YTI0MWJfM1RDNlN3eHZSTjc4VEEwemt4UTBJa3d1NzRkR3ZBMzdfVG9rZW46Ym94Y242dHRvM3BycUZXdUNKTjFuR2ZaOHVjXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

配置 Apache APISIX

启用 google-cloud-logging 插件

方式一:上传私钥文件配置
  1. 将私钥文件上传到 Apache APISIX 节点服务器中。
  2. 将文件路径配置到 google-cloud-logging. auth_file 配置项上,如下所示:
curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
        "google-cloud-logging":{
            // Google Cloud Logging 私钥文件
            "auth_file":"/path/to/apache-apisix-fcafc68c2f41.json",
            // 每个批处理队列最大容纳日志条目数
            "batch_max_size": 1,
            // 刷新批处理队列缓冲区的最大时间(以秒为单位)
            "inactive_timeout": 10
        }
    }
}'
方式二:通过 JSON 文本配置
  1. 打开私钥文件。
  2. project_id 的值配置到 google-cloud-logging. auth_config.project_id 配置项中。
  3. private_key 的值配置到 google-cloud-logging. auth_config. private_key 配置项中。

如下所示:

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
        "google-cloud-logging":{
            // Google Cloud Logging 私钥文件
            "auth_config":{
                "project_id":"apache-apisix",
                "private_key":"-----BEGIN RSA PRIVATE KEY-----your private key-----END RSA PRIVATE KEY-----"
            },
            // 每个批处理队列最大容纳日志条目数
            "batch_max_size": 1,
            // 刷新批处理队列缓冲区的最大时间(以秒为单位)
            "inactive_timeout": 10
        }
    }
}'
参数说明
名称是否必需默认值描述
auth_config半可选必须配置 auth_config 或 auth_file 之一
auth_config.private_key必选谷歌服务帐号的私钥参数
auth_config.project_id必选谷歌服务帐号的项目 ID
auth_config.token_uri可选oauth2.googleapis.com/token请求谷歌服务帐户的令牌的 URI
auth_config.entries_uri可选logging.googleapis.com/v2/entries:write谷歌日志服务写入日志条目的 API
auth_config.scopes可选[“https://www.googleapis.com/auth/logging.read”,“https://www.googleapis.com/auth/logging.write”,“https://www.googleapis.com/auth/logging.admin”,“https://www.googleapis.com/auth/cloud-platform”]谷歌服务账号的访问范围, 参考: OAuth 2.0 Scopes for Google APIs
auth_file半可选谷歌服务账号 JSON 文件的路径(必须配置 auth_config 或 auth_file 之一)
ssl_verify可选TRUE启用 SSL 验证, 配置根据 OpenResty文档选项
resource可选{“type”: “global”}谷歌监控资源,参考: MonitoredResource
log_id可选apisix.apache.org%2Flogs谷歌日志 ID,参考: LogEntry
max_retry_count可选0从处理管道中移除之前的最大重试次数
retry_delay可选1如果执行失败,流程执行应延迟的秒数
buffer_duration可选60必须先处理批次中最旧条目的最大期限(以秒为单位)
inactive_timeout可选10刷新缓冲区的最大时间(以秒为单位)
batch_max_size可选100每个批处理队列可容纳的最大条目数

验证插件是否成功运行

  1. 运行以下命令,向 Google Logging 发送请求。
curl -i http://127.0.0.1:9080/logging.do
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Date: Fri, 10 Dec 2021 09:57:52 GMT
Server: APISIX/2.11.0

Hello, Google Cloud Logging
  1. 打开浏览器,访问 Google Cloud 首页

  2. 输入用户名和密码,登录 Google Cloud 控制台。

  3. 通过日志浏览器查看发送的请求日志,返回结果如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2la22o7L-1645609953454)(https://tfzcfxawmk.feishu.cn/space/api/box/stream/download/asynccode/?code=MGYyMTUwMDkwMmQ1MzNhOWFlOGU1YzhjYzRhY2NjODJfRzhyUXRDbVRzZlpadXp1OXU1bWMyZ0IwZWpYRWh5QW9fVG9rZW46Ym94Y24wWUZxWmtWSDZ5Q1hsWU9UNlY4UHRmXzE2NDU2MDk4MzI6MTY0NTYxMzQzMl9WNA)]

停用 google-cloud-logging 插件

如使用结束,可以移除 google-cloud-logging 相关配置块进行停用该插件。

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri":"/logging.do",
    "upstream":{
        "type":"roundrobin",
        "nodes":{
            "127.0.0.1:1980":1
        }
    },
    "plugins":{
    }
}'

总结

本文为大家描述了 Apache APISIX 和 Google Logging 对接的详细操作步骤,希望通过本文可以让大家对于在 Apache APISIX 中使用 Google Cloud 有了更清晰的理解,方便后续进行上手实操。

Apache APISIX 不仅致力于保持自身的高性能,也一直非常重视开源生态的建设。目前 Apache APISIX 已经拥有了 10+ 个日志相关的插件,支持与业界主流的开源日志项目对接。

如果你有对接其他日志的需求,不妨访问 Apache APISIX 的 GitHub,通过 issue 留下你的建议;或订阅Apache APISIX 的邮件列表,通过邮件表达你的想法。

相关阅读

强强联合!APISIX 集成 SkyWalking 打造全方位日志处理

Apache APISIX 携手 RocketMQ 为实时 API 日志监控功能再下一城

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

API7.ai 技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值