锋行_THU_SJTU

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

logstash从AWS S3获取日志信息的常用方法有两种,一种是利用AWS lambda,另一种就是利用logstash的S3 input插件。

插件github:https://github.com/logstash-plugins/logstash-input-s3

插件文档:https://www.elastic.co/guide/en/logstash/7.3/plugins-inputs-s3.html

需要注意的是,logstash 7.3版本和6.3版本对应的S3 input的版本也不同,两者支持的设置选项也不同。一个明显的区别是logstash 7.3对应的S3 input多了一个watch_for_new_files选项。

配置选项的话,其实值得说的内容并不多。主要有以下几个:

access_key_id
secret_access_key
region
这三个配置是跟登陆S3服务相关的。其中access key和secret access key在My Security Credentials中进行查看和管理。
 
bucket
这个是指定数据来源的桶的名称。
 
prefix
exclude_pattern
这两个是用来指定或过滤文件的。
prefix将指定一个字符串前缀,符合该前缀的文件将被收集
exclude_pattern将指定一个正则表达式,符合该正则表达式的文件将被忽略
另外有一点,在S3中,虽然文件在形式上是以文件夹的结构进行管理的,但文件夹的实质是文件名的前缀。例如,假设桶中有一个文件夹叫gg,gg中有一个叫abc.log的文件,那么实际上abc.log的文件全名是gg/abc.log。在进行文件的匹配和过滤时,也是按文件全名进行处理的。如果有 prefix => "gg/",则可以匹配到在gg文件夹中的abc.log。
 
S3 input插件将读取符合配置的每个文件的内容,并将文件中的每一行转换为一个message,后续可以利用filter对message进行处理。在读取了S3上的文件后,S3 input会在./data/plugins/inputs/s3/中建立文件并记录目前已经读取文件的最后上传时间。该文件即标记了logstash读取文件的进度。删除该文件将导致logstash在启动后重新读取S3上的符合配置要求的文件内容。
 
posted on 2019-08-06 11:06  锋行_THU_SJTU  阅读(1742)  评论(0编辑  收藏  举报