kan*_*ane 12 amazon-cloudwatch aws-cloudwatch-log-insights
假设您有带有某些事务 ID 和时间戳的日志
12:00: transactionID1 handled by funcX
12:01: transactionID2 handled by funcX
12:03: transactionID2 handled by funcY
12:04: transactionID1 handled by funcY
Run Code Online (Sandbox Code Playgroud)
我想获取同一事件的两个日志之间的时间并聚合(例如总和、平均值)时间差。
例如,对于 transactionID1,时间差异将为 (12:04 - 12:01) 3 分钟,对于 transactionID2,时间差异将为 (12:03 - 12:02) 1 分钟。然后我想取所有这些时间差的平均值,即 (3+1)/2 或 2 分钟。
有办法吗?
单独使用 CloudWatch 似乎不可能实现这一点。我不知道你的日志来自哪里,例如EC2、Lambda函数。您可以做的是使用 AWS SDK 创建自定义指标。
如果日志是由同一进程写入的,您可以在内存中保留 和transactionID的映射startTime,并使用 为维度创建自定义指标transactionID,并使用 计算指标值startTime。如果日志来自不同的进程,例如 Lambda 函数调用,那么您可以使用 DynamoDB 来存储startTime.
如果事务是独立的,您还可以为每个事务创建自定义指标并使用 CloudWatch DIFF_TIME,它将为每个事务创建一个包含值的计算指标。
借助 CloudWatch,AVG应该可以计算平均持续时间。
就我个人而言,我使用第一种方法来计算 Lambda 函数和其他服务的持续时间。
| 归档时间: |
|
| 查看次数: |
3447 次 |
| 最近记录: |