标签: aws-cloudwatch-log-insights

CloudWatchLogs 行长度限制

我想知道 CLoudWatchLogs 是否对 1 行日志记录的长度有限制。我检查了CloudWatchLogs 限制文档页面,但他们没有指定任何关于行长度限制的内容。

他们确实提到了Event sizelimit (256 KB) ,这是 1 个事件的最大大小,但这并没有告诉我有关该行长度的任何信息。日志事件可以包含比@message字段更多的信息。

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

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

如果一个日志具有特定消息,如何显示日志流中的所有 CloudWatch 日志?

我对 AWS CloudWatch 日志查询语法很陌生,正在寻找解决我的问题的方法。

我想提出适当的 CloudWatch 查询,如果一个日志包含一个唯一值,它将显示来自特定日志流的所有日志。看起来像是根据前一个的结果执行 1 个查询。

第一个看起来像:

fields @message, @logStream 
| filter @message like /UNIQUE_VALUE/
Run Code Online (Sandbox Code Playgroud)

它产生以下形式的结果:

#  @message      @logStream
1  UNIQUE_VALUE  log_stream/1a23c4
Run Code Online (Sandbox Code Playgroud)

最后一个查询:

fields @message
| filter @logStream like "log-stream/1a23c4"
| sort asc
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想让它成为参数化的 CloudWatch 查询 - 我输入 UNIQUE_VALUE 并接收last query的输出。

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

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

在控制器建议中获取控制器名称和java服务路径

大家好,我在 Spring Boot 应用程序中创建了一个全局异常处理程序,并在下面的代码中写入了 AWS cloudwatch 中发生的异常,工作正常我能够在 cloudwatch 中写入异常,但挑战是我无法获取 Restcontroller 名称和服务路径从发生特定异常的地方。

示例 Java 服务

@GetMapping(value = "DynamoDb/deleteTable")
public String deleteTable(@RequestParam String TableName) throws InterruptedException {
     Table table = dynamoDB.getTable(TableName);
        try {
            table.delete();
            table.waitForDelete();
        } catch (Exception e) {
            throw e;
        }
        return "Success";
    }
Run Code Online (Sandbox Code Playgroud)

当发生异常时,它将控制权转移到controlleradvice全局异常处理程序

这是我的代码

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.cloudwatchlogs.CloudWatchLogsClient;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogStreamsRequest;
import software.amazon.awssdk.services.cloudwatchlogs.model.DescribeLogStreamsResponse;
import software.amazon.awssdk.services.cloudwatchlogs.model.InputLogEvent;
import software.amazon.awssdk.services.cloudwatchlogs.model.PutLogEventsRequest;

import java.util.Arrays;

@ControllerAdvice
public class ExceptionControllerAdvice {
    @ExceptionHandler(Exception.class)
    public ResponseEntity<ErrorResponse> exceptionHandler(Exception ex) {
        ErrorResponse …
Run Code Online (Sandbox Code Playgroud)

java spring-boot aws-java-sdk aws-cloudwatch-log-insights

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

CloudWatch Insights 查询 - 如何从计数中获取单个计数

我有一个包含 playerId 值的日志文件,一些玩家在文件中有多个条目。我想获得唯一玩家的确切不同计数,无论他们在日志文件中是否有 1 个或多个条目。

使用下面的查询,它会扫描 497 条记录并找到 346 条唯一行(346 是我想要的数字) 查询:

fields @timestamp, @message
| sort @timestamp desc
| filter @message like /(playerId)/ 
| parse @message "\"playerId\": \"*\"" as playerId
| stats count(playerId) as CT by playerId
Run Code Online (Sandbox Code Playgroud)

497 条记录 346 行

如果我将查询更改为使用 count_distinct,我就会得到我想要的。下面的例子:

fields @timestamp, @message
| sort @timestamp desc
| filter @message like /(playerId)/ 
| parse @message "\"playerId\": \"*\"" as playerId
| stats count_distinct(playerId) as CT 
Run Code Online (Sandbox Code Playgroud)

使用 count_distinct 函数

然而,count_distinct 的问题在于,随着查询扩展到更大的时间范围/更多的记录,条目的数量会达到数千甚至数万。由于 Insights count_distinct 行为的性质,当数字变为近似值时,这会带来一个问题......

“返回字段唯一值的数量。如果该字段具有非常高的基数(包含许多唯一值),则 count_distinct 返回的值只是一个近似值。”。

文档:https : //docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html

这是不可接受的,因为我需要确切的数字。稍微玩一下查询,并坚持使用 count(),而不是 count_distinct() 我相信这是答案,但是我无法得出一个数字......不起作用的例子......任何想法? …

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

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

Cloudwatch Insights 在多行日志中搜索

示例日志:

REQUEST-ID:123 Video id=444
REQUEST-ID:123 Request=error
REQUEST-ID:534 Video id=555
REQUEST-ID:534 Request=ok
Run Code Online (Sandbox Code Playgroud)

问题,如何找到所有有错误请求的视频ID?

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

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

AWS Log Insights:指定@timestamp字段输出格式/时区?

fields @timestamp当我在 Cloudwatch“日志见解”查询中使用时,它会向结果表中添加一列,该列的格式设置为我的本地时区,例如2020-07-01T05:52:15.840+10:00.

我不希望它进行本地时区转换,我希望该列以 UTC 时区显示。

如何告诉“log Insights”以 UTC 时区显示日期?

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

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

Cloudwatch Logs Insights 处理多个@messages

我有以下查询,输出如下:

Query:
filter @message like /A:|B:/ 

Output:
[INFO] 2020-07-28T09:20:48.406Z requestid A: [{'Delivery': OK, 'Entry': 12323 }]
[INFO] 2020-07-28T09:20:48.407Z requestid B: {'MyValue':0}
Run Code Online (Sandbox Code Playgroud)

我想打印ONLY的乙消息中,当一个消息“myvalue的” = 0。对于上面的例子,我必须有以下输出

Output:
[INFO] 2020-07-28T09:20:48.406Z requestid A: [{'Delivery': OK, 'Entry': 12323 }]
Run Code Online (Sandbox Code Playgroud)

对于下一个示例

[INFO] 2020-07-28T09:20:48.406Z requestid A: [{'Delivery': OK, 'Entry': 12323 }]
[INFO] 2020-07-28T09:20:48.407Z requestid B: {'MyValue':12}
Run Code Online (Sandbox Code Playgroud)

输出应该是空的

我不能做这样的事情,因为我想念 A 消息:

filter @message like /A:|B:/ 
filter MyValue = 0
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

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

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

CloudWatch Insights 按日期

我正在尝试为 Amazon Connect 创建一个 CloudWatch Insights 查询,该查询将按日期提供呼叫计数。我可以按日期获取日志消息的数量,但是,我只需要计算唯一的 ContactId。我的查询有许多重复的 ContactId,因为每次 Connect 记录到 CloudWatch 时,它都会使用 ContactId 将与联系人相关的所有事件绑定在一起。有没有办法修改此查询以仅显示唯一 ContactId 的计数?

filter @message like /ContactId/
| stats count(*) as callCount by toMillis(datefloor(1d))
| sort callCount desc
Run Code Online (Sandbox Code Playgroud)

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

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

如何使用 aws cloudwatch log Insights 查询搜索日志中的多个字符串?

对于我的 aws 日志组,我想编写一个 cloudwatch log insgights 查询来搜索日志中的多个字符串。我尝试过这样的事情:

fields @timestamp, @message, @logStream
| filter @message like /(?i)\$\{jndi/
| filter @message like /(?i)\$\{\$\{lower\:j/
| sort @timestamp desc
Run Code Online (Sandbox Code Playgroud)

但是,它只搜索第一个过滤器 /(?i)${jndi/ 。它不搜索第二个过滤器。有人可以帮助我了解如何使用一个查询搜索多个字符串吗?

我在 aws 文档和互联网上找不到任何示例

谢谢你的帮助。

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

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

在 CloudWatch Insight 中搜索 WAF 日志的键/值对

因此,AWS Cloudfront WAF 日志将发送到 AWS Cloud Insights。如何搜索 httpRequest 数组的键/值对的随机放置?

示例日志如下所示:

httpRequest.headers.0.name  host
httpRequest.headers.0.value www.somedomain.com
httpRequest.headers.1.name  cache-control
httpRequest.headers.1.value no-cache
httpRequest.headers.2.name  pragma
httpRequest.headers.2.value no-cache
httpRequest.headers.3.name  accept
httpRequest.headers.3.value */*
httpRequest.headers.4.name  accept-encoding
httpRequest.headers.4.value gzip, deflate
httpRequest.headers.5.name  from
httpRequest.headers.5.value bingbot(at)microsoft.com
httpRequest.headers.6.name  user-agent
httpRequest.headers.6.value Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
Run Code Online (Sandbox Code Playgroud)

因此,一个具有 2 个哈希值的 JSON 数组。该数组中的顺序是随机的。有时用户代理将在 1 或 3 或 X 中。如何搜索与“用户代理”的“名称”字段的值相对应的“值”字段的值?即:我想搜索“bingbot”,但让它特定于匹配“用户代理”。我知道我可以对 @message for 进行过滤bingbot,但这似乎很昂贵并且不具体/容易出现错误命中。

amazon-waf aws-cloudwatch-log-insights

4
推荐指数
1
解决办法
1915
查看次数