日志是大型分布式系统的重要基础设施,能够帮忙开发者查看观测服务运行的状态,进步服务故障排查和诊断效率以及进行多维度的剖析,以此进步零碎整体的稳定性和运行效率。
Google Cloud Logging 是由 Google Cloud 提供的全代管式实时日志治理服务,提供 EB 级的存储、搜寻、剖析和揭示等服务。通过 Google Cloud Loging 的日志浏览器你能够简略高效的对日志进行对日志进行搜寻、排序和剖析,并且 Google Cloud Logging 还提供了保留查问和丰盛的图表性能能够使日志筛查后果可回溯且有更直观的出现。
Apache APISIX 在此之前曾经反对集成了 HTTP Logger、TCP Logger、Kafka Logger、UDP Logger、RocketMQ Logger、SkyWalking Logger、Aliyun 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
- 关上浏览器,拜访 Google Cloud 首页。
- 输出用户名和明码,登录 Google Cloud 控制台。
- 单击 Google Cloud 控制台左侧菜单,抉择“IAM& Admin > Create a Project”,开始创立我的项目。
- 输出项目名称,抉择组织名称,单击“CREATE”创立我的项目。
- 创立我的项目胜利后,控制台右上角提醒创立胜利。
- 在窗口中点击抉择我的项目,或在控制台首页顶部导航栏抉择我的项目操作门路。抉择我的项目后,将跳转至控制台首页,此时在顶部导航栏和信息中心的我的项目信息中曾经能够看到以后我的项目的相干数据。
- 实现我的项目创立后,你须要为该我的项目创立服务账号。请返回 Google Cloud 控制台首页,单击左侧菜单“IAM & Admin > Service Account”,开始创立服务账号。
- 单击“CREATE SERVICE ACCOUNT”创立服务账号。
- 输出服务账号名称及 ID(ID 个别追随账号生成),而后单击“CREATE AND CONTINUE”。
- 单击“Role”,在搜寻框中输出“Logging Admin”搜寻这个角色,抉择“Logging Admin”作为角色。
- 单击“DONE”,实现服务账号创立,跳转到服务账号首页。此时你能够在列表中看到刚刚创立的账号及详情。
- 在服务账号最初一列的操作栏单击“Manage keys”,进入秘钥治理界面。
- 单击“ADD KEY > Create new key”,开始创立新秘钥。
- 在弹窗页中抉择秘钥类型为“JSON”,而后单击“CREATE”,创立新秘钥。
- 私钥信息将通过浏览器主动下载到零碎默认 Downloads 目录中,启用
google-cloud-logging
插件时,须要应用这个私钥中的信息,因而请妥善保留私钥文件。
配置 Apache APISIX
启用 google-cloud-logging 插件
形式一:上传私钥文件配置
- 将私钥文件上传到 Apache APISIX 节点服务器中。
- 将文件门路配置到
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 文本配置
- 关上私钥文件。
- 将
project_id
的值配置到google-cloud-logging. auth_config.project_id
配置项中。 - 将
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 | 每个批处理队列可包容的最大条目数 |
验证插件是否胜利运行
- 运行以下命令,向 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
- 关上浏览器,拜访 Google Cloud 首页。
- 输出用户名和明码,登录 Google Cloud 控制台。
- 通过日志浏览器查看发送的申请日志,返回后果如下图所示。
停用 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 日志监控性能再下一城