【问题标题】:GCP/Stackdriver: Uptime Checks for an authenticated APIGCP/Stackdriver:正常运行时间检查经过身份验证的 API
【发布时间】:2021-02-09 02:14:35
【问题描述】:

所以我正在开发一个由其他后端服务使用的后端服务。消费者在调用我们的 API 之前需要获取一个身份验证令牌。现在,我想定期向虚拟产品(在实时、已部署的实例上)发出请求,以观察一切是否正常。

通过正常运行时间检查可以实现吗?似乎它们仅支持基本身份验证,您无法在执行之前执行实际代码(检索令牌或生成随机请求标识符)。对吧?

我看到有通过代码https://cloud.google.com/monitoring/uptime-checks/#node.js 创建正常运行时间检查的选项,但由于await client.createUptimeCheckConfig(request) 使用静态配置(请求对象),我猜你不能在那里注入函数?

我是否可以使用 GCP 中的任何其他工具来满足我的需求,或者我是否需要部署中间人服务(或功能)来转发正常运行时间检查?

【问题讨论】:

  • 建议。使用 Google Cloud Scheduler 调用 Google Cloud Run。创建一个小型容器化应用程序,该应用程序获取令牌、调用您的 API 并向 Google Cloud Stackdriver(现在称为操作)报告错误。将应用部署到 Cloud Run。您可以使用 Python 或您喜欢的语言。

标签: google-cloud-platform monitoring stackdriver google-cloud-stackdriver


【解决方案1】:

正常运行时间检查确实允许您提供自定义标头 (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs#HttpCheck),因此如果您有一个硬编码令牌,您可以通过标头将其传递给您的 API。

如果这不是一个选项,您可以使用执行您需要的自定义逻辑的路由启动一个网络服务器实例。然后,设置正常运行时间检查以根据需要 ping 您的网络服务器。如果您需要在您的网络服务器上增加安全性,您有几个选择:

  1. 通过设置 HTTP 基本身份验证来限制对 Web 服务器的访问。正常运行时间支持基本身份验证,因此您只需提供服务器所需的值。
  2. 限制您的服务器只接受来自 Google 用于正常运行时间检查的 IP 地址的连接 (https://cloud.google.com/monitoring/uptime-checks/using-uptime-checks#get-ips)。请注意,这些是动态的,需要一些自动化流程才能使列表保持最新。

【讨论】:

  • 在咨询了一位同事之后,我还选择了创建一个中间人云功能来发出请求,并在该云功能上使用正常运行时间检查,而不是监控实际的服务。仍在为一些事情苦苦挣扎,但这与问题无关
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 2019-09-25
  • 2013-01-27
  • 1970-01-01
  • 2018-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多