在指定时间范围内计算GCP日志条目的数量

18

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

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

Stack driver中示例基于日志的指标图表

查询看起来像这样:

(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")

我针对上面的图形设计了基于日志的指标,如下所示: 以计数器类型和单位1为基础的对数型指标

我的仪表板设置如下: 聚合求和的仪表板


1
使用基于日志的指标时,不要在过滤器中添加时间戳限制,因为基于日志的指标会计算创建后向前延伸的日志条目。 - Summit Raj
@SummitRaj 感谢您的评论。我不知道它是从创建后开始计数的! - Ayyappa
5个回答

5

我最终建立了堆叠柱状图。

使用正确的缩放级别,我可以轻松地总结出发生的次数。虽然从图表中直接获取计数(积分)会是一个不错的功能,但目前这种方法也行。

带有聚合:和对齐器:求和的堆叠条形图示意图


请记住,如果您认为 Google 产品应该引入新功能,您可以随时提出新的功能请求:https://issuetracker.google.com/issues/new?component=187228&template=0 如果您有兴趣,可以直接操作,或者如果您愿意更精确地重新表达您感兴趣的内容,我可以代表您发布。 (我在 Google Cloud 平台支持团队工作) - GalloCedrone
谢谢!我认为本质是要在云控制台的日志视图中计算特定筛选器(特定时间段)的命中次数!然后将来可以通过指标、警报等进行扩展,但首要功能请求肯定是对日志进行计数(*)聚合器。也许只是在GUI中输出所选时间段和使用的过滤器的命中次数。如果需要,我很乐意进行更详细的说明,但我现在想不出更好的描述了。 - Andreas Lundgren
抱歉回复晚了,我已经阅读了功能描述,但仍然没有完全理解。我建议您创建一个小例子,以使其更清晰,但是如果有什么不清楚的地方,团队将与您联系以获取更多细节,以决定是否值得添加。 - GalloCedrone

2
有多种方法可以实现此操作,我看到实际可行且适用于您情况的两种方法如下:
  • 利用基于日志的指标。例如,它们可以记录包含特定错误消息的日志条目数,或提取在日志条目中报告的延迟信息。

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

    建议完整查看文档以确保此功能符合您的使用情况。

  • 您可以将日志导出到 BigQuery,一旦将其导入,则可以使用传统的工具,例如 groupby select 和所有提供的 BigQuery 工具。

    这里有一个非常简洁的逐步指南,涉及如何导出日志以及如何使用 BigQuery 分析审计日志,但我相信您可以在网上找到很多资源。


产品和方法确实不同,我会说 BigQuery 更加灵活,但是配置和正确使用它也更加复杂。如果您找到了更好的第三种方法,请更新您的问题并提供相关信息。


3
我已更新问题并提供了更多信息。我使用基于日志的计数器类型度量标准,并在仪表板上显示其总和聚合,它确实进行计数,但是每秒钟一次。如果需要更长时间的积分,我将需要一个积分器。我将尝试使用Big Query选项! - Andreas Lundgren
由于导出到BigQuery是一个持续的操作,它并不能真正满足我们的需求。情况更像是我们发现了一个错误,并问道:“这个周末发生了多少次?” - Andreas Lundgren
您可以使用SUM Aligner对计数进行时间总和,直到对齐期为止。 - Summit Raj

2
首先您需要创建一个度量标准:
  1. 进入日志资源管理器。
  2. 输入您的查询。
  3. 转到"操作">>"创建度量标准"。
在监控仪表板中:
  1. 创建一个图表。
  2. 选择资源和度量标准。
  3. 转到"高级"并提供以下详细信息:
预处理步骤:比率 对齐函数:计数 对齐周期:1 对齐单位:分钟 分组依据:日志 分组依据函数:计数 这将为您提供所需事件的计数条形图可视化。

0

这是否需要我的代码不仅记录数据,还要从我的代码发送 Stackdriver Metrics?我主要是在寻找一种方法来计算特定时间段内的日志条目数,获取数据而无需从我的代码发送特定的度量信息。 - Andreas Lundgren

0

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

不同日志模式的计数和趋势也会显示出来。

免责声明:我是PacketAI的员工。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接