Amazon web services 如何在insights查询中按值拆分Cloudwatch字段

Amazon web services 如何在insights查询中按值拆分Cloudwatch字段,amazon-web-services,amazon-cloudwatch,aws-cloudwatch-log-insights,Amazon Web Services,Amazon Cloudwatch,Aws Cloudwatch Log Insights,我试图创建一个AWS仪表板可视化,显示一段时间内缓存命中与未命中的计数。为此,我正在设置一个logtype仪表板,其中包含对日志的insights查询。为了尽可能简单,我的日志是: {“cache.hit”,true}或{“cache.hit”,false} 我想让我的仪表板在同一个图表上跟踪这两种可能性,但似乎我不能不将日志分成不同的行来记录这些值。例如,如果我的日志只是: {“cache.hit.true”、true}或{“cache.hit.false”、true},然后我可以在仪表板中创

我试图创建一个AWS仪表板可视化,显示一段时间内缓存命中与未命中的计数。为此,我正在设置一个
log
type仪表板,其中包含对日志的insights查询。为了尽可能简单,我的日志是:

{“cache.hit”,true}
{“cache.hit”,false}

我想让我的仪表板在同一个图表上跟踪这两种可能性,但似乎我不能不将日志分成不同的行来记录这些值。例如,如果我的日志只是:

{“cache.hit.true”、true}
{“cache.hit.false”、true}
,然后我可以在仪表板中创建两个单独的图形来独立跟踪这些值,但这并不是很干净

为了让它们在一个破折号上,我尝试了这个方法,但它所做的只是显示两个字段,两个显示字段的值都是相同的,而它们绝对不应该是:

fields @timestamp, @message, cache.hit as cache_hits
| filter cache_hits IN [0, 1]
| display cache_hits = 0 as in_cache_false
| display cache_hits = 1 as in_cache_true
| stat count (in_cache_true), count(in_cache_false) by bin(30s)
| sort @timestamp desc
| limit 20

下面的查询提取缓存命中和缓存未命中,然后计算缓存命中百分比

fields @timestamp, @message
| filter @message like /cache.hit/
| fields strcontains(@message, "true") as @CacheHit,
         strcontains(@message, "false") as @CacheMiss
| stats sum(@CacheHit) as CacheHits, sum(@CacheMiss) as CacheMisses, sum(@CacheHit) / (sum(@CacheMiss) + sum(@CacheHit)) * 100 as HitPercentage by bin(30s)
| sort @timestamp desc

这看起来很棒!如果我的@message在json中除了一个日志字段(例如
{“cache.hit”:true,“gateway.alive”:true}
)之外还包含一些其他日志字段,那么我如何仅为
cache.hit
部分提取true和false呢?您可以将完整的json字段
“cache.hit”:true
放在
strcontains
方法中。