标签: aws-cloudwatch-log-insights

在 CloudWatch Insights 中,如何过滤掉没有解析值的日志条目?

假设我有以下 Insights 查询

fields @timestamp, @message
| parse @message 'status=*" as status
| display @timestamp, status, @message
Run Code Online (Sandbox Code Playgroud)

有些日志消息没有状态。我想把这些过滤掉。我怎么做?

amazon-cloudwatch aws-cloudwatch-log-insights

6
推荐指数
1
解决办法
8518
查看次数

CloudWatch Log Insights 中的多方面时间序列可视化

我正在尝试在 CloudWatch Log Insights 中创建多方面的时间序列图。

我可以创建一个不是时间序列的多方面查询,并且我可以创建一个非方面时间序列查询,但我似乎无法同时执行这两项操作。

例如:我可以执行如下所示的查询:

fields @timestamp, someField1, @message
| stats count(*) by someField1, someField2
Run Code Online (Sandbox Code Playgroud)

这将为我提供一个按 someField1 和 someField2 细分的结果表。我还可以这样做:

fields @timestamp, someField1, @message
| stats count(*) by bin(1h)
Run Code Online (Sandbox Code Playgroud)

这会给我一个时间序列图。

但是,我无法弄清楚如何将两者结合起来,以便我得到一个带有多条线的时间序列图。

这在 AWS CloudWatch 日志中是否不可用,或者是否有我还没有找到的方法?

amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights

6
推荐指数
0
解决办法
2987
查看次数

如何在 Amazon Cloudwatch Insights 中筛选子查询

您能否在 Cloudwatch Insights 中使用子查询运行过滤器?我想获取 requestID 并找到与其相关的所有日志。我可以单独运行查询,但正在尝试做一个。

像这样的东西:

filter @requestId in (filter @message like /Id 26313/ fields @requestId sort @timestamp desc limit 1)
| fields @message
| sort @timestamp desc
Run Code Online (Sandbox Code Playgroud)

aws-cloudwatch-log-insights

6
推荐指数
1
解决办法
2714
查看次数

AWS CloudWatch Insights - 简单三元 IF 或一些类似函数

考虑到我的日志中有许多带有时间测量的属性。我想计算它们每个都比我的超时限制大多少次,例如 10 秒。

我目前能够多次运行非常类似的查询,如下所示:

fields context
| filter context.time_to_prepare > 10
| count(*) as count_slow_time_to_prepare by bin(10m)
Run Code Online (Sandbox Code Playgroud)
fields context
| filter context.time_to_shine > 10
| count(*) as count_slow_time_to_shine by bin(10m)
Run Code Online (Sandbox Code Playgroud)

.. 每个属性一次查询

如果我们可以在同一个查询中提取所有这些指标,那么绘制图表会更好、更容易。为此,所缺少的只是一些三元运算符或类似的东西。

我希望这样的事情会起作用:

fields context
| filter context.total_time > 0
| stats sum(if(context.time_to_prepare > 10,1,0)) as slow_time_to_prepare,
|       sum(if(context.time_to_shine   > 10,1,0)) as slow_time_to_shine  ,
# .. one row for each attribute
|       sum(if(context.time_to_move    > 10,1,0)) as slow_time_to_move   by bin(10m)
Run Code Online (Sandbox Code Playgroud)

但这没有用。“if”函数不存在。

那么,有没有办法制作三元if呢?

amazon-cloudwatch aws-cloudwatch-log-insights

5
推荐指数
1
解决办法
5783
查看次数

在 Amazon Cloudwatch Insights 中,如何获取统计数据的统计数据?

我正在使用 AWS Cloudwatch Insights 并运行如下查询:

fields @message, @timestamp
| filter strcontains(@message, "Something of interest happened")
| stats count() as interestCount by bin(10m) as tenMinuteTime
| stats max(interestCount) by datefloor(tenMinuteTime, 1d)
Run Code Online (Sandbox Code Playgroud)

但是,在最后一行,我收到以下错误:

mismatched input 'stats' expecting {K_PARSE, K_SEARCH, K_FIELDS, K_DISPLAY, K_FILTER, K_SORT, K_ORDER, K_HEAD, K_LIMIT, K_TAIL}
Run Code Online (Sandbox Code Playgroud)

这似乎意味着我无法在 Insights 中进行多层统计查询,因此无法获取统计数据的统计数据。有没有解决的办法?

amazon-cloudwatch aws-cloudwatch-log-insights

5
推荐指数
1
解决办法
8469
查看次数

CloudWatch Insights 查询:格式化日期时间字符串以进行分组

我有 json 格式的 CloudWatch 日志,其条目类似于以下内容:

{
    "message": "resource_liked",
    "context": {
        "date": {
            "date": "2021-05-07 16:52:11.000000",
            "timezone_type": 3,
            "timezone": "UTC"
        },
    ...
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个 CloudWatch Insights 查询来制作一个简单的直方图:每小时日志中的事件数。

但是,我无法使用@timestamp日志条目的属性。我需要context.date.date在条目的消息正文中使用。

使用以下命令编写此查询@timestamp非常简单:

stats count(*) by datefloor(@timestamp, 1h)
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何使用该消息context.date.date

我认为我需要将日期时间格式化2021-05-07 16:52:11.000000为 aws 理解的日期时间,但我找不到如何操作。


到目前为止我尝试过的

stats count(*) by datefloor(context.date.date, 1h)->“无效日期”

stats count(*) by datefloor(toMillis(context.date.date), 1h)->“无效日期”

stats count(*) by datefloor(substr(context.date.date, 0, 19), 1h)->“无效日期”

stats count(*) by datefloor(concat(replace(substr(context.date.date, 0, 23), ' ', 'T'), '-00:00'), 1h)-> …

amazon-web-services amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights

5
推荐指数
2
解决办法
2万
查看次数

如何从 AWS Cloudwatch Logs Insights 中的组合聚合 bin 数据获取统计信息

我有一些 AWS CloudWatch 日志,每 5 秒输出一次值。我想获取滚动 10 分钟间隔内的最大值,然后根据该值获取每天的平均值。使用 CloudWatch Logs Insights QuerySyntaxbin我似乎无法获得在后续中使用的第一个聚合的结果bin。我试过:

fields @timestamp, @message
| filter @LogStream like /mylog/
| parse @message '*' as threadCount
| stats max(threadCount) by bin(600s) as maxThreadCount
| stats avg(maxThreadCount) by bin(24h) as avgThreadCount
Run Code Online (Sandbox Code Playgroud)

stats但查询语法对多个函数无效。将最后两行合并为一行:

| stats avg(max(threadCount) by bin(600s)) by bin(24h) as threadCountAvg
Run Code Online (Sandbox Code Playgroud)

亦无效。我似乎在 AWS 日志中找不到太多信息。我运气不好吗?有人知道窍门吗?

amazon-cloudwatch aws-cloudwatch-log-insights

5
推荐指数
0
解决办法
1535
查看次数

Amazon EKS AccessDeniedException 上的容器见解

我正在尝试将 Container Insight 添加到我的 EKS 集群,但在部署时遇到了一些问题。根据我的日志,我得到以下信息:

[error] [output:cloudwatch_logs:cloudwatch_logs.2] CreateLogGroup API responded with error='AccessDeniedException'
[error] [output:cloudwatch_logs:cloudwatch_logs.2] Failed to create log group 
Run Code Online (Sandbox Code Playgroud)

奇怪的是,它所假设的角色似乎与我的 EC2 工作节点中的角色相同,而不是我创建的服务帐户的角色。我正在创建服务帐户,并且可以使用以下命令在 AWS 中成功查看它:

eksctl create iamserviceaccount --region ${env:AWS_DEFAULT_REGION} --name cloudwatch-agent --namespace amazon-cloudwatch --cluster ${env:CLUSTER_NAME} --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy --override-existing-serviceaccounts --approve
Run Code Online (Sandbox Code Playgroud)

尽管服务帐户已成功创建,但我仍然收到 AccessDeniedException。

我发现的一件事是,当我手动将 CloudWatchAgentServerPolicy 添加到工作节点时,日志工作正常,但这不是我想要的实现,而是宁愿采用自动方式添加服务帐户,而不是直接接触工作节点,如果可能的。我所遵循的步骤可以在本文档的底部找到

非常感谢!

amazon-web-services amazon-cloudwatch kubernetes amazon-eks aws-cloudwatch-log-insights

5
推荐指数
1
解决办法
2498
查看次数

设置我在 Log Insights 中查看 AWS Cloudwatch 时间戳的方式

有没有办法以更友好的格式显示 CloudWatch 中的时间戳?如果我们进行一个超级简单的查询:

fields @timestamp, @message
| sort @timestamp desc
| limit 200
Run Code Online (Sandbox Code Playgroud)

我得到标准的 @timestamp 列来显示:

2022-03-15T13:38:15.567+00:00
Run Code Online (Sandbox Code Playgroud)

我可以有一些简单的东西吗:

13:38:15
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights

5
推荐指数
1
解决办法
1万
查看次数

AWS Cloudwatch 多区域日志见解

我正在使用 AWS Cloudwatch Logs Insights 来查询日志组。现在我将应用程序实施到了附加区域。是否可以同时查询多个区域的日志组?谢谢

amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights

5
推荐指数
0
解决办法
359
查看次数