基于Bitnami ELK实例配置AWS集中式日志系统对接CloudWatch日志
如何配置Bitnami ELK实例从AWS CloudWatch获取日志?
好的,我来帮你梳理下实操步骤,让你的Bitnami ELK实例顺利从CloudWatch拉取日志,全程都是可落地的配置:
1. 先搞定AWS侧的IAM权限(关键!)
首先得确保你的ELK实例有权限访问CloudWatch日志服务,强烈建议用IAM角色而非硬编码密钥,更安全也更好维护:
- 登录AWS控制台,进入IAM服务,创建一个新角色,类型选择
EC2 - 给这个角色附加托管策略
CloudWatchLogsReadOnlyAccess(如果需要更细粒度控制,可以自定义策略,包含logs:DescribeLogGroups、logs:GetLogEvents、logs:FilterLogEvents这几个核心动作) - 把这个角色附加到你的Bitnami ELK EC2实例上(在EC2控制台的实例详情里找到“IAM角色”选项,替换成刚创建的角色)
2. 配置Filebeat作为日志采集器(轻量首选)
Bitnami的ELK镜像默认包含Elasticsearch、Logstash和Kibana,但通常不带Filebeat,所以我们需要安装并配置它来拉取CloudWatch日志:
安装Filebeat
登录到你的ELK实例,根据操作系统安装:
- 对于Ubuntu/Debian:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.11.3-amd64.deb sudo dpkg -i filebeat-8.11.3-amd64.deb - 对于CentOS/RHEL:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.11.3-x86_64.rpm sudo rpm -vi filebeat-8.11.3-x86_64.rpm
编辑Filebeat配置文件
打开/etc/filebeat/filebeat.yml,做以下修改:
- 禁用默认的
filestreaminput,添加CloudWatch采集配置:filebeat.inputs: - type: aws-cloudwatch # 替换成你要采集的CloudWatch日志组ARN,可以写多个 log_group_arns: - "arn:aws:logs:us-east-1:123456789012:log-group:your-log-group-name:*" # 替换成你的AWS区域 region: "us-east-1" # 首次采集可以设为beginning,之后会自动记录进度 start_position: beginning - 配置输出到Logstash(推荐,方便后续日志处理):
如果你想直接输出到Elasticsearch,也可以用这个配置(记得替换Bitnami的ES用户名和密码,默认用户名是output.logstash: hosts: ["localhost:5044"]user,密码可以在/opt/bitnami/credentials文件里找到):output.elasticsearch: hosts: ["http://localhost:9200"] username: "user" password: "your-bitnami-es-password"
启动并启用Filebeat
sudo systemctl enable filebeat sudo systemctl start filebeat
3. 配置Logstash处理日志(如果用Filebeat输出到LS)
如果选择把Filebeat的日志发送到Logstash,需要给Logstash添加对应的输入和输出配置:
- 进入Bitnami的Logstash配置目录:
cd /opt/bitnami/logstash/config/conf.d/ - 新建一个配置文件
cloudwatch-pipeline.conf:input { beats { port => 5044 } } filter { # 这里可以加自定义过滤规则,比如解析JSON日志、添加标签等 if [cloudwatch] { mutate { add_field => { "log_source" => "aws_cloudwatch" } } } } output { elasticsearch { hosts => ["http://localhost:9200"] user => "user" password => "your-bitnami-es-password" # 按日期生成索引,方便管理 index => "cloudwatch-logs-%{+YYYY.MM.dd}" } } - 重启Logstash服务:
sudo /opt/bitnami/ctlscript.sh restart logstash
4. 在Kibana中可视化日志
最后一步是在Kibana里配置索引模式,方便查看日志:
- 访问Kibana(默认端口5601,用Bitnami的Kibana用户名和密码登录,同样在
/opt/bitnami/credentials里) - 进入Stack Management > Index Patterns,点击“Create index pattern”
- 输入索引名前缀
cloudwatch-logs-*,点击“Next step” - 选择
@timestamp作为时间字段,点击“Create index pattern” - 现在你可以在Discover里查看CloudWatch日志,也可以在Dashboards里创建自定义可视化面板了
可选:直接用Logstash的CloudWatch输入插件
如果你不想用Filebeat,也可以直接在Logstash里配置CloudWatch输入,只需要在Logstash的配置文件里添加:
input { cloudwatch { log_group => "your-log-group-name" region => "us-east-1" # 用IAM角色的话不需要填access_key_id和secret_access_key start_position => "beginning" } }
之后配置对应的filter和output即可,和上面的Logstash配置类似。
内容的提问来源于stack exchange,提问作者Raino
相关产品推荐
相关产品推荐

