logstash从AWS S3获取日志信息的经常使用方法有两种,一种是利用AWS lambda,另外一种就是利用logstash的S3 input插件。html
插件github:https://github.com/logstash-plugins/logstash-input-s3git
插件文档:https://www.elastic.co/guide/en/logstash/7.3/plugins-inputs-s3.htmlgithub
须要注意的是,logstash 7.3版本和6.3版本对应的S3 input的版本也不一样,二者支持的设置选项也不一样。一个明显的区别是logstash 7.3对应的S3 input多了一个watch_for_new_files选项。正则表达式
配置选项的话,其实值得说的内容并很少。主要有如下几个:ide
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上的符合配置要求的文件内容。