本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
當對象存儲服務OSS(Object Storage Service)文件發生變更,觸發阿里云輕量消息隊列(簡稱SMQ,原MNS)事件通知時,您可以通過阿里云Logstash的logstash-input-oss插件獲取OSS變更事件,再通過logstash-output-oss插件將數據同步到OSS Bucket中。本文介紹對應的配置方法。
前提條件
您已完成以下操作:
安裝logstash-input-oss和logstash-output-oss插件。
具體操作請參見安裝或卸載插件。
開通OSS服務并準備數據。
具體操作請參見開通OSS服務。
開通輕量消息隊列SMQ,并確保與OSS服務在同一區域。
具體操作請參見開通輕量消息隊列(原 MNS)并授權。
說明本示例設置事件通知類型為PostObject、PutObject,即觸發Post、Put事件請求,logstash-output-oss插件同步此數據到對端OSS。
操作步驟
步驟一:配置事件通知規則
登錄OSS管理控制臺。
在左側導航欄,單擊Bucket列表,再單擊目標Bucket名稱。
選擇 。
在事件通知區域,單擊創建規則。
在創建規則面板,配置事件通知規則。
單擊確定。
可選:查看事件通知規則。
進入輕量消息隊列SMQ控制臺。
在頂部菜單欄選擇地域。
在左側導航欄,單擊事件通知。
步驟二:配置Logstash管道
- 進入阿里云Elasticsearch控制臺的Logstash頁面。
- 進入目標實例。
- 在頂部菜單欄處,選擇地域。
- 在Logstash實例中單擊目標實例ID。
在左側導航欄,單擊管道管理。
單擊創建管道。
在創建管道任務頁面,輸入管道ID并配置管道。
本文使用的管道配置如下。
input { oss { endpoint => "oss-cn-hangzhou-internal.aliyuncs.com" bucket => "zl-ossoutoss" access_key_id => "LTAIaX42ddd******" access_key_secret => "zuyBRUUndddddds3e6i******" 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 => "LTAIaxxxxx******" access_key_secret => "zuxxxx8hBpXs3e6i******" 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隊列(持久隊列)。
隊列最大字節數
請確保該值小于您的磁盤總容量。默認值:1024 MB。
隊列檢查點寫入數
啟用持久性隊列時,在強制執行檢查點之前已寫入事件的最大數目。設置為0,表示無限制。默認值:1024。
警告配置完成后,需要保存并部署才能生效。保存并部署操作會觸發實例重啟,請在不影響業務的前提下,繼續執行以下步驟。
單擊保存或者保存并部署。
保存:將管道信息保存在Logstash里并觸發實例變更,配置不會生效。保存后,系統會返回管道管理頁面。可在管道列表區域,單擊操作列下的立即部署,觸發實例重啟,使配置生效。
保存并部署:保存并且部署后,會觸發實例重啟,使配置生效。
步驟三:查看數據同步結果
進入OSS管理控制臺。
上傳新的文件到SMQ監控的目錄中(步驟一:配置事件通知規則中定義的資源描述)。
上傳文件的具體操作請參見控制臺上傳文件。
進入目標端OSS Bucket,查看同步成功的數據。
重要OSS插件不是以文檔或目錄形式進行數據同步,而是按照原文檔中的數據一條一條進行讀寫。根據rotate規則,logstash-output-oss插件先將數據存儲在本地臨時文件中,當達到一定的時間或者大小再進行上傳,所以不能保證同一個文檔的數據保存到相同的文檔下,例如可能會出現多個文檔的部分數據同步到一個文檔中的情況。