本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
当对象存储服务OSS(Object Storage Service)文件发生变更,触发阿里云轻量消息队列(简称SMQ,原MNS)事件通知时,您可以通过阿里云Logstash的logstash-input-oss插件获取OSS变更事件,再通过logstash-output-oss插件将数据同步到OSS Bucket中。本文介绍对应的配置方法。
前提条件
- 已开通OSS服务并准备数据。 
- 已开通轻量消息队列SMQ,并确保与OSS服务在同一地域。 说明- 本示例设置事件通知类型为PostObject、PutObject,即触发Post、Put事件请求,logstash-output-oss插件同步此数据到对端OSS。 
操作步骤
步骤一:配置事件通知规则
- 登录OSS管理控制台。 
- 在左侧导航栏单击Bucket列表,再单击目标Bucket名称。 
- 选择。 
- 在事件通知区域,单击创建规则。 
- 在创建规则面板,配置事件通知规则。 - 本文示例配置的事件通知如下,实际使用时,请替换为您自己的业务信息。配置参数详情,请参见设置事件通知规则。  
- 单击确定。 
- 可选:查看事件通知规则。 - 进入轻量消息队列SMQ控制台。 
- 在左侧导航栏单击事件通知。 
- 在顶部菜单栏选择地域,即可查看目标地域下的事件通知规则。 
 
步骤二:配置Logstash管道
- 进入目标实例。 - 在顶部菜单栏处,选择地域。 
- 在Logstash实例中单击目标实例ID。 
 
- 在左侧导航栏,单击管道管理。 
- 单击创建管道。 
- 在创建管道任务页面,输入管道ID并配置管道。 - 本文示例使用的管道配置如下。实际使用时,请替换为您自己的业务信息。 - input { oss { endpoint => "oss-cn-hangzhou-internal.aliyuncs.com" bucket => "zl-ossoutoss" access_key_id => "ALIBABA_CLOUD_ACCESS_KEY_ID" access_key_secret => "ALIBABA_CLOUD_ACCESS_KEY_SECRET" mns_settings => { endpoint => "18185036364****.mns.cn-hangzhou-internal.aliyuncs.com" queue => "zl-test" } codec => json { charset => "UTF-8" } } } output { oss { endpoint => "http://oss-cn-hangzhou-internal.aliyuncs.com" bucket => "zl-log-output-test" access_key_id => "ALIBABA_CLOUD_ACCESS_KEY_ID" access_key_secret => "ALIBABA_CLOUD_ACCESS_KEY_SECRET" prefix => "oss/database" recover => true rotation_strategy => "size_and_time" time_rotate => 1 size_rotate => 1000 temporary_directory => "/ssd/1/ls-cn-0pp1cwec****/logstash/data/22" encoding => "gzip" additional_oss_settings => { max_connections_to_oss => 1024 secure_connection_enabled => false } } }重要- Endpoint不能加HTTP前缀,并且是internal域名,否则报错。 
- 通过time_rotate及size_rotate,设置当临时目录数据保存1分钟或者大小达到1000 Bytes时,触发数据上传。 
- input参数说明请参见logstash-input-oss插件参数说明,output参数说明请参见logstash-output-oss插件参数说明。 
 
- 单击下一步,配置管道参数。  - 参数 - 说明 - 管道工作线程 - 并行执行管道的Filter和Output的工作线程数量。当事件出现积压或CPU未饱和时,请考虑增大线程数,更好地使用CPU处理能力。默认值:实例的CPU核数。 - 管道批大小 - 单个工作线程在尝试执行Filter和Output前,可以从Input收集的最大事件数目。较大的管道批大小可能会带来较大的内存开销。您可以设置LS_HEAP_SIZE变量,来增大JVM堆大小,从而有效使用该值。默认值:125。 - 管道批延迟 - 创建管道事件批时,将过小的批分派给管道工作线程之前,要等候每个事件的时长,单位为毫秒。默认值:50ms。 - 队列类型 - 用于事件缓冲的内部排队模型。可选值: - MEMORY:默认值。基于内存的传统队列。 
- PERSISTED:基于磁盘的ACKed队列(持久队列)。 
 - 队列最大字节数 - 队列允许存储的最大数据量,单位为 - MB。取值范围为:- 1~253-1的整数,默认值为- 1024MB。说明- 请确保该值小于您的磁盘总容量。 - 队列检查点写入数 - 启用持久性队列时,在强制执行检查点之前已写入事件的最大数目。设置为0,表示无限制。默认值:1024。 警告- 配置完成后,需要保存并部署才能生效。保存并部署操作会触发实例重启,请在不影响业务的前提下,继续执行以下步骤。 
- 单击保存或者保存并部署。 - 保存:将管道信息保存在Logstash里并触发实例变更,配置不会生效。保存后,系统会返回管道管理页面。可在管道列表区域,单击操作列下的立即部署,触发实例重启,使配置生效。 
- 保存并部署:保存并且部署后,会触发实例重启,使配置生效。