Logstash 採集伺服器日誌datahup處理上傳阿里雲 Maxcomputer
阿新 • • 發佈:2018-12-11
阿里雲官方提供多種資料採集方式 阿里雲Maxcomputer資料上傳工具
阿里雲官網 博文 Logstash + DataHub + MaxCompute/StreamCompute 進行實時資料分析
阿里雲的基於飛天開發的pubsub服務 datahup
安裝 logstash about datahub:
$ tar -xzvf logstash-with-datahub-2.3.0.tar.gz $ cd logstash-with-datahub-2.3.0
安裝流程參考 阿里雲社群博文
在 logstash 配置檔案中給出的示例日誌資料:
20:04:30.359 [qtp1453606810-20] INFO AuditInterceptor - [13pn9kdr5tl84stzkmaa8vmg] end /web/v1/project/fhp4clxfbu0w3ym2n7ee6ynh/statistics?executionName=bayes_poc_test GET, 187 ms
示例 logstash conf 配置檔案:
input { file { path => "${APP_HOME}/log/bayes.log" start_position => "beginning" } } filter{ # 對每一條日誌message進行分割,並將各分片指定對應的tag # 若將整條日誌作為Topic的一個欄位,可建立只包含(message string)欄位的Topic,從而不用配置grok filter grok { match => { "message" => "(?<request_time>\d\d:\d\d:\d\d\.\d+)\s+\[(?<thread_id>[\w\-]+)\]\s+(?<log_level>\w+)\s+(?<class_name>\w+)\s+\-(?<detail>.+)" } } } output { datahub { access_id => "" access_key => "" endpoint => "" project_name => "project" topic_name => "topic" #shard_id => "0" #shard_keys => ["thread_id"] dirty_data_continue => true dirty_data_file => "/Users/u1/trash/dirty.data" dirty_data_file_max_size => 1000 } }
如設涉及多檔案採集(/home/admin/accessxxx.log /home/admin/xxx.log),input 可改為:
# 第一種 input { file { path => ["home/admin/accessxx.log","home/admin/xxx.log"] start_position => "beginning" } } # 第二種 input { file { path => "home/admin/accessxx.log" #start_position => "end" } file { path => "home/admin/xxx.log" #start_position => "end" } } """ start_position 引數 logstash 從什麼位置開始讀取檔案資料,預設是結束位置,也就是說 logstash 程序會以類似 tail -F 的形式執行。如果你是要匯入原有資料,把這個設定改成 "beginning",logstash 程序就從頭開始讀取,有點類似 cat,但是讀到最後一行不會終止,而是繼續變成 tail -F """
關於grok的校驗,可以參考 GROK DEBUG(強烈建議使用此工具除錯grok)
grok match 提供兩種方式,一種是示例中自定義正則,另一種是logstash官方 grok patterns ,參考上篇博文
logstash 啟動命令,進入安裝目錄(建議在screen中執行):
./logstash -f 配置檔案地址
關於datahub關聯maxcomputer分割槽表的建立,
首先在maxcomputer中新建分割槽表設定分割槽欄位(如使用系統分割槽,設定ds hh mm三個分割槽欄位),在datahub中新建表時選擇從maxcomputer匯入即可,注意分割槽時間,分割槽選擇,是否建立自動歸檔關聯等,欄位必須一一對應,完全一致,
日誌處理:
如日誌不需要處理,在grok中正則過濾即可直接上傳datahup 自動歸檔maxcomputer
反之 則可以用過通過datahup 訂閱 釋出資料資料 具體參考 sdk 支援 java python (如分表等其他操作)
關於異常除錯,資料除錯:
maxcomputer表中資料與原始日誌不相符!
- 首先確保 logstash 資料的完全採集,即logstabsh採集有沒有問題,可以在datahup控制檯某時候資料抽樣對比原始日誌
- 如果能查出表中資料相較於原始日誌缺失詳細,更快定位錯誤
- logstash 沒有問題,極大可能自定義資料處理程式出現問題,排查程式碼邏輯,禁用異常處理,打log等方式
其他問題google 或 提交工單