體驗ELK

如今數據是越來越重要了,日誌就是很重要的數據來源了。通過對日誌的分析,可以瞭解用戶習慣、發現系統缺陷。通過shell腳本、awk就可以對日誌文件進行處理,但是很耗費時間、精力。所以ELK(Elasticsearch、Logstash、Kinaba)就成爲了日誌分析的不二首選。筆者在對ELK的學習過程中get到兩點:

  • 新學習一項技能的時候,有官方文檔(手冊)優先使用官方文檔(即便是英文,也可以藉助翻譯工具),可以少走彎路;
  • 坊間:【Elasticsearch 來源於作者 Shay Banon 的第一個開源項目 Compass 庫,而這個 Java 庫最初的目的只是爲了給 Shay 當時正在學廚師的妻子做一個菜譜的搜索引擎。】(真的是很有愛!)

ELK系統至少有三部分組成:

  1. Logstash:讀取日誌文件,進行過濾,輸出到MQ或者ElasticSearch;
  2. ElasticSearch·:日誌的記錄經過處理之後,以文檔的形式存儲在ElasticSearch服務器上;
  3. Kibana:算是ElasticSearch的一個可視化操作系統,類似一個後臺管理系統,對ElasticSearch服務器的數據進行篩選、查詢、統計。

Logstash:

logstash -f file.conf

啓動Logstash,以配置文件的方式,file.conf文件中三部分需要寫:

input {
  file {
        path => [ "/data/tmp.log" ]   #日誌的目錄
        start_position => "beginning"  # 從文件開頭採集
    }
}
filter {
    #各種插件
}
output {
    #輸出(可以輸出到kafka、Elasticsearch等)
    stdout {
	    codec=>rubydebug
	}
}

Logstash6.5官方文檔 

Logstash的使用,filter模塊使用各種插件對日誌文件進行初步簡單過濾,如分割等。output模塊配置過濾後的文檔內容輸出位置,可以直接輸出到ElasticSearch、MQ(Rabbit、Kafka)等一般會先輸出到MQ,經過處理(如:解密、內容解壓縮)之後,再將內容存儲到ElasticSearch(這時候就需要用到ElasticSearch Client了),ElasticSearch官方提供了Java、Python等語言的Client。

 

ElasticSearch:

ElasticSearch,翻譯成中文的意思就是【彈性搜索】。直觀的感覺是將文本數據結構化存儲,最常用的應該就是將數據存儲爲Json數據格式。調用ElasticSearch服務提供的接口(RESTFUL),可以對進行增加、刪除、甚至是修改。ElasticSearch服務成功部署在Linux服務器上,需要用非root用戶(爲保證安全)。ElasticSearch的操作過程中有兩個參數很重要,index和type,從這兩個維度去劃分文檔記錄。如index爲日期,type爲error就可以代表某天的錯誤日誌記錄。

ElasticSearch6.5官方文檔

ElasticSearch主要是數據存儲,暫不做過多介紹。

Kibana:

Kibana可看做是對ElasticSearch的一個補充(個人認爲),Kibana開箱即用,提供了友好的界面,更加方便進行ElasticSearch的操作,無須開發(運維)人員寫代碼(如有特殊需要,也可在console窗口寫RESTFUL請求操作ElasticSearch)。最重要的是,Kibana可以以各種圖表的形式展示結果,更加友好。

Kibana手冊(中文)

Kibana最常用的模塊是【Discover】、【Visualize】、【Dashboard】。

【Discover】:按照條件篩選數據,形成數據集合;

【Visualize】:將【Discover】形成的數據集合以圖形表格的形式展示出來,如餅狀圖;

【Dashboard】:將多個【Visualize】圖表整合,一塊展示出來。

另外還有兩個模塊:【Management】、【Dev Tools】

【Management】:主要是index的管理界面,index pattern等管理等。

【Dev Tools】:提供console窗口,自定義請求操作ElasticSearch,查看返回結果。

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