1. 程式人生 > >Logstash 採集伺服器日誌datahup處理上傳阿里雲 Maxcomputer

Logstash 採集伺服器日誌datahup處理上傳阿里雲 Maxcomputer

阿里雲官方提供多種資料採集方式    阿里雲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表中資料與原始日誌不相符!

  1. 首先確保 logstash 資料的完全採集,即logstabsh採集有沒有問題,可以在datahup控制檯某時候資料抽樣對比原始日誌  
  2. 如果能查出表中資料相較於原始日誌缺失詳細,更快定位錯誤
  3. logstash 沒有問題,極大可能自定義資料處理程式出現問題,排查程式碼邏輯,禁用異常處理,打log等方式

其他問題google 或  提交工單