在添加堆栈时自动从堆栈转发 CW 日志



我想将CloudWatch日志从各种SAM堆栈/lambdas转发(可能转发到Kinesis,然后再转发(到Graylog EC2实例。重点是,我还想从稍后部署的堆栈中自动添加日志。

如何自动将新的CW lambda日志组添加到以Graylog结尾的流中?或者——一旦日志组出现在CloudWatch中,我如何自动部署对它们的订阅?

谢谢。

您需要自定义的解决方案。一种方法是为响应CREATE_COMPLETE的CloudFormation事件设置CloudWatch事件规则。

该事件将触发一个lambda函数,您必须对该函数进行编程,以创建具有订阅的所需CloudWatch组。

我是在Marcin的回应基础上构建的。最终的解决方案看起来相当复杂,但一旦完成就可以了。

需要在此处提供几个CloudFormation资源:

  • Graylog使用的Kinesis流作为输入
  • 一个允许CloudWatch将日志放入Kinesis流的角色
  • 允许Graylog EC2实例访问Kinesis流的角色和实例配置文件
  • Graylog使用DynamoDB表作为元数据存储
  • 负责CloudWatch日志组发现和订阅管理的lambda
  • 发现lambda日志组
  • EventBridge规则:
    • 每小时日志组发现lambda触发器
    • 在CloudFront堆栈发生更改时调用日志组发现lambda的触发器
  • 每个规则的日志组发现lambda调用权限

我还需要手动执行一些手动步骤(我们的环境不是基于CloudFormation的(:

  1. 将生成的实例配置文件作为角色添加到每个Graylog EC2实例中
  2. 在所有Graylog EC2实例上安装graylog-integrations-plugins包,并重新启动各自的graylog-server服务
  3. 创建一个新的AWS Kinesis/CloudWatchGraylog输入,并将其指向此堆栈创建的Kinesis流
  4. 为以下服务创建VPC端点,使Graylog无需通过互联网调用AWS API(成本高昂(:
    • DynamoDB网关
    • CloudWatch日志界面
    • CloudWatch监控界面
    • Kinesis流接口

最新更新