clojure實戰——基於logstash搭建日誌數據獲取與整理平臺(2)

clojure實戰——基於logstash搭建日誌數據獲取與整理平臺(2)

1. logstash簡介

logstash是金牌搭檔ELK中的“L”,它主要負責數據的收集、解析整理、傳輸。這對應體現在它的配置文件中的input、filter、output這三段配置。下面僅針對本次項目中需要使用到的地方做一個講解,其他方面讀者可自行到其官網查閱。

2. logstash使用

(1)運行一個logstash

使用logstash非常簡單,從官網下載壓縮包,解壓,執行bin目錄下的logstash執行文件,即可:

啓動命令:

bin/logstash agent -f logstash-simple.conf

logstash-simple.conf是logstash啓動時指定的配置文件,該文件是logstash的核心。

(2)編寫conf文件

logstash的conf文件中定義了數據來源,過濾條件,輸出目的地。另外logstash爲這幾個模塊都提供了豐富的插件,可以使用這些插件實現自己的業務需求。其文件結構及插件的使用如下:

input {
    file {
        # file插件, 數據源來自日誌文件test.log
        # 指定文件路徑
        path => “/Users/admin/test/test.log”
        # 起始位置,beginning會發送舊數據,end則不會
        start_position => "end"
        codec => plain {
                    # plain插件,指定文件解析相關配置
                    # 指定字符集爲“GBK”
                    charset => "GBK"
                }
    }
}
filter {
    grok {
        # grok插件,用於解析非json格式日誌時使用,可以自定義匹配模式
        # 指定模式文件地址
        patterns_dir => "/Users/admin/test/testlogpatterns"
        # 對日誌內容進行模式匹配
        match => ["message", "%{TESTPATTERN}"]
        # 移除不需要的一些字段
        remove_field => ["@version","@timestamp",message,host,path]
    }
}
output {
    http {
        # http插件,通過http發送給數據需求者
        http_method => "post"
        # url地址
        url => "http://192.168.5.109:8011/log"
    }
}

test.log示例文件內容如下:

method:method1,username:snailiu,age:20,message:my test log

testlogpatterns文件內容如下:

TESTPATTERN method:%{DATA:method-name},username:%{DATA:username},age:%{INT:user-age},message:%{DATA:msg}

其中,TESTPATTERN爲該匹配模式的ID與filter中grok下的match => [“message”, “%{TESTPATTERN}”]相對應。

後面則是匹配模式,如 %{DATA:method-name} 會將匹配test.log文件中的“method1”字符串,並設別名爲method-name,%{DATA:method-name} 會將匹配test.log文件中的20字符串,並設別名爲user-age,且將20轉爲INT型。上述日誌通過模式匹配之後應該返回爲一個json結構:

{method-name: method1, username: snailiu, user-age: 20, message: my test log , host : $##$#$#$#$#, path: $#$#$#$#$#, @timestamp: XXXXXXXXXXX, @version: XXXX message: XXXXX}

而path,host這些是我們所不需要的,因此可用remove_field進行刪除。如此,就完成了數據獲取和整理流程。

最後,output中使用http插件,將獲取到的數據發送給某一個第三方服務。

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