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