天天看點

Graylog——日志聚合工具的後起之秀

日志管理日志管理工具:收集,解析,可視化

Elasticsearch - 一個基于Lucene的文檔存儲,主要用于日志索引、存儲和分析。

Fluentd - 日志收集和發出

Flume -分布式日志收集和聚合系統

Graylog2 -具有報警選項的可插入日志和事件分析伺服器

Heka -流處理系統,可用于日志聚合

Kibana - 可視化日志和時間戳資料

Logstash -管理事件和日志的工具

Octopussy -日志管了解決方案(可視化/報警/報告)

Graylog與ELK方案的對比:

- ELK

—— Elasticsearch + Logstash + Kibana

- Graylog

—— Elasticsearch + Graylog Server + Graylog Web

之前試過Flunted + Elasticsearch + Kibana的方案,發現有幾個缺點:

1. 不能處理多行日志,比如Mysql慢查詢,Tomcat/Jetty應用的Java異常列印

2. 不能保留原始日志,隻能把原始日志分字段儲存,這樣搜尋日志結果是一堆Json格式文本,無法閱讀。

3. 不複合正規表達式比對的日志行,被全部丢棄。

本着解決以上3個缺點的原則,再次尋找替代方案。

首先找到了商業日志工具Splunk,号稱日志界的Google,意思是全文搜尋日志的能力,不光能解決以上3個缺點,還提供搜尋單詞高亮顯示,不同錯誤級别日志标色等吸引人的特性,但是免費版有500M限制,付費版據說要3萬美刀,隻能放棄,繼續尋找。

最後找到了Graylog,第一眼看到Graylog,隻是系統日志syslog的采集工具,一點也沒吸引到我。但後來深入了解後,才發現Graylog簡直就是開源版的Splunk。

我自己總結的Graylog吸引人的地方:

1. 一體化方案,安裝友善,不像ELK有3個獨立系統間的內建問題。

2. 采集原始日志,并可以事後再添加字段,比如http_status_code,response_time等等。

3. 自己開發采集日志的腳本,并用curl/nc發送到Graylog Server,發送格式是自定義的GELF,Flunted和Logstash都有相應的輸出GELF消息的插件。自己開發帶來很大的自由度。實際上隻需要用inotify_wait監控日志的MODIFY事件,并把日志的新增行用curl/nc發送到Graylog Server就可。

4. 搜尋結果高亮顯示,就像google一樣。

5. 搜尋文法簡單,比如: 

source:mongo AND reponse_time_ms:>5000

 ,避免直接輸入elasticsearch搜尋json文法

6. 搜尋條件可以導出為elasticsearch的搜尋json文本,友善直接開發調用elasticsearch rest api的搜尋腳本。

Graylog開源版官網: https://www.graylog.org/

來幾張官網的截圖:

1. 架構圖

Graylog——日志聚合工具的後起之秀

繼續閱讀