我想知道 CLoudWatchLogs 是否对 1 行日志记录的长度有限制。我检查了CloudWatchLogs 限制文档页面,但他们没有指定任何关于行长度限制的内容。
他们确实提到了Event sizelimit (256 KB) ,这是 1 个事件的最大大小,但这并没有告诉我有关该行长度的任何信息。日志事件可以包含比@message字段更多的信息。
amazon-cloudwatch amazon-cloudwatchlogs aws-cloudwatch-log-insights
我对 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
大家好,我在 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) 我有一个包含 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)
如果我将查询更改为使用 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 的问题在于,随着查询扩展到更大的时间范围/更多的记录,条目的数量会达到数千甚至数万。由于 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
示例日志:
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
fields @timestamp当我在 Cloudwatch“日志见解”查询中使用时,它会向结果表中添加一列,该列的格式设置为我的本地时区,例如2020-07-01T05:52:15.840+10:00.
我不希望它进行本地时区转换,我希望该列以 UTC 时区显示。
如何告诉“log Insights”以 UTC 时区显示日期?
amazon-web-services amazon-cloudwatch aws-cloudwatch-log-insights
我有以下查询,输出如下:
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
我正在尝试为 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
对于我的 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
因此,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,但这似乎很昂贵并且不具体/容易出现错误命中。
aws-cloudwatch-log-insights ×10
amazon-waf ×1
aws-java-sdk ×1
java ×1
logging ×1
spring-boot ×1