gpt4 book ai didi

aws-lambda - 警报通知中可用的 AWS Cloudwatch 日志过滤参数

转载 作者:行者123 更新时间:2023-12-01 06:01:33 26 4
gpt4 key购买 nike

我正在使用 Cloudwatch 和 Lambda 来监控日志。
我设置了一些过滤器,当日志中出现特定类型的错误时会触发这些过滤器。
是否可以在 Cloudwatch 警报 SNS 上发送在日志中过滤的参数?

例如:

接收错误:

[2017-06-29 17:58:52] prod.ERROR: ErrorException: Undefined variable: message X



公制过滤器:

[date,info="*.ERROR:",error]



警报:

IS OK when <= 0



通知发送到 SNS 和 Lambda 以触发不同的通知代理。

SNS 事件给了我这条消息,但我想访问过滤后的变量:
{
"AlarmName": "PHP_ERROR",
"AlarmDescription": null,
"AWSAccountId": "xxxxxxxxx",
"NewStateValue": "OK",
"NewStateReason": "Threshold Crossed: no datapoints were received for 1 period and 1 missing datapoint was treated as [NonBreaching]",
"StateChangeTime": "2017-06-29T17:09:12.336+0000",
"Region": "EU - Ireland",
"OldStateValue": "ALARM",
"Trigger": {
"MetricName": "PHP_ERROR",
"Namespace": "Logs",
"StatisticType": "Statistic",
"Statistic": "SUM",
"Unit": null,
"Dimensions": [],
"Period": 60,
"EvaluationPeriods": 1,
"ComparisonOperator": "GreaterThanOrEqualToThreshold",
"Threshold": 0,
"TreatMissingData": "- TreatMissingData: NonBreaching",
"EvaluateLowSampleCountPercentile": ""
}
}

谢谢,

最佳答案

不幸的是alarm只是看着metric来评估阈值。所以简短的回答是 :(

然后,您有另一个抽象级别,因为 metric已经从 filter 的特定值设置.

filter 是唯一可以找到提取值的地方,但它只会将匹配项转换为度量值(即:数字)的值或增量,它不能用作已解析的日志存储。

AWS 最近发布 Cloudwatch Log Insights这可能会帮助您找到错误消息。

否则,您可以尝试 AWS CLI filter for logs command ,它允许您浏览日志。

Ubuntu 中的示例

export YOUR_LOG_GROUP_NAME=SomeLogGroup

# The 1000 multiplication is to convert from seconds to milliseconds
# If you already have a specific timestamp, just replace it on the start-time argument
aws logs filter-log-events --log-group-name $YOUR_LOG_GROUP_NAME \
--start-time $(($(date +%s --date="1 minute ago") * 1000)) \
--interleaved --filter-pattern ".ERROR" \
--output=text --query events[*].[message]

OSx 中的示例
export YOUR_LOG_GROUP_NAME=SomeLogGroup

# The 1000 multiplication is to convert from seconds to milliseconds
# If you already have a specific timestamp, just replace it on the start-time argument
aws logs filter-log-events --log-group-name $YOUR_LOG_GROUP_NAME \
--start-time $(($(date -v-1M +%s) * 1000)) \
--interleaved --filter-pattern ".ERROR" \
--output=text --query events[*].[message]

如果你想自动化它,你可以替换触发器操作,调用一个 lambda(使用一些 AWS 开发工具包而不是 CLI),它能够使用此信息为 SNS 生成所需的消息。

IE:
  • 来自:Metric -> Alarm -> SNS
  • 至:Metric -> Alarm -> Lambda -> SNS
  • 关于aws-lambda - 警报通知中可用的 AWS Cloudwatch 日志过滤参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44831659/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com