Jam*_*lor 5 amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs
我有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)
Run Code Online (Sandbox Code Playgroud)
我想提取的价值是: 295.097
这看起来很简单,因为它took [number] seconds是这条线独有的。本指标过滤器语法指南似乎只显示了从 JSON 日志中提取值的示例,而此官方示例列表并未涵盖它。
根据文档,我想出了类似的东西:
[..., "took", seconds]
Run Code Online (Sandbox Code Playgroud)
会工作,但我没有太多运气。
任何帮助将非常感激!
您尝试的几乎是正确的,语法略有变化。
代替
[..., "took", seconds]
Run Code Online (Sandbox Code Playgroud)
它应该是
[..., took="took", seconds, secondsword, secondsparentheses]
Run Code Online (Sandbox Code Playgroud)
最后两个词无关紧要,我尝试选择有用的名称来表达它们的含义。
有了这个,seconds变量现在将包含295.097您可以在指标中使用的内容。
the...可以用在开头或结尾,但似乎不能同时使用,这就是为什么我们必须调用 thesecondsword和secondsparenthesesafter。
要提取值,我认为您需要将日志格式化为 json 或空格分隔的格式。对于上面的示例,这很困难,因为您正在尝试从消息中提取值。
它很丑陋,但它有效(在 Metric Filter 编辑器中测试给出 $value=295.097):
[month, day, time, ip, process, module, name, mode, modules, type=took, value, therest]
Run Code Online (Sandbox Code Playgroud)
您可能希望更改日志格式以简化操作。
| 归档时间: |
|
| 查看次数: |
4062 次 |
| 最近记录: |