logstash詳解

介紹

Logstash:數據處理引擎,可以處理每秒幾萬條的日誌;它支持動態的從各種數據源蒐集數據,並對數據進行過濾、分析、豐富、統一格式等操作,然後存儲到 ES

官網地址:https://www.elastic.co/cn/products/logstash

如圖:

è¿éåå¾çæè¿°

詳解:

下面我們將文本數據同步到ES來做例子,其中版本爲:logstash-5.2.1,elasticsearch-6.2.2

 

analysis.conf 配置文件內容爲

input {
    file {
        type => "lualog"
        path=> [ "C:/JWD/logs/*" ] #同步文件的IP
        start_position => beginning
        stat_interval => 1 #設置多長時間檢測文件是否修改 默認是1s
        #tags => "test" #添加標籤
        #設置多長時間掃描目錄,發現新文件
        discover_interval => 15
        # 設置監聽間隔 各字段含義(從左至右)分、時、天、月、年,全爲*默認含義爲每分鐘都更新
    }
    file {
        type => "lsdclog"
        path=> [ "C:/JWD/server/Debug/Logs/*" ]  #同步文件的IP
        start_position => beginning
        stat_interval => 1 #設置多長時間檢測文件是否修改 默認是1s
        #tags => "test" #添加標籤
        #設置多長時間掃描目錄,發現新文件
        discover_interval => 15
        # 設置監聽間隔 各字段含義(從左至右)分、時、天、月、年,全爲*默認含義爲每分鐘都更新
    }
}

filter {
   json{
        source => "message"
    }
    date {
        match => ["addTime", "yyyy.MM.dd HH.mm.ss","UNIX_MS"] #addTime是我日誌中的一個時間字段!
        target => "@timestamp"
    }
    ruby {
        code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
    }
    ruby {
        code => "event.set('@timestamp',event.get('timestamp'))"
    }
    mutate{
        remove_field => ["message","timestamp"]
    }
}
output {
     if [type] == "lualog"{
        elasticsearch {
            action => "index"
            hosts => ["127.0.0.1:9200"] 
            index => "ls_%{+YYYYMMdd}_lua_log"
            document_type => "ls_%{+YYYYMMdd}_lua_log"
        }
     }
     if [type] == "lsdclog"{
        elasticsearch {
            action => "index"
            hosts =>["127.0.0.1:9200"] 
            index => "ls_%{+YYYYMMdd}_lsdc_log"
            document_type => "ls_%{+YYYYMMdd}_lsdc_log"
        }
     }
     stdout {
       codec => json
     }
}

1、將C:/JWD/logs/ 目錄下的所有文件同步到本機ES中,索引名爲ls_%{+YYYYMMdd}_lua_log,{+YYYYMMdd}爲當日的日期

2、將C:/JWD/server/Debug/Logs/ 目錄下的所有文件同步到本機ES中,索引名爲ls_%{+YYYYMMdd}_lsdc_log,{+YYYYMMdd}爲當日的日期

3、filter表示只過濾json數據

注意:

1、這邊有個logstash自帶的坑,就是logstas同步日誌的時候,索引是統計8點到第二天8點影響,所以要改索引建立爲凌晨建立時間,如何修改,請看以上配置

2、要同步多個路徑下的文件的時候,可以在input中file的 path=> [ "C:/JWD/logs/*", "C:/JWD/server/Debug/Logs/*"]  配置多個路勁(input中各個參數的意義,請參考:https://yq.aliyun.com/articles/152043?spm=a2c4e.11153940.blogcont154341.23.792e51fekIVnjR

3、output的時候,如果在hosts =>["127.0.0.1:9200","10.40.0.205:9200"] 配置多個路徑的時候,不是在兩臺服務上各備份一份數據,而是把一份數據存到兩臺服務上,所有每臺服務上的數據都是不完整的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章