日志管理日志管理工具:收集,解析,可視化
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. 架構圖