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