應用日志分析場景(ELKStack)
- Logstash
- Inputs:你使用Inputs去擷取資料到Logstash中,常用的inputs類型。
- file:從檔案中讀取,類似于UNIX指令中的 tail -0f。
- syslog:監聽514端口上的系統日志消息,并且根據RFC3164格式來解析。
- redis:從redis服務讀取資訊,使用redis管道和redis清單。Redis經常用來使用作為一個“broker”在一個集中的Logstash安裝,運輸Logstash事件從一個遠端的Logstash“shippers”。
- beats:由Filebeat發送的程序事件。
- Outputs:Outputs是Logstash傳輸途徑中的最後解析。一個事件可以有多個輸出,但是一旦所有的輸出處理完成後,該事件就完成了它的執行。
- elasticsearch:傳輸資料給Elasticsearch。如果你打算儲存資料在一個高效的,友善的,更輕松的可查詢結構中。
- file: 将事件資料寫在磁盤中。
- graphite:把資料傳輸到graphite,一個受歡迎的開源工具用來儲存和圖表化資料。
- statsd:Statsd是一個簡單的網絡守護程序,基于Node.js平台,通過UDP或者TCP方式偵聽各種統計資訊,包括計數器和定時器,并發送聚合資訊到後端服務。
- Codecs:基于流,可以對一部分輸入輸出做過濾的操作。Codes可以讓你輕松的将消息從序列化的過程中分離出來。
- json:編碼或解碼資料為Json格式。
- multiline:合并多行資料事件例如java異常和堆棧資訊為一個單獨的事件。
2.ElasticSearch
3.Kibana
4.模式分析
Logstash工具中的Inputs模式包括一種File模式,自動探測檔案增長變化,比較适合無入侵式日志采集,不需要修改應用,也不需要二次開發檔案探測程式,這與Flume架構有很大差別。
應用日志分析場景(Flume)
1.應用日志寫入Flume模式
外挂模式:Flume SDK:自己編寫日志探測程式并且通過 SDK RPC寫入Flume 服務端的Source中,
内嵌模式:需要修改應用寫日志部分,寫日志時調用内嵌Flume Agent将日志寫入Flume服務端的Source中
内置Log4j:Flume Agent中自帶了Log4j實作類,應用中用的Log4j實作類,配置為Flume Agent自動的Log4j實作類(org.apache.flume.client.log4jappender.log4j.Appender)
2.應用分析
不管是外挂模式還是内嵌模式,都會有一些限制,外挂模式需要自己實作檔案變化監控功能,内嵌模式,需要修改日志寫入部分代碼,寫入檔案的同時必須調用Flume API發送日志到Flume服務端的Source中,内置Log4j需要項目中必須使用Log4j日志架構,隻能是Java平台。