繁体   English   中英

使用 Regex 的 AWS Cloudwatch Log Insights 查询不提取 MySql 慢速查询日志的列

[英]AWS Cloudwatch Log Insights query using Regex does not extract columns for MySql Slow Query Logs

当我在 AWS Cloudwatch Log Insights 中运行以下查询时,我得到空白 output

parse @message /Query_time: (?<Query_time>[0-9](\.[0-9]+)?), Lock_time: (?<Lock_time>[0-9](\.[0-9]+)?), (?<Query>(?<=\;)(.*?)(?=\;))/ 

在此处输入图像描述

但是如果我单独运行它,它会提取值

parse @message /Query_time: (?<Query_time>[0-9](\.[0-9]+)?)/

在此处输入图像描述

# User@Host: ****[****] @ localhost [] Id: 10
# Query_time: 0.000283 Lock_time: 0.000075 Rows_sent: 1 Rows_examined: 1
SET timestamp=1589784518; SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'TIME_SINCE_ZERO_CONNECTIONS';

有什么我想念的吗

你可以使用

Query_time:\s*(?<Query_time>[0-9]+(?:\.[0-9]+)?)\s*Lock_time:\s*(?<Lock_time>[0-9]+(?:\.[0-9]+)?)[\s\S]*?;\s*(?<Query>[^;]*)

请参阅正则表达式演示 细节:

  • Query_time: - 文字串
  • \s* - 任何 0+ 空格
  • (?<Query_time>[0-9]+(?:\.[0-9]+)?) - 组“Query_time”:类似浮点数或整数的数字
  • \s* - 任何 0+ 空格
  • Lock_time: - 文字字符串
  • \s* - 任何 0+ 空格
  • (?<Lock_time>[0-9]+(?:\.[0-9]+)?) - 组“Lock_time”:类似浮点数或整数的数字
  • [\s\S]*? - 任何 0+ 个字符,包括换行符,尽可能少
  • ; - 一个分号
  • \s* - 0+ 空格
  • (?<Query>[^;]*) - 组“查询”:除;之外的任何 0 个或多个字符 .

这是我的,它提取了所有字段:

# fields @message |
parse @message /# Time:\s(?<Time>.*?)\sUser@Host: (?<User>.*)\[.*?\]\s@ \s.(?<Host>.*?). Id: \d*\s# Query_time: (?<Query_time>.*?)\s Lock_time: (?<Lock_time>.*?)\sRows_sent: (?<Rows_sent>.*?)\sRows_examined: (?<Rows_examined>.*?)\s(?<Query>.*)/ 
| sort Query_time desc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM