一.爲何須要日誌管理平臺
做爲DevOps工程師,會常常收到分析生產日誌的需求。在機器規模較少、生產環境管理不規範時,能夠經過分配系統帳號,採用人肉的方式登陸服務器查看日誌。然而高可用架構中,日誌一般分散在多節點,日誌量也隨着業務增加而增長。當業務達到必定規模、架構變得複雜,靠人肉登陸主機查看日誌的方式就會變得混亂和低效。解決這種問題的方法,須要構建一個日誌管理平臺:對日誌進行匯聚和分析,並經過Web UI受權相關人員查看日誌權限。服務器
二.主流日誌管理解決方案
關於企業級日誌管理方案,比較主流的是ELK stack和Graylog。接下來我會對這兩個經常使用方案進行對比,來幫助讀者設計出更適合本身的日誌收集系統。固然,我也會在後續的文章中,詳細介紹這兩個方案的實施步驟,來幫助讀者快速上手。網絡
三.ELK Stack
目前,最著名的開源日誌管理解決方案應該是ELK Stack,之因此稱爲Stack,是由於它不是一個軟件包,而是由同一個團隊開發的開源工具組合:Elasticsearch、Logstash、Kibana、及周邊工具。
Elasticsearch:是一個很是強大和高度可伸縮的搜索引擎,能夠存儲大量數據並做爲集羣使用。在ELK Stack中主要存儲收集來的日誌,並根據設置的索引,進行日誌檢索。
Logstash:具備許多功能的日誌轉發器。支持多種類型的輸入、過濾和輸出。此外,Logstash能夠處理許多編解碼器,例如Json。
Kibana:用戶界面,能夠查看日誌條目、建立炫酷的儀表盤。
ELK Stack的優勢:
1.成名更早
2.知名度更高架構
四.Graylog
Graylog是一個強大的平臺,基於Scala語言開發。使用它能很容易對結構化和非結構化日誌進行管理以及調試應用程序。它依賴Elasticsearch和MongoDB。Graylog的主服務從客戶端節點獲取數據,同時還提供Web接口,方便用戶可視化聚合來的日誌。
Graylog的優勢包括如下方面:
1.免費的開源工具
2.相比ELK更優秀的報警功能
3.更好的交互,經過跟蹤Graylog收到的錯誤堆棧,工程師能夠了解源代碼中的上下文。這大量節省了排錯的時間和精力
4.強大的搜索功能,支持TB級別的查詢
5.有歸檔功能,超過30天的全部內容均可以存儲在廉價存儲中,在出現查詢需求時,能夠從新導入到Graylog
6.Python庫支持工具
五.總結
雖然兩種解決方案在功能上很是類似,但仍有一些差別須要考慮。
二者之間最重要的區別在於,從一開始,Graylog就定位爲強大的日誌解決方案,而ELK則是大數據解決方案。 Graylog能夠經過網絡協議直接從應用程序接收結構化日誌和標準syslog。相反,ELK是使用Logstash分析已收集的純文本日誌的解決方案,而後解析並將它們傳遞給ElasticSearch。
在ELK中,Kibana扮演儀表盤的角色並顯示從Logstash收到的數據。Graylog在這點上更方便,由於它提供了單一應用程序解決方案(不包括ElasticSearch做爲靈活的數據存儲),具備幾乎相同的功能。所以,部署所需的時間更短。此外,與ELK相比,Graylog開箱即用,且具備出色的權限系統,而Kibana則不具有此功能。做爲Elasticsearch的粉絲,我更喜歡Graylog而不是ELK,由於它徹底符合我在日誌管理方面的需求。
Graylog具備直觀的GUI,並提供警報、報告和自定義分析功能。最重要的是,它能在多個日誌源和跨機房收集數TB的數據。基於這些優點,我更喜歡用Graylog而不是另外一個具備相似功能的流行堆棧——ELK。大數據