【问题标题】:AWS Cloud Watch: Metric Filter Value ExtractionAWS Cloudwatch:指标筛选值提取
【发布时间】:2016-10-27 07:50:27
【问题描述】:

我将 cloud-init.log 日志发送到 CloudWatch,我想创建一个指标过滤器来提取报告的 Cloud Init 运行时间。

示例日志条目如下所示:

Jun 24 12:06:51 ip-x-x-x-x [CLOUDINIT] util.py[DEBUG]: cloud-init mode 'modules' took 295.097 seconds (294.83)

而我要提取的值是:295.097

这似乎很简单,因为took [number] seconds 是这一行独有的。 This guide on metric filter syntax 似乎只展示了从 JSON 日志中提取值的示例,this official example list 没有涵盖它。

根据文档,我想到了类似的东西:

[..., "took", seconds]

会起作用,但我运气不佳。

任何帮助将不胜感激!

【问题讨论】:

    标签: amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs


    【解决方案1】:

    您尝试的几乎是正确的,只是语法略有变化。

    代替

    [..., "took", seconds]
    

    应该是

    [..., took="took", seconds, secondsword, secondsparentheses]
    

    最后两个词不管它们是什么,我试着选择有用的名字来表达它们所代表的含义。

    有了这个,seconds 变量现在将包含295.097,您可以在指标中使用它。

    ... 可以在开头或结尾使用,但似乎不能同时使用,这就是为什么我们必须在之后调用secondswordsecondsparentheses

    【讨论】:

    • "... 可以在开头或结尾使用,但似乎不能同时使用,这就是为什么我们必须在后面调用 secondsword 和 seconds括号。"这很烦人,因为有时您无法更改服务的日志格式。不过谢谢
    【解决方案2】:

    要提取值,我认为您需要将日志格式设置为 json 或空格分隔格式。对于上面的示例,这很困难,因为您试图从消息中提取值。

    这很难看,但它可以工作(在 Metric Filter 编辑器中测试得到 $value=295.097):

    [month, day, time, ip, process, module, name, mode, modules, type=took, value, therest]
    

    您可能希望更改日志格式以简化操作。

    【讨论】:

      【解决方案3】:

      稍微概括一下这个答案。
      以空格分隔的日志行的 Metric 过滤器语法必须锚定在行首或行尾,您可以在另一端使用 ... 表示您不在乎有多少列那个方向。
      给定具有以下空格分隔值的日志行
      1 2 3 4 5 6
      您可以像这样捕获第四列中的值
      [,,,four,...]
      表示您希望从一开始就在第 4 列中的值

      [...,四,,]
      表示您需要倒数第三列中的值。
      测试这些模式,将显示 $four=4

      接受的答案是正确的,但不需要定义最后两个列名。他们只需要空的占位符,所以
      [..., take="took", seconds, secondsword, secondsparentheses]
      变得只是
      [...,took=took,seconds,,]
      从技术上讲,如果您知道 每个 日志行都是相同的语法,您甚至不需要 take=took。但是,添加 take=took 可确保您仅匹配从行尾算起的第 4 列中包含该单词的日志行,并且像这样始终匹配日志行中的至少一个已知项目可能是最安全的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-18
        • 1970-01-01
        相关资源
        最近更新 更多