一 背景
在现代应用程序和系统中,日志数据的收集和分析是至关重要的。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源码,希望能找出合理的解决方案。
四 其他注意事项
五 总结
在本文主要介绍了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…