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

基于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,做以下修改:

  1. 禁用默认的filestream input,添加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
    
  2. 配置输出到Logstash(推荐,方便后续日志处理):
    output.logstash:
      hosts: ["localhost:5044"]
    
    如果你想直接输出到Elasticsearch,也可以用这个配置(记得替换Bitnami的ES用户名和密码,默认用户名是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里配置索引模式,方便查看日志:

  1. 访问Kibana(默认端口5601,用Bitnami的Kibana用户名和密码登录,同样在/opt/bitnami/credentials里)
  2. 进入Stack Management > Index Patterns,点击“Create index pattern”
  3. 输入索引名前缀cloudwatch-logs-*,点击“Next step”
  4. 选择@timestamp作为时间字段,点击“Create index pattern”
  5. 现在你可以在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:21:06