【2013年9月5日 51CTO外電頭條】要是系統上哪里出現了什么岔子,日志文件是尋找線索以便排除故障的頭一個地方。是內置有分析工具的日志服務,它可以整合來自許多服務器的日志,甚至讓這些數據易于搜索。
要是企業網絡上任何環節出現了什么岔子,管理員就得馬上找出問題,并解決問題。找到出錯信息通常不是問題,畢竟大多數 IT系統 給出了源源不斷的系統日志條目和出錯消息,但要在包括眾多設備、系統和服務器的復雜網絡中正確地評估這些信息,卻常常是說起來容易做起來難。
一個問題是生成的大量信息。一方面,諸如集群管理器這些工具特別啰嗦,顯示的信息要比實際需要的信息多好多倍。另一方面,就Apache而言,要是管理員對它進行了設置,分開記錄每個虛擬主機的日志,數據最后有可能跑到好多個地方。在為許多客戶提供服務的Web服務器上,大量的日志文件會日積月累,這就意味著為某個用戶排除具體問題可能是一項沒完沒了的任務。
依賴 、或其他云平臺的云計算環境擁有的服務器很少是少于20臺的,服務器日志的數量會激增,與服務器系統的數量成正比。
通常采用的解決辦法就是,在中央系統上由日志服務器收集日志,而不是任由日志散布于整個網絡上。這個做法可以幫助你通過 SSH 在多臺服務器之間瀏覽查找時,無需過于頻繁地敲鍵。有些日志文件甚至為日志編制索引,以便搜索起來既快速又方便。像 Splunk 這些商用工具就提供了這種增值類型的日志服務。
面對這些商用日志工具,開源社區祭出的利器就是 ,這項中央日志服務提供了一種選擇,可以通過Web界面來搜索現有的日志條目。
及其助手
嚴格來說,光憑無力確保對日志文件實行合理化、集中式的管理。執行任務時想取得預期的效果,就需要得到一些幫助。本身是個Java應用程序,盡管好多管理員對Java懷有種種偏見——無論這些偏見有沒有道理,開發人員決定支持Java有其充分的事實根據。因為Java還安裝在Windows上——這是理所當然的事,可以在日志文件庫里面加入Windows日志文件;在許多情況下,換成其他的Rsyslog服務,就很難做到這一點。
的安裝牽涉不止一臺服務器,它由至少五個不同的服務組成。核心角色由的自有組件shipper來扮演:shipper基本上是在每個目標系統上運行的客戶端,負責收集日志消息。下一步,shipper把日志消息發送給indexer,該組件負責按管理員指定的方式,解讀和處理日志信息。indexer所在的主機通常還運行 Web服務器,這為管理員提供了查找日志文件的搜索框。在后臺,并不直接屬于,但對其功能而言很重要的另外兩個服務負責各自的任務,它們是 Redis 消息代理和存儲及搜索環境。
Redis為shipper與indexer之間的通信起到了關鍵作用。每臺服務器上的實例將其消息傳送到Redis服務器;在該服務器上, indexer在下一步中檢索這些消息。也是個Java應用程序,它在后臺編制索引,并提供界面,以便 Web服務器將來自Web界面的搜索請求轉發至該界面。
模塊化設計
的一大優點在于其多樣性,這源自其模塊化設計,因而讓這個工具顯得非常靈活:比如說就在幾個月前,安裝的使用AMQP代理來取代Redis還很常見——是通常的選擇。
不過,的amqp模塊沒有得到非常好的維護,也不是特別受開發者的歡迎。很容易實現改用另一種不同代理的決定,那是由于只需要為消息代理編寫接口。與此同時,Redis連接器可以順暢地工作,遂成了明日黃花。
沒有限制
在其他地方,對 管理員 的創造力幾乎沒有什么限制:這款工具不僅提供了通過已定義過濾器存檔日志條目的功能,還提供了解讀日志條目的功能,因為每一個日志條件都編入索引、易于搜索。
比如說,一接到請求,會管理HTTP日志,以后可以在Web界面中進行有條理的搜索,查找已引起“內部錯誤”的所有可能的查詢。比如說,如果應用到,這意味著管理員可以明確搜索帶ERROR前綴的日志消息。
還可以設計過濾器,完全去除日志記錄中的各個條目。比如說,如果你想讓典型的系統日志MARK消息不出現在日志存檔中,只要改動 shipper配置。
測試安裝
如果你想試一試,那么你很走運。與網站上的描述恰恰相反,安裝工作絕不是什么極為艱巨的任務。只要確保事先明確你將哪個角色分配給了哪個主機。一旦明確了Redis服務器、和 indexer將運行哪個主機,你就可以準備上路了。下面這個例子基于Ubuntu 12.04,但也適用于Debian。網上也有面向典型企業發行版的Redis和的RPM程序包,包括紅帽企業級Linux(RHEL)和SUSE Linux企業級服務器(SLES)等發行版。
安裝Redis有多容易,這在很大程度上取決于有沒有適用你系統的Redis服務器程序包。在Ubuntu上,一個簡單的命令:
apt--server
即可安裝相關組件。之后,建議修改/etc/redis/redis.conf中的127.0.0.1 bind條目,那樣它含有該主機的IP地址。要不然,Redis只連接到本地主機,這會阻止其他主機將各自的消息直接發送到Redis。重視安全的那些管理員應該通過redis.conf里面的指令,設定一個訪問密碼。
安裝
(見圖1)是個類似的Java應用程序;遺憾的是,Ubuntu里面沒有任何程序包。
歡迎加入我愛機器學習群:
微信掃一掃,關注我愛機器學習公眾號
*請認真填寫需求信息,我們會在24小時內與您取得聯系。