Introduction or Why Should I Bother
? ?日志管理通常是被認為一件即痛苦又黑暗的經歷。確實,熟知良好的日志管理將會是一個緩慢而不斷進化的過程。新的系統管理人員,在遇到問題時,總是被告知“去查看日志吧”。這時,在日志和事件數據中,通過簡單系統命令的組合,如cat、tail、grep(還包括sed、awk、perl)等,診斷并確定出問題所在。他們將會成為命令行下的專家,熟知正則表達式的功夫:如從混雜的日志事件中查詢(searching)、解析(parsing)、剝離(stripping)、處理(manipulating)、提取(extracting)數據。我強烈建議所有的系統管理人員都應該學習掌握這些強大而實用的技巧。
? ?不幸的是,這樣簡單的解決方案(僅靠系統命令)并不能擴展。在多數情況下,你將面對多臺主機和日志文件的多樣來源。你將面對幾十、幾百、甚至上千臺的主機,并在物理端、虛擬端、云端運行著多種相互通信的應用和跨地區跨網絡結構的服務。在當今世界,來自于單一應用、服務或主機的日志已越來越不能夠診斷復雜的多層次(multi-tier)事件。
? ?為了解決這種分歧(gap),日志管理必須發展至集中化,選擇使用的工具也擴展至包括配置應用(applications)生成中心日志,配置服務(如rsyslog、syslog-ng)生成集中傳輸的系統日志輸出。然后,事件(events)開始流入,并建立接收這些數據的專門的日志服務器,消耗越來越多的存儲空間。
? ?但這還遠沒有結束,問題將從過少的信息量轉變為過多的信息量和過少的實質內容。你將需要篩選百萬或者數十億行的日志,而這些日志又將在不同時區、不同格式、甚至不同語言下產生。這樣,從不斷增長的日志數據流中找到需要的數據將變得急劇的困難,同時找出與其他事件的關聯將更加困難,故不斷增長的日志事件的收集將弊大于利。
? ?為了解決這個新問題,你必須擴展你的日志管理解決方案,以包括對日志更好的語法分析、更靈活的存儲機制,還得不帶可搜索和索引技術。從當初對日志文件進行簡單的grep操作,到進階為不依靠外力的主要項目(project)。這個項目在精力和費用同等代價的情況下,實現了多個解決方案的迭代融合。
簡介(Introducing LogStash)
為了避免走上這條路,即伴隨著高成本投入和潛在的發展困境,你可以開始嘗試LogStash。LogStash提供了一套整合的框架,包括日志收集、集中化、語法分析、存儲和搜索等。
? ?LogStash是開源免費的,由美國的開發者兼Dreamhost的日志霸主(Logging Czar)Jordan Sissel開發。安裝簡單,高性能,可擴展,易于二次開發。
? ?LogStash擁有豐富多樣的輸入機制:可以從TCP/UDP、文件、Syslog、微軟日志事件(Microsoft Windows EventLogs)、輸入(STDIN)和其它來源等獲得輸入信息。結果就是,在你的環境下,很少有機會不能從LogStash提取日志,或發送日志至LogStash。
? ?當上述日志到達LogStash服務器時,將提供一個大集合的過濾器,允許你對這些事件進行修改、操作和轉化。你可以從日志事件中提取你所需要的信息,并賦予其上下文內容(context)。LogStash使得查詢這些事件變得簡單,也使得利用日志數據產生結論并做決定變得容易。
? ?最后,當輸出數據時,LogStash依然支持大量的輸出方式,包括TCP/UDP、郵件(email)、文件、HTTP、Nagios和其他大量的網絡在線服務。你可以將LogStash和度量引擎(metrics engines)、報警工具(alerting tools)、畫圖套件(graphing suites)、存儲器(storage destinations)等進行整合,甚至可以建立自己的日志輸出的整合方式。
LogStash設計及架構(LogStash design and architecture)
? ?LogStash是由JRuby語言編寫的,并運行在Java虛擬機(JVM)上。它的架構簡單,并是基于消息的(message-based)。不同于分離的代理端(agent)和服務器端(server),LogStash可配置一個簡單的代理端,通過與其他開源組件的結合,以實現不同的功能。
? ?在LogStash的生態系統中,存在四個組件:
? ? ? ?Shipper:發送事件(event)至LogStash;遠程代理端只需要運行這個組件即可;
? ? ? ?Broker and Indexer:接收事件,并對事件建立索引;
? ? ? ?Search and Storage:允許存儲和搜索事件;
? ? ? ?Web Interface:基于Web的前端界面
? ?LogStash服務器端獨立運行以上一個或者多個組件,以便于分離組件和對LogStash進行擴展。
? ?在多數情況下,你一般需要運行兩大類LogStash主機:
? ? ? ?一類主機運行LogStash代理端作為事件的轉發者(shipper),將應用、服務和主機的日志發送至中心LogStash服務器。這類主機將只需要運行LogStash代理程序(即shipper);
? ? ? ?另一類主機,即是中心LogStash服務器,可運行包括代理(Broker)、索引器(Indexer)、搜索和存儲(Search and Storage)、Web界面(Web Interface)等的集合,以對日志進行接收、處理和存儲。
這本書包含什么?(What's in the book?)
在這本書中,我將帶領你們熟悉安裝、部署、管理和擴展LogStash。為了達到這個目的,我將介紹你進入Example.com(一個虛擬網站),在那里你將作為一名系統管理人員開始新的工作。你負責的第一個項目就是開發一套新的日志管理方案。
? ?我們將會教你如何:
? ? ? ?安裝和部署LogStash;
? ? ? ?從Shipper端轉發事件(即日志)至中心LogStash服務器;
? ? ? ?使用多種技術過濾進入的事件;
? ? ? ?輸出這個事件至可選擇的可用目的地;
? ? ? ?使用LogStash的Kibana進行web前端展示;
? ? ? ?當環境發展時擴容LogStash運行結構;
? ? ? ?快速簡單的延伸LogStash以交付額外的功能。
? ?在本書結束時,你應該擁有一套可部署在自己環境下的實用而有效的日志管理方案。
LogStash資源(LogStash resources)
LogStash官網:http://www.logstash.net/
? ?LogStash指南:http://cookbook.logstash.net/
? ?GitHub上的LogStash源代碼:https://github.com/logstash/logstash/
? ?作者Jordan Sissel的主頁:http://www.semicomplete.com/
如何獲得幫助(Getting help with LogStash)
? ?LogStash的開發者Jordan Sissel有一句使得獲取幫助變得容易的格言:如果一個新手體驗不好,這將是LogStash的bug(If a newbie has a bad time, it's a bug in LogStash)。所以即使通過郵件列表(mailing list)或者IRC尋求幫助遇到麻煩,你也可以通過LogStash社區獲得友好并有益的支持。
? ?LogStash文檔:http://logstash.net/docs/1.2.2/
? ?LogStash指南:http://cookbook.logstash.net/
? ?LogStash用戶郵件列表:https://groups.google.com/forum/?fromgroups#!forum/logstash-users
? ?LogStash Bug追蹤:https://logstash.jira.com/secure/Dashboard.jspa
? ?Freenode上的IRC頻道:#logstash
溫馨提醒(A mild warning)
LogStash是一個年輕的產品,還處于周期的開發環境下,將會定期的改變、添加、更新或者棄用某些特性。我建議你們在Jira支持站點(https://logstash.jira.com/secure/Dashboard.jspa)或GitHub上跟隨我們的開發進度,回顧每個版本發布時的chang日志以了解所做的修改。LogStash通常向后兼容(backwards compatible),同時問題(issue)出現后能被告知,則可節省不必要的排錯(troubleshooting)精力。
本文轉自 xxrenzhe11 51CTO博客,原文鏈接:http://blog.51cto.com/xxrenzhe/1343968,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的Introduction or Why Should I Bother的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Feature Extractor[De
- 下一篇: 11月22日弹性计算跟您在广州不见不散