【问题标题】:Count number of GCP log entries during a specified time统计指定时间内的 GCP 日志条目数
【发布时间】:2018-10-06 18:10:21
【问题描述】:

是否可以从 GCP Stackdriver 日志记录中计算特定时间段内特定日志消息的出现次数?回答“此事件在此时间段内发生了多少次”的问题。基本上我想要下图中曲线的积分。

它不必是一个移动的窗口,这一次它更像是一个一次性任务。如果可用,高级日志查询上的计数聚合器或类似功能也可以使用。

查询如下所示:

(resource.type="container"
logName="projects/xyz-142842/logs/drs"
"Publish Message for updated entity"
) AND (timestamp>="2018-04-25T06:20:53Z" timestamp<="2018-04-26T06:20:53Z")

上图的基于日志的指标如下所示:

我的仪表板是这样设置的:

【问题讨论】:

  • 使用基于日志的指标时,请勿在过滤器中添加时间戳限制,因为基于日志的指标会在创建后及时计数日志条目。
  • @SummitRaj 感谢您的评论。我不知道它在创建后开始计算!

标签: google-cloud-platform google-bigquery stackdriver google-cloud-console


【解决方案1】:

我最终构建了堆叠条。

使用正确的缩放级别,我可以很容易地总结出现次数。直接从图形(积分)中获取计数本来是一个不错的功能,但现在可以使用。

【讨论】:

  • 请记住,如果您认为 Google 产品应该引入新功能,您可以随时提出新功能请求:issuetracker.google.com/issues/… 如果您有兴趣,可以直接提出或愿意为了更准确地改写您感兴趣的内容,我可以代表您发布。 (我在 Google Cloud Platform Support 工作)
  • 谢谢!我认为本质是从云控制台的日志视图中计算特定过滤器(特定时间段)的命中数!然后这可以在未来通过指标、警报等进行扩展,但第一步功能请求肯定是日志的 count(*) 聚合器。可能只是 GUI 中的输出,其中包含所选时间段的点击次数和使用的过滤器。我很乐意指定更多需要的内容,但我现在想不出更好的描述。
  • 对不起,回答晚了,我阅读了功能描述,但仍然不完全理解。我建议您创建它,并通过一个小示例使其更加清晰,但是如果有不清楚的地方,团队可能会与您联系,以便获得更多详细信息来决定是否值得添加。
【解决方案2】:

有多种方法可以做到这一点,我看到实际有效并且可以适用于您的情况的两种方法如下:

  • 使用Logs-based Metrics。例如,它们可以记录包含特定错误消息的日志条目的数量,或者它们可以提取日志条目中报告的延迟信息。

    Stackdriver Logging 基于日志的指标可以是以下两种指标类型之一:计数器或分布。 [...] 计数器指标计算与高级日志过滤器匹配的日志条目数。 [...] 分布指标从匹配过滤器的日志条目中累积数字数据。

    我建议您阅读文档以检查此功能是否完全涵盖您的用例。

  • 您可以export your logs to Big query,一旦有了它们,您就可以使用groupbyselect 等经典工具以及 BigQuery 为您提供的所有工具。

    Here 您可以找到关于如何导出日志以及如何使用 BigQuery 分析审核日志的非常简单的分步指南,但我相信您可以在网上找到很多资源。


产品和方法确实不同,我想说 BigQuery 更灵活,但配置和正确使用它也更复杂。如果您找到第三种更好的方法,请使用这些信息更新您的问题。

【讨论】:

  • 我用更多信息更新了这个问题。我确实使用了一个基于日志的计数器类型的度量,并将其显示在带有聚合总和的仪表板上,它确实计数,但每秒计数。我需要一个积分更长的时间。我会试试 Big Query 选项!
  • 由于导出到 BigQuery 是一项持续的操作,它并不能真正满足我们的需求。这个场景更像是我们发现了一个错误,然后问“这在周末发生了多少次?”。
  • 您可以使用 SUM Aligner 对对齐周期内的计数进行时间总和。
【解决方案3】:

还有一种选择。 您可以使用 Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/v3/) 读取您的自定义指标,并使用您需要的任何聚合在脚本中对其进行处理。

如果您正在使用 python - 您可以查看 gcloud python 库 https://github.com/GoogleCloudPlatform/google-cloud-python/tree/master/monitoring 这将是一个非常简单的脚本,您可以将计算结果流式传输到 bigquery 表中并在仪表板中使用它

【讨论】:

  • 这是否需要我的代码不仅要记录数据,还要从我的代码中发送 Stackdriver 指标?我主要是在寻找一种方法来计算特定时间段的日志条目,在不从 y 代码发送特定指标的情况下获取数据。
【解决方案4】:

首先你必须创建一个指标:

  1. 转到日志浏览器。
  2. 输入您的查询
  3. 转到操作 >> 创建指标。

在监控仪表板中

  1. 创建图表。
  2. 选择资源和指标。
  3. 转到“高级”并提供如下详细信息:

预处理步骤:速率

对齐功能:count

对齐周期:1

对齐单位:分钟

分组方式:日志

按功能分组:count

这将为您提供条形图中的可视化效果,其中包含所需事件的计数。

【讨论】:

    【解决方案5】:

    使用 PacketAI,您可以发送任意格式的日志,包括来自 GCP。然后日志仪表板将自动解析并分组为本视频所示的模式。 https://streamable.com/n50kr8

    还会显示不同日志模式的计数和趋势

    免责声明:我为 PacketAI 工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2014-05-26
      相关资源
      最近更新 更多