You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效监控AWS栈多LogGroup下的Laravel/PHP错误并自动告警?

多CloudWatch LogGroup统一错误告警实现方案

核心逻辑

无需为每个LogGroup单独创建告警规则,通过CloudWatch Logs订阅过滤器 + 公共处理Lambda + SNS主题实现全量LogGroup的错误监控告警,完全规避LogInsight多LogGroup查询限制。

实现步骤

1. 定义错误匹配规则

针对你给出的PHP/API错误日志特征,订阅过滤器直接使用如下过滤模式,覆盖所有ERROR日志和Exception异常场景:

"?ERROR?" "Exception"

2. 实现全量LogGroup自动绑定订阅规则

  • 开发公共配置Lambda:调用CloudWatch Logs OpenAPI,为所有符合业务命名规则(可匹配你CloudFormation生成的LogGroup统一前缀)的存量LogGroup批量绑定订阅过滤器,所有匹配到的错误日志统一推送到后续的告警处理Lambda。
  • 配置EventBridge触发规则:监听CloudTrail的CreateLogGroup事件,只要有新LogGroup创建就自动触发上述公共配置Lambda,为新LogGroup自动绑定订阅规则,无需人工介入适配CloudFormation批量部署场景。

3. 开发告警处理Lambda

Lambda的核心处理逻辑如下:

  • 接收订阅过滤器推送的压缩日志数据,完成解压、解码操作
  • 提取日志对应的LogGroup名称、日志产生时间、错误详情三个核心字段
  • 拼装标准化告警内容,示例如下:

【CloudWatch业务错误告警】
关联LogGroup:/aws/lambda/xxx-prod-user-service
错误时间:2021-11-24T13:03:48.075879+00:00
错误内容:[2021-11-24T13:03:48.075879+00:00] technical.ERROR: TYPE: Trzproject\Trzutils\Exceptions\InvalidJWTException MESSAGE: Provided JWT has since expired, as defined by the "exp" claim FILE: /var/task/vendor/trzproject/trzcore/src/Trzutils/JWT/JWTService.php LINE: 64

  • 把告警内容推送到预先创建的SNS主题,也可以直接调用Slack Webhook完成推送。

4. 配置多渠道告警分发

  • 邮件告警:直接为SNS主题绑定目标邮箱地址,验证通过后即可接收告警
  • Slack告警:可在SNS主题下绑定Slack转发Lambda,也可以直接在告警处理Lambda中调用Slack应用的入站Webhook完成推送。

可选优化项

  • 可在告警处理Lambda中加入错误去重逻辑,同一LogGroup下同一类型错误1分钟内只推送1次,避免告警轰炸
  • 可根据LogGroup前缀区分不同客户/业务线,告警内容中自动标注业务线信息,方便快速定位问题
  • 订阅过滤器可通过排除关键词过滤掉不需要告警的已知错误,进一步减少不必要的告警推送

内容的提问来源于stack exchange,提问作者Mitsukk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:45:08