一 背景
随着云计算和大数据技术的快速发展,越来越多的组织和企业选择将数据存储在云端的对象存储服务中。对象存储服务提供了高可靠性、可扩展性和低成本的存储解决方案,因此成为了许多应用场景的首选。
S3(Simple Storage Service)是亚马逊AWS提供的一种对象存储服务,许多云厂商也提供了与S3类似的存储服务。S3协议定义了一套用于访问和管理存储在对象存储中的数据的API接口,使得开发者可以方便地存储、检索和管理大规模数据。
Filebeat是Elasticsearch家族中的一员,是一款轻量级的日志数据收集器。它可以监控指定的日志文件、日志目录或者标准输入,并将日志数据发送到指定的输出目的地,如Elasticsearch、Logstash等。Filebeat的设计目标是简单易用、占用资源少且高效。
结合Filebeat和S3协议,可以实现从基于S3协议的对象存储中采集数据作为Filebeat的输入源。这种架构具有很高的灵活性和可扩展性,可以满足各种场景下的数据采集需求。
通过配置Filebeat,可以指定要监控的S3桶和对象的位置信息,Filebeat将定期轮询S3桶,获取新的或更新的对象,并将其作为日志数据发送到指定的输出目的地。这样,我们就可以将存储在S3中的数据集成到日志分析和监控系统中,进行实时的数据分析和可视化展示,以及其他相关的数据处理和应用。通过利用Filebeat和S3协议,我们可以轻松地实现从基于S3协议的对象存储中采集数据作为输入源的方案,为日志数据的收集和处理提供了一种简单而灵活的解决方案。这种集成架构可以支持大规模的数据采集和处理,并且具有高可靠性和高性能的特点。 腾讯COS是腾讯云提供的分布式对象存储服务,可以存储和访问海量的非结构化数据。它提供了全球部署的存储桶(Bucket)机制,用户可以在不同的地域创建存储桶,将数据存储在离用户最近的地方,提供更低的访问延迟和更好的用户体验。腾讯COS还提供了数据冗余机制,确保数据的可靠性和持久性。华为云OBS是华为云提供的分布式对象存储服务,具有高可靠性和高扩展性。它采用多副本数据冗余和自动容灾机制,保证数据的安全和可靠性。华为云OBS还提供了全球统一的命名空间,用户可以通过统一的API接口访问全球各地的数据,实现跨地域、跨区域的数据复制和迁移。对于Filebeat来说,无论是腾讯COS还是华为云OBS,都可以作为其输入源。通过配置Filebeat,可以指定要监控的COS桶或OBS桶以及对象的位置信息,Filebeat会定期轮询桶,获取新的或更新的对象,并将其作为日志数据发送到指定的输出目的地。 通过将Filebeat与腾讯COS或华为云OBS集成,可以方便地将存储在对象存储中的数据采集到日志分析和监控系统中,进行实时的数据处理和应用。这种集成架构具有高可靠性、高扩展性和低成本的特点,适用于各种规模和类型的应用场景。
二 腾讯云配置
2.1 用户配置
腾讯云自用户创建并记录其AK信息,注意腾讯云子用户需具备对象存储权限
2.2 COS
创建bucket,用于存放日志
腾讯云对象存储配置
shell
请求:xuel-filebeat-source-1314364771.cos.ap-beijing.myqcloud.com
bucketname:xuel-filebeat-source-1314364771
三 Filebeat配置
利用filebeat module管理,开启aws,开启后也是在module.d 下将aws.yml 文件名改为正常,在filebeat.yml 配置中有加载modules.d/*.yml 配置
该filebeat 配置腾讯云对象存储需要在主filebeat.yml配置
shell
[root@elk-host credential_file]# cd /etc/filebeat/
[root@elk-host filebeat]# ll
total 3868
-rw-r--r-- 1 root root 3745699 Sep 19 02:08 fields.yml
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
配置对象存储信息
shell
# cat filebeat.yml
- type: aws-s3
path_style: true
non_aws_bucket_name: "xuel-filebeat-source-1314364771"
number_of_workers: 5
bucket_list_interval: "300s"
access_key_id: "AKIDxxxxxxxxxxxxxxS7pLpC"
secret_access_key: "ITXXO3VxxxxxxxxxppgVBi"
endpoint: "https://cos.ap-beijing.myqcloud.com"
expand_event_list_from_field: Records
default_region: "ap-beijing"
同理华为云obs也相同
shell
filebeat.inputs:
- type: aws-s3
path_style: true
non_aws_bucket_name: "xuel-filebeat-source-obs"
number_of_workers: 5
bucket_list_interval: "300s"
access_key_id: "0xxxxxxxxxxxxxxxxxxE"
secret_access_key: "wGxxxxxxxxxxxxrhONCl"
endpoint: "https://obs.cn-north-4.myhuaweicloud.com"
expand_event_list_from_field: Records
default_region: "cn-north-4"
四 测试
上次日志到bucket中
重启filebeat
shell
# 查看日志
[root@elk-host filebeat]# journalctl -fu filebeat
在kibana中查看,腾讯云cos中的日志已经正常投递到es中。
五 注意事项
- 访问权限:确保Filebeat具有足够的权限来访问腾讯云COS桶中的日志文件。您需要为Filebeat提供适当的访问密钥或角色,并确保其具有读取COS桶的权限。
- 安全性:当配置Filebeat与腾讯云COS集成时,务必采取安全措施,以防止未经授权的访问。确保仅允许受信任的IP地址或网络访问Filebeat实例和COS桶,并加密传输通道以保护数据的机密性。
- 文件过滤和解析:COS可能包含多种文件类型和格式的日志文件。在配置Filebeat时,要确保正确配置文件过滤规则和解析器,以确保仅收集和处理所需的日志文件,并正确解析其内容。
- 监控和容错:定期监控Filebeat与COS的连接和数据收集情况,以确保系统正常工作。同时,考虑实施容错机制,例如使用备份输入源或实现数据重试机制,以应对可能的故障或中断。
- 性能和可扩展性:腾讯云COS可能包含大量的日志文件,因此在配置Filebeat时要考虑性能和可扩展性。根据需求调整Filebeat的配置参数,如批量大小、并发连接数等,以确保高效地处理大规模的日志数据。
- 日志数据的保留和归档:考虑设置适当的日志数据保留策略,以避免数据过时或占用过多的存储空间。您可以配置Filebeat将日志数据发送到其他目标,例如Elasticsearch或Logstash,以进行进一步的处理、分析和长期存储。
其他
腾讯云COS 的对象存储可以正常通过filebeat 1.10正常使用参数:non_aws_bucket_name,但是阿里云部分其云厂商可能不行,使用filebeat 8.10最新版本,将对象存储作为filebeat输入源,配置相同,腾讯/阿里均可以,在阿里这边出错,利用aws cli 测试这边阿里云oss也是成功的,ak信息权限也够,查看帮助文档:
- help.aliyun.com/zh/oss/how-...
- 中反馈错误二:Please use virtual hosted style to access,但是测试了几次带上bucket,也异常。 查看debug 调试Filebeat 8.10源码定位到在getRegionForBucket出错,host配置异常,测试带上bucket完成的FQDN则出现404,如果不带则403,修改源码跳过Region参数后,在Filebeat拉取文件子进程任然报403,目前怀疑阿里对OSS接口进行部分封装,后续还待进一步测试验证。
总结
Filebeat是一款轻量级的日志数据收集器,可以将基于S3协议的对象存储作为输入源。通过配置Filebeat,指定要监控的S3桶和对象的位置信息,Filebeat会定期轮询S3桶,获取新的或更新的对象,并将其作为日志数据发送到指定的输出目的地。这种集成架构具有高灵活性和可扩展性,使得我们可以方便地将存储在S3中的数据集成到日志分析和监控系统中。通过实时的数据分析和可视化展示,以及其他相关的数据处理和应用,我们可以充分利用S3协议的对象存储的优势,实现有效的数据采集和处理。这种方案适用于各种场景,提供了简单而灵活的解决方案,满足了日志数据收集和分析的需求。