微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建 Cloud Monitoring (Stack-Driver) 指标来衡量对外部 api 的请求计数

如何解决创建 Cloud Monitoring (Stack-Driver) 指标来衡量对外部 api 的请求计数

我创建了一个调用外部 API 的 .net 核心 API。我想围绕对外部 API 的调用收集一些指标。现在最重要的是在最后一刻获取对该外部 API 的调用次数。外部 API 有速率限制,如果 API 达到速率限制,我想知道哪个端点被调用得更频繁。 我尝试使用 Google Endpoints。它工作正常,但不是为了这个目的。它只允许我获取 API 端点上的指标,而不是与外部 API 调用相关的指标。 我还尝试使用 Google Cloud Monitoring(又名 Stackdriver)。我必须创建一个自定义指标,并且我已经在其中一个端点上实现了文档中建议的代码(请参阅 https://cloud.google.com/monitoring/custom-metrics/creating-metrics)(仅用于测试目的)。问题是自定义指标有一个速率限制,我不能以每 10 秒一个点的速度将数据写入单个时间序列,这意味着如果对我的 API 进行多次调用自定义指标将不起作用10 秒内,这会经常发生。

是否有人在我需要的类似场景中实现了 Stackdriver?你是怎么做到的?也许这不是最好的方法,但有更好的方法

我是否应该添加日志并计算过去 10 分钟内添加的日志数量,以获取对外部 API 的调用次数?此解决方案肯定可以获取对外部 API 的调用次数,但如果我将来也需要实现这些,它不允许我获取延迟时间和响应类型。

我还尝试使用 Prometheus 和 Grafana 来获取此信息,并且效果很好,但我尝试仅使用 Google 提供的工具,因为我们使用的是 Google 生态系统。

谢谢

更新

我不得不添加一个标签并为每次调用分配不同的值以绕过 10 秒的速率限制。

解决方法

看起来你找到了答案:

确实,您不能每 10 秒向特定时间序列写入一个以上的数据点,但是您可以写入不同的时间序列并且每次没有任何限制:

如果你想对同一个时间序列写多个点,那么 对每个点单独调用 timeSeries.create 方法。 不要以每 10 个点的速度将数据写入单个时间序列 秒。如果要将数据点添加到不同的时间序列,则 没有速率限制。

你试过了吗?我是从你看到的同一个 doc 那里得到的。

编辑以补充答案: 可以通过将数据点写入不同的时间序列来避免速率限制,在这种情况下是通过添加具有不同值的标签来完成的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。