ELK之logstath的使用(2)----多行日誌input外掛的使用
在實際使用中會使用logstath來採集日誌檔案,基礎的採集是按單行來進行的每一行都是一個event,而在實際工作中經常會出現一個日誌event分佈在多行中,比如java的錯誤堆疊,必須將多行日誌聯合起來進行分析。
下面先介紹下我在工作中遇到的情形:
2017-08-02 10:42:21,176 INFO smg.message.cdnws||||cd /data/Video && rsync -avrtuz -R ./2017/08/02/5901193475b440cf2ed0a2ec26116cdb.mp4.m3u8 [email protected].upload.wscdns. com::chinacache_video --password-file=/etc/rsync_ws.passwd||||{"command":"[/usr/local/microservice/rsyncCommand.sh, cd /data/Video, rsync -avrtuz -R ./2017/08/02/5901193475b440cf2ed0a2ec26116cdb.mp4.m3u8 [email protected]::chinacache_video --password-file=/etc/rsync_ws.passwd]", "errorMessage":"null", "infoMessage" :"
sending incremental file list
2017/08/02/5901193475b440cf2ed0a2ec26116cdb.mp4.m3u8
sent 279 bytes received 30 bytes 88.29 bytes/sec
total size is 108 speedup is 0.35
", "exitValue":"0", "startTime":"1501641738840", "endTime":"1501641741176"}
這個多行日誌是需要採集的目標。結構應該是 時間 + 日誌級別 + 具體內容。
下面先介紹用到的外掛:
input file 及codec multiline 外掛
使用這兩個外掛可以坐到從日誌檔案中讀取多行日誌進行匹配,比如java的報錯堆疊會解析成一個結構。
codec multiline外掛官網地址
首先先使用input file外掛將日誌讀進來。
./bin/logstash -e '
input{
file{
path=>"/home/testfiles/command_service_amq.log" //日誌檔案地址
start_position=>"beginning" //在第一次讀檔案時是否從第一行進行讀取 預設為end
}
}
output{stdout{}}'
這樣讀進來的日誌會按照單行進行採集,效果非常不好,所以開始使用multiline外掛。
通過分析發現多行的匹配規則為只要不是以時間為開頭的日誌都歸為上一行。so!!!這麼寫:
./bin/logstash -e '
input{
file{
path=>"/home/testfiles/command_service_amq.log" //日誌檔案地址
start_position=>"beginning" //在第一次讀檔案時是否從第一行進行讀取 預設為end
codec => multiline {
pattern => "^%{TIMESTAMP_ISO8601:timestamp}" //正則匹配,以iso8601時間為開始
negate => true //如果沒匹配則取消正則,沒理解,反正true跟false都試試
what => "previous" //和上一行組成同一event
}
}
}
output{stdout{}}'
pattern中使用grok正則進行匹配。
參考地址在這。
現在會發現多行會變成一個event輸出了,但是其中會出現冗餘資訊,比如logstath會在event中新增時間資訊。
下一節講講如何進行filter過濾,有問題之處煩請在留言中指出,非常感謝。
相關推薦
ELK之logstath的使用(2)----多行日誌input外掛的使用
在實際使用中會使用logstath來採集日誌檔案,基礎的採集是按單行來進行的每一行都是一個event,而在實際工作中經常會出現一個日誌event分佈在多行中,比如java的錯誤堆疊,必須將多行日誌聯合起來進行分析。 下面先介紹下我在工作中遇到的情形:
我的android多執行緒程式設計之路(2)之RxJava Schedulers原始碼分析
寫在伊始 上一篇介紹了執行緒的一些基礎知識和工作這麼久以後對於多執行緒部分的使用經驗之路,這篇主要對RxJava執行緒控制部分進行分析。 RxJava(本文就RxJava2.0分析) 說實話,近一年多一直在用rxjava進行專案架構的編寫及封裝及一些非
Redis 數據結構之dict(2)
value ash 每次 earch 定義 索引 user popu adding 本文及後續文章,Redis版本均是v3.2.8 上篇文章《Redis 數據結構之dict》,我們對dict的結構有了大致的印象。此篇文章對dict是如何維護數據結構的做個詳細的理解
HDFS源碼分析之NameNode(2)————Format
return exceptio 數據信息 row oid creat tail 進行 alt 在Hadoop的HDFS部署好了之後並不能馬上使用,而是先要對配置的文件系統進行格式化。在這裏要註意兩個概念,一個是文件系統,此時的文件系統在物理上還不存在,或許是網絡磁盤來
.6-Vue源碼之AST(2)
png 變量聲明 enc 標簽 ons directive option 復雜 html 上一節獲取到了DOM樹的字符串,準備進入compile階段: // Line-9326 function compileToFunctions(template,
php擴展開發筆記(2)多個源代碼文件的配置和編譯
nes repr 過程 http fadein ews add ng- star 我們在開發過程中,為了代碼得可讀性和易維護性,肯定是須要多個代碼文件的,而不不過通過 ext_skel 生成得骨架文件。這篇文章主要介紹下。多個代碼文件的時候。我們須要註意
Hibernate框架之路(二)多對多多關系
-m let ble ssi gin rop assert on() odi 1、配置實體類 package cn.pojo; import java.util.HashSet; import java.util.Set; public class
python學習_day54_前端基礎之js(2)
data 截取 定義 得到 let 結果 是什麽 index 插入 在JavaScript中除了null和undefined以外其他的數據類型都被定義成了對象,也可以用創建對象的方法定義變量,String、Math、Array、Date、RegExp都是JavaScri
angular4之爬坑之路(2)angular腳手引入第三方類庫
scrip 1-1 sta 引入 logs .json 類比 ima 第三方 如何在angular4腳手架中引入第三方類庫呢比如jquery、swiper、bootstrap。。。。。。 例如引入jquery:(其他類庫類比jquery即可) 第一步:在我們的項目目錄下
USB小白學習之路(2)端點IN/OUT互換
speed 9.png 現在 script des 裏的 宋體 dir info 端點2(out)和端點6(in)的out_in互換 註:這裏的out和in都是以host為標準說的,out是host的out,在設備(Cy7c68013)這裏其實是輸入端口;in是host的i
STL源碼剖析之allocator(2)
內部 擁有 struct trait 多個 接受 rst stl -m SGI雖然定義了名為allocator的配置器,但從未使用過。SGI的allocator只是包裝了C++的::operatpor new和::operator delete,效率不高。STL中內存配置操
單片機小白的啟程之旅(2)
數據 物聯網 分析 無線網 bsp 工作 信息 pm2 指令 單片機與物聯網的關系: 物聯網的三大部分:感知層、傳輸層、應用層。 感知層的主要器件是傳感器,包括光傳感器、PM2.5傳感器、電容觸摸傳感器等。其主要作用是使傳感器收集信息,而感知層收集到信息後
Python學習之路(2)——Python種類介紹
VM 種類 廣泛 分享 java字節碼 流程 字節碼 基礎上 python Python的種類 Cpython Python的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),然後運行在Python虛擬
統一日誌ELK部署配置(2)——kafka
日誌收集前提:你服務器上已經安裝並配置了java運行環境; 一、zookeeper安裝1、從zookeeper官網:http://zookeeper.apache.org/ 下載;我這裏下載的是zookeeper-3.4.9.tar.gz;2、解壓到你安裝目錄:tar-zxvf zookeeper-3.4.9
Panda的學習之路(2)——pandas選擇數據
定義 對比 pan panda pri 學習之路 進行 strong 比較 首先定義panda dates=pd.date_range(‘20130101‘,periods=6) # print(dates) df=pd.DataFrame(np.arange(24).r
scala成長之路(2)對象和類
ascii int 紅色 部分 類名 基類 req 字面量 標識符 scala提供了一種特殊的定義單例的方法:object關鍵字 scala> object Shabi{ | val age = 0 | val name = "shabi"
大數據基礎之Oozie(2)常見問題
lns odi dir 大數據基礎 dep rect false tar cat 1 oozie如何查看任務日誌? 通過oozie job id可以查看流程詳細信息,命令如下: oozie job -info 0012077-180830142722522-oozie-ha
mysql高階之鎖(2)
表鎖: 可以看我上篇部落格:https://blog.csdn.net/tuesdayma/article/details/81901679 行鎖 概述: 行鎖主要正針對於innodb(mysql5.5之後預設儲存引擎)的儲存引擎而言的,每次對資料庫操作都會進行行鎖。 特
Collection原始碼之路(2)——LinkedList
上篇文章Collection原始碼之路(1)——ArrayList我們提到ArrayList其實就是可變長的陣列,我們都知道資料物理結構包括順序儲存和鏈式儲存兩種,特點是 順序儲存方便查詢,修改比較麻煩 鏈式儲存修改方便,查詢比較麻煩 ArrayList採用陣列的
Leetcode題解之其他(2)漢明距離
題目:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/26/others/65/ 題目描述: 漢明距離 兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目