如果業務專案都能夠按照json格式輸出的話那麼處理起來會很容易,那麼使用之前的json外掛程式就可以快速解析為結構化的資料。但是有些日誌的格式就不符合json格式也不能自定義,那麼kv json外掛程式就用不到的。
grok外掛程式可以支援正則,能夠從非結構化的日誌當中提取出關鍵字段,負責將非結構化資料解析為結構化的資料,logstash預設支援了很多正則
grok外掛程式:如果採集的日誌格式是非結構化的,可以寫正則表 達式提取,grok是正規表示式支援的實現。 常用字段:
logstash內建的正則匹配模式,在安裝目錄下可以看到,路徑:
[root@localhost ~]# cat /usr/local/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-patterns-core-4.1.2/patterns/grok-patterns
username [a-za-z0-9._-]+
user %
emaillocalpart [a-za-z][a-za-z0-9_.+-=:]+
正則匹配模式語法格式:%
例如: %
這裡是kiban內建對grok表示式測試的功能
請求的客戶端ip 請求的方法 請求的uri 返回資料大小 相應時間
192.168.1.10 get /index.html 15824 0.043
現在使用grok的內建正則匹配模式,怎麼取出來?
ipv4 (?ipv4 內建正規表示式第一列的名稱 冒號後面跟著的是你將匹配的結果儲存在日誌資料的欄位名是什麼,這個欄位名會存在es裡為我們在kibana裡面去查詢,所以這個欄位要取名有意義
word \b\w+\b 匹配文字
再匹配,這裡是uri
uripathparam %(?:%)? 匹配uri路徑
這裡不使用grok做過濾
[root@localhost ~]# echo "192.168.1.10 get /index.html 15824 0.043" >> /var/log/test.log
可以看到在kibana裡面meaasge還是儲存了原始的字段
這行日誌為非結構化的日誌,就不利於我們去查詢了,比如請求時間大於1s的請求,要進行優化處理。所以要將非結構化的日誌轉化為結構化的日誌,將關鍵的資訊轉化為字段,這樣就可以針對某個字段進行針對性查詢。
[root@localhost ~]# cat /usr/local/logstash/conf.d/test.conf
input
}filter % % % %"
} } }
output " }}
[root@localhost ~]# echo "192.168.1.10 get /login.html 12345 0.666" >> /var/log/test.log
可以看到根據字段可以組合起來進行查詢這就是做結構化日誌最重要的目的
ELK logstash基本用法
一 logstash介紹 logstash在elk系統中為資料儲存,報表查詢和日誌解析建立了乙個功能強大的管道鏈。logstash提供了多種多樣的 input,filters,codecs和output元件,logstash由以下三部分組成 input資料輸入端,可以接收來自任何地方的源資料 1 f...
Logstash過濾外掛程式
設定yum源 rpm import tee etc yum.repos.d elastic.repo eof logstash 5.x name elastic repository for 5.x packages baseurl gpgcheck 1 gpgkey enabled 1 autor...
ELK Logstash安裝與配置
使用yum安裝 編輯 repovim etc yum.repos d elasticsearch.repo 內容如下 elasticsearch 6.x name elasticsearch repository for 6.x packages baseurl co packages 6.x yu...