问题标签 [google-cloud-monitoring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
675 浏览

firebase - CLOUD_SDK_CREDENTIALS_WARNING 我们建议大多数服务器应用程序使用服务帐户

背景:我刚刚学习了一个从 FireStore 仪表板获取(下载)数据的技巧。显然,在浏览器上打开 Google Dashboard 并用我的眼睛看到拥有 Google Dasboard 要容易得多。尽管如此,出于个人原因,在我的公司中,操作员无法查看第三个仪表板。他们只能看到内部仪表板。我正在尝试一些解决方法,我可以获取/下载用于填写仪表板的相同数据并将其导入我们基于 Dynatrace/ELK 的内部解决方案。

出于学习目的,为了下载我遵循的 Google Dashboard 数据:

1 - 使用 gcloud 获取 ACCESS_TOKEN

2 - 使用上面的 ACCESS_TOKEN 获取仪表板数据,如:

显然,这只是一个示例,如何获得满足过滤条件的连接数。我可以根据Google Cloud MetricsGoogle Cloud API v3继续搜索调整 API 和过滤器

这次从 API 版本 1 获取仪表板元数据的其他示例是

从 gcloud 获取 ACCESS-TOKEN 时的警告鼓励查看身份验证指南,我做到了。好吧,它并没有解释如何解决这个警告,也没有解释为什么“如果您的应用程序继续使用来自 Cloud SDK 的最终用户凭据,您可能会收到“超出配额”或“未启用 API”错误”。我可以看到我从仪表板获取数据的技巧正在发挥作用,但似乎我依靠奇怪的方式来获取 ACCESS-TOKEN。

所以我的直接问题是:手动获取 ACCESS-TOKEN 并在 curl/postman 中使用它以避免此类警告的适当步骤是什么?

在我看来,基于这个stackoverflow 答案,根本原因是“......此错误消息意味着您使用的是用户帐户,而不是服务帐户......”那么我该如何解决呢?我必须创建一个服务帐户吗?如果是这样,怎么做?在这个接受的答案结束时,我读到“...要使用真正的应用程序默认值,您可以使用 gcloud auth application-default login...”这正是我使用 gcloud 登录的方式:运行 gcloud auth application-default login ,当打开 Google SingleSignOn 时,我选择我的电子邮件,这与我在 Firebase 帐户中注册的用户相同。答案还提到“...关联特定服务帐户的方法是 gcloud auth activate-service-account --key-file ...。”我想尝试一下,但他/她在说哪个密钥文件关于?

如果它是相关的,就我而言,我只在 Firebase 项目下使用 FireStore(我没有使用除 FireStore 之外的任何其他东西)。

*** 在约翰回答后编辑

我们很快将这个项目投入生产。

1 - 我们的移动应用程序将通过将其发布到我们的内部微服务来创建汇款。这样的 post 请求将返回从我们的内部 NodeJs 服务器生成的 CustomToken。

2 - 我们的内部微服务会将此类传输复制到 Firestore 并相应地更新其在 Firestore 上的状态。

3 - 代替我们的移动应用程序轮询或侦听我们的内部微服务以获取状态,它将侦听 Firestore 以从相应文档中获取状态。为了收听,它将使用步骤 1 中从 post 返回的 CustomToken。我们公司只想利用 Google Firestore 的实时数据库功能用于该项目(反应式方法)。

与我所做的与您的陈述相比,您是否看到任何考虑因素:“Google 在大多数情况下更喜欢您授权使用服务帐户”?

CustomToken 是在此 NodeJs 服务器内部创建的,并取决于从 Google Firebase 的预授权用户身份验证/用户中提取的 uid :

我们的手机(Angular 中的示例,但 IOS 和 Android 的想法相同)具有我下载的 SERVICE_ACCOUNT_JSON_FILE,如下所示:

环境.ts:

app.component.ts

我了解 CustomToken 创建及其在我们的移动设备中的使用都完全依赖于服务帐户。我对吗?我是否错过了一些概念,并且我在幕后使用了 USER CREDENTIAL 并且在 DEV 环境中正常工作的东西在生产时会弹出一些惊喜?显然,对于这个问题,一切都来自我的免费账户,但在生产中它将是付费账户,但这里的代码和步骤将完全相同。

0 投票
1 回答
1764 浏览

google-cloud-platform - GCP 基于日志的指标不适用于正则表达式过滤器

我正在尝试在 GCP 中创建一个基于日志的指标,以用于警报规则(StackDriver,现在是 GCP 的一部分)。来源是 HTTPS (L7) LB 日志。经过大量试验和错误后,我发现如果我使用基于正则表达式的过滤器,我的指标不起作用(注意:基于正则表达式的标签提取工作,在下面描述的更改之后)。

具体来说,如果我的过滤器看起来像这样:

单击“提交过滤器”后,我确实看到了过滤的日志条目,当我设置基于正则表达式的标签提取器时,我还看到了示例记录/标签,但在指标资源管理器中,时间序列中没有任何数据。但是,如果我更改过滤器以进行纯全文子字符串匹配,即

它确实有效 - 我确实在指标资源管理器中看到了时间序列。

请注意,这不是时间问题,我还不够耐心。通过在两个过滤器之间切换,我可以可靠地使其工作(或不工作)。

这对我来说是个问题,因为我确实需要请求 URL 上的正则表达式匹配;子字符串匹配不够复杂,此外,我想确保只匹配请求 URL,而不是引用者。虽然我基本上可以使用更粗略的过滤器(即使这会破坏指标),但这会导致我的警报规则出现另一个问题,因为我无法过滤掉不匹配项——提取的标签没有值,甚至label !=~ [[:space:]]*没有无法在警报级别过滤掉不匹配项,因为缺少标签值显然与空标签值不同。由于过于粗略的日志过滤器而导致的 FP 警报我来说是个大问题。

如果这是预期的行为,我会感谢突出显示此限制的文档的链接。

0 投票
1 回答
2046 浏览

google-cloud-platform - 如何查看 Google Cloud Run 应用程序的请求计数(而非速率)?

我部署了一个在 docker 容器中运行的 Google Cloud Run 服务。开箱即用,看起来我可以深入了解服务页面的“指标”选项卡上的一些指标,例如请求计数、请求延迟等。虽然听起来请求计数会回答我的问题,但我真正想要的是深入了解采用情况,以便我可以回答“过去一周有多少次访问我的应用程序”或类似的问题。有没有办法开箱即用地获得这样的洞察力?

目前,请求计数指标报告响应/秒,因此我可以看到看起来像“0.05/s”的光点,这可以给我一些洞察力,但很难汇总。

我也尝试过使用 Monitoring > Metrics explorer,但我没有看到我选择的指标的任何数据。如果这似乎是建议的解决方案,我正在考虑从我的应用程序中连接到 Google Analytics。谢谢!

0 投票
1 回答
211 浏览

firebase - 如何查看谷歌云安全规则总拒绝的详细信息?

如何查看 Google 云中 Firebase 安全规则的总拒绝详情?我添加了 Firebase 控制台中显示的屏幕截图。但它显示“在云监控中使用高级分析和警报工具”但是当我去谷歌云时,它没有任何细节。我还附上了当我单击 Firebase 控制台中的云监控按钮时打开的 Google 云控制台的屏幕截图。在此处输入图像描述在此处输入图像描述

0 投票
1 回答
2076 浏览

google-cloud-stackdriver - 安装在 VM 上的 GCP stackdriver-agent 每分钟发送一次奇怪的日志

请你帮我解决以下问题。

我在 node.js 上有一个后端服务,我将它部署在 GCE VM 上。它工作正常,但在安装日志记录和监控代理后,我在日志查看器中看到非常奇怪的日志。我查看了生成该日志的付费。它是堆栈驱动程序代理。

这是他们:

所以,每分钟我都会看到这样的日志出现。当我停止 stackdriver-agent 服务时,它们消失了。我的项目中有 4 个虚拟机。只有其中两个出现这样的问题在 Cent OS7 VM 和 Ubuntu 18 VM 上

0 投票
2 回答
919 浏览

google-cloud-platform - gcp监视“任何时间序列违反”与“所有时间序列违反”

在此处输入图像描述

“违反任何时间序列”和“违反所有时间序列”这两个选项有什么区别?我可以想象前者会轻松做什么,但我不知道后者会做什么。

所有时间序列?它的射程有多长?为什么它有一个for选项?

0 投票
1 回答
532 浏览

google-cloud-platform - 在 Google 监控中限制对特定仪表板的访问

是否可以创建只能访问特定 Google 监控仪表板的 GCP IAM 用户?我认为应该可以通过条件角色绑定来实现,但是监控仪表板不是受支持的资源。

还有其他方法可以实现这一目标吗?

0 投票
1 回答
262 浏览

prometheus - 如何在 Google Cloud 中重新创建 Grafana kNative 仪表板

我正在使用 kNative Observability 插件,它在我的 Google Kubernetes Engine 集群上安装 Prometheus 和 Grafana。

有两个问题:

  1. 在 kNative 的最新版本中,该插件已被弃用
  2. 我看到该插件将日志保存在 Prometheus pod 中(我的最佳猜测),有时它会在高负载下崩溃。

有没有办法在 Google Cloud Monitoring 中重新创建 Grafana 仪表板?也许更好的问题是,有没有办法让 Prometheus 记录的 kNative 日志进入 Google Cloud 的环境?

0 投票
1 回答
161 浏览

google-cloud-platform - Google 负载均衡器未出现在监控仪表板中

我创建了一个带有后端服务的全局负载平衡器,并在 Google Cloud 项目中启用了日志记录。负载均衡器图表和指标应该出现在监控仪表板中,但是没有创建图表和指标。

Google Cloud 文档中,看起来如果项目中存在负载均衡器,则负载均衡器仪表板就可以使用了。我也找不到手动创建负载均衡器仪表板。

0 投票
1 回答
90 浏览

google-cloud-platform - Stackdriver 自定义提醒

我正在尝试使用来自我的服务器的日志通过堆栈驱动程序获得警报。我的日志条目将有一个属性 health_status,其值可以是 [true/false],我想创建一个警报策略,如果最后一个日志条目的 health_status 为 false,它会触发警报。我成功了那部分(通过创建一个带有标签的指标 - health_status,定义一个警报策略,如果 health_status = false),但复杂性是,日志条目将每 15 分钟更新一次,如果我不想收到通知在过去 15 分钟内已触发警报。(即)如果在前 15 分钟,health_status = true,在接下来的 15 分钟,health_status = false,我需要一个警报。但是,如果在前 15 分钟,health_status = false,在接下来的 15 分钟,health_status = false,我不需要警报。是否可以在堆栈驱动程序中实现这样的警报策略?提前致谢!