Filebeat采集AWS S3作为输入源实战

2023年 10月 15日 195.9k 0

一 背景

在现代应用程序和系统中,日志数据的收集和分析是至关重要的。AWS S3(Amazon Simple Storage Service)是一种高度可扩展的对象存储服务,许多组织选择将其用作存储和备份日志文件的中心存储库。Filebeat是一款轻量级的日志数据传输工具,它可以收集、解析和传输日志数据到其他系统进行进一步的处理和分析。

二 实战配置

2.1 用户配置

在AWS 中创建IAM用户,用于后续Filebeat与AWS S3进行认证

分配权限,在此为了简单直接赋予用户S3全部权限,生成环境仅配置GETBUCKET/GETObject权限;

配置密钥信息


# 记录AK信息及ARN
ARN:arn:aws-cn:iam::357174605294:user/xuelxxxxxxxxxss3

2.2 S3bucket

创建bucket,用于存放日志

存储桶利用ak访问,无需额外配置

获取S3信息,后续用于存储对象存储日志

cn-north-1
Arn:arn:aws-cn:s3:::xuelxxxxxxource

2.3 AWS CLI配置

为了方便测试在filebeat主机上配置ak是否异常,在linux主机安装aws cli

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

配置密钥文件,测试credentials是否正确

aws confiureate
#输入相关信息即可,生成文件存储在 /root/.aws/
[root@elk-host credential_file]# ll /root/.aws/
total 12
-rw------- 1 root root  30 Oct  9 18:24 config
-rw------- 1 root root 202 Oct  9 18:36 credentials
[root@elk-host credential_file]# cat /root/.aws/config
[default]
region = cn-north-1
[root@elk-host credential_file]# cat /root/.aws/credentials
[default]
aws_access_key_id = xxxxxx
aws_secret_access_key = T3xxxxxxxxx
#role_arn = arn:aws-cn:iam::357174605294:user/xuel-fixxxxxxss3
region = cn-north-1

测试cli配置是否正常,在此可以看出可以正常访问S3 Bucket

[root@elk-host credential_file]# aws s3 ls
2023-06-29 17:48:58 codepipeline-cn-north-1-841843736060
2023-06-13 15:09:46 sagemaker-studio-357174605294-b4y9e2pbw4c
2023-06-13 14:06:47 sagemaker-studio-a4y9fizpc06
2023-06-21 16:53:25 xuel-codebuild-target
2023-06-29 17:42:44 xuel-codepipeline-cloudformation
# 如果多个可以配置profile

2.4 Filebeat配置

利用filebeat module管理,开启aws,开启后也是在module.d 下将aws.yml 文件名改为正常,在filebeat.yml 配置中有加载modules.d/*.yml 配置

[root@elk-host credential_file]# cd /etc/filebeat/
[root@elk-host filebeat]# ll
total 3868
drwxr-xr-x 2 root root    4096 Oct 10 09:44 credential_file
-rw-r--r-- 1 root root 3745699 Sep 19 02:08 fields.yml
-rw-r--r-- 1 root root  178706 Sep 19 02:08 filebeat.reference.yml
-rw------- 1 root root    8869 Oct  9 18:12 filebeat.yml
-rw------- 1 root root    8620 Oct  9 16:39 filebeat.yml.bak
drwxr-xr-x 2 root root    4096 Oct 10 09:28 modules.d
[root@elk-host filebeat]# filebeat modules enable aws
Module aws is already enabled

将credentials放在filebeat目录下

# mkdir /etc/filebeat/credential_file
# cp /root/.aws/credentials /etc/filebeat/credential_file
[root@elk-host filebeat]# egrep -v "^#|^[[:space:]].*#|^$" filebeat.yml
filebeat.inputs:
- type: filestream
  id: my-filestream-id
  enabled: true
  paths:
    - /var/log/*.log
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 1
setup.kibana:
output.logstash:
  hosts: ["127.0.0.1:5044"]
processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~
[root@elk-host filebeat]# egrep -v "^#|^[[:space:]].*#|^$" modules.d/aws.yml
- module: aws
  cloudtrail:
    enabled: false
  cloudwatch:
    enabled: false
  ec2:
    enabled: false
  elb:
    enabled: false
  s3access:
    enabled: true
    var.bucket_arn: 'arn:aws-cn:s3:::xuel-exxxxxurce'
    var.bucket_list_interval: 300s
    var.number_of_workers: 5
    var.shared_credential_file: /etc/filebeat/credential_file/credentials
  vpcflow:
    enabled: false

创建完成后启动filebeat进行测试。

三 测试

测试上传日志文件到bucket中,

重启filebeat查看日志。

# 查看日志
[root@elk-host filebeat]# journalctl -fu filebeat

在kibana中查看

虽然社区给出了filebeat支持基于S3协议的通用解决方案,但是测试mino可以正常,云厂商由于封装了对象存储接口,部分认证功能异常,目前正在debug filebeat源码,希望能找出合理的解决方案。

四 其他注意事项

  • 安全性:确保您的AWS凭证(访问密钥和密钥ID)妥善保管,并遵循AWS的最佳安全实践。不要将凭证明文保存在Filebeat配置文件中,而是使用安全的配置管理机制,如环境变量或密钥管理服务。
  • 访问权限:确保您的AWS账户具有足够的权限来访问和管理目标S3存储桶中的日志文件。根据需要,调整S3存储桶的访问策略和IAM用户/角色的权限。
  • 日志文件的结构和格式:Filebeat假定日志文件具有特定的结构和格式。确保您的日志文件按照Filebeat所期望的格式进行编写。如果需要,可以使用Filebeat的日志解析规则(如grok模式)来自定义日志解析过程。
  • 监控和错误处理:定期监控Filebeat的运行状态,包括日志文件的收集和传输情况。注意观察任何错误或异常情况,并及时采取适当的措施进行故障排除和修复。
  • 性能和扩展性:根据实际需求和预期的日志数据量,调整Filebeat的性能参数,如事件队列大小、工作线程数等。确保Filebeat能够处理您的目标负载,并具备足够的扩展性来应对未来的增长。
  • 目标系统的配置:在Filebeat将日志数据传输到目标系统(如Elasticsearch、Logstash等)之前,确保目标系统已正确配置和准备好接收和处理Filebeat传输的日志数据。根据需要,配置目标系统的索引模式、过滤器、仪表板等。
  • 五 总结

    在本文主要介绍了filebeat采集AWS S3作为输入源。通过将Filebeat与AWS S3集成,您可以方便地收集和传输存储在S3存储桶中的日志数据,为后续的处理和分析打下了坚实的基础。使用Filebeat作为轻量级的日志传输工具,您可以轻松配置和管理日志数据的收集和传输过程。通过配置Filebeat的输入源为AWS S3存储桶,并指定适当的访问凭证,Filebeat能够自动监视S3存储桶中的日志文件,并将其传输到目标系统进行进一步处理和分析。

    集成AWS S3作为输入源具有许多优势。首先,S3是高度可扩展的对象存储服务,能够容纳大规模的日志数据。其次,S3提供了高可靠性和持久性,确保您的日志数据安全存储。此外,使用AWS S3还可以利用其生态系统中的其他服务和工具,如AWS Glue、Athena等,进行更深入的数据分析和挖掘。

    通过本文所介绍的步骤,您可以轻松地配置和启动Filebeat,开始采集AWS S3存储桶中的日志数据。随后,您可以将日志数据传输到目标系统,如Elasticsearch、Logstash等,以进行搜索、分析和可视化。使用Filebeat采集AWS S3作为输入源,可以帮助您实现日志的集中化管理和分析,为您的应用程序和系统提供更好的可视化和监控能力,从而提升运维效率和故障排除能力。希望本文对您有所帮助,并能够成功实施ELFK部署,实现高效的日志管理和分析。

    参考链接

    • www.elastic.co/guide/en/be…

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论