日志監(jiān)控和分析在保障業(yè)務(wù)穩(wěn)定運(yùn)行時(shí),起到了很重要的作用,不過(guò)一般情況下日志都分散在各個(gè)生產(chǎn)服務(wù)器,且開(kāi)發(fā)人員無(wú)法登陸生產(chǎn)服務(wù)器,這時(shí)候就需要一個(gè)集中式的日志收集裝置,對(duì)日志中的關(guān)鍵字進(jìn)行監(jiān)控,觸發(fā)異常時(shí)進(jìn)行報(bào)警,并且開(kāi)發(fā)人員能夠查看相關(guān)日志。logstash+elasticsearch+kibana3就是實(shí)現(xiàn)這樣功能的一套系統(tǒng),并且功能更強(qiáng)大。 logstash:是一個(gè)管理日志和事件的工具,你可以收集它們,解析它們,并存儲(chǔ)它們以供以后使用(例如日志搜索),logstash有一個(gè)內(nèi)置的web界面,用來(lái)搜索你的所有日志。logstash在部署時(shí)有兩種運(yùn)行模式:standalone和centralized: * standalone:standalone的意思是所有的事情都在一臺(tái)服務(wù)器上運(yùn)行,包括日志收集、日志索引、前端WEB界面都部署在一臺(tái)機(jī)器上。 * centralized:就是多服務(wù)器模式,從很多服務(wù)器運(yùn)輸(ship)日志到一臺(tái)總的日志(collector)服務(wù)器上用來(lái)索引和查找。 需要注意的是logstash本身并沒(méi)有什么shipper和indexer這種說(shuō)法,因?yàn)椴徽撌沁\(yùn)輸日志的進(jìn)程還是匯集總的日志的進(jìn)程運(yùn)行的都是同一個(gè)程序,只是使用的配置文件不同而已。 elasticsearch: 基于lucene的開(kāi)源搜索引擎,是一個(gè)分布式的搜索分析系統(tǒng),主要特點(diǎn)有:real time data、real time analytics、distributed、high availability、multi-tenancy、full text search、document oriented、conflict management、schema free、restful api等等。 kibana3: 可視化日志和數(shù)據(jù)系統(tǒng),作為WEB前端可以很容易的和elasticsearch系統(tǒng)結(jié)合。kibana有版本2和版本3的區(qū)分,版本2采用ruby編寫(xiě),部署起來(lái)很麻煩,需要安裝很多ruby依賴(lài)包(目前網(wǎng)上多是這個(gè)版本的部署),版本3采用純html+css編寫(xiě),因此部署起來(lái)很方便,解壓即用,目前已經(jīng)是kibana4了,建議大家使用最新版。 出于性能及擴(kuò)展性考慮,實(shí)際應(yīng)用中l(wèi)ogstash我們必然采用centralized模式,最基本的結(jié)構(gòu)圖如下: 1、安裝redis,安裝過(guò)程簡(jiǎn)單,這里不做詳細(xì)說(shuō)明。 2、安裝ElasticSearch(目前版本1.4)
3、啟動(dòng)logstash shipper,定義配置文件logstash.conf,根據(jù)實(shí)際情況定義,以下主要定義了input源為文件,output到redis,啟動(dòng)logstash shipper,例如:
啟動(dòng)shipper: java -jar /home/jws/htdocs/logstash/lib/logstash.jar agent -f /home/jws/htdocs/logstash/conf/logstash.conf -l /home/jws/htdocs/logstash/logs/logstash.log 4、啟動(dòng)logstash indexer logstash的配置文件相當(dāng)簡(jiǎn)單,主要有三部分:inputs、filters、outputs。事件在配置文件中的出現(xiàn)是有順序的。在inputs、output、filter中,允許你設(shè)置配置插件,配置插件由一個(gè)插件名稱(chēng)和緊跟在后面的插件配置代碼塊構(gòu)成。插件中的值可以是布爾值、字符串、數(shù)字、哈希、數(shù)組等,并且支持條件判斷(if...else)。 例如以下indexer中的配置,并啟動(dòng)indexer:
5、安裝并啟動(dòng)kibana3,安裝過(guò)程與普通軟件安裝無(wú)異,可以配合nginx安裝,這里不做描述,需要注意的是需要在kibana config.js中配置elasticSearch的地址與端口。 注意紅框中的內(nèi)容,這只是kibana3的默認(rèn)界面,需要我們用logstash.json代替default.json界面,具體目錄源碼目錄下app/dashboards中。 例如項(xiàng)目中的一個(gè)例子,根據(jù)需求制作圖表(類(lèi)似餅圖,柱狀圖,折線圖等),在筆者實(shí)際項(xiàng)目中,從日志中分析數(shù)據(jù),實(shí)現(xiàn)系統(tǒng)穩(wěn)定性、響應(yīng)時(shí)間、請(qǐng)求量、業(yè)務(wù)響應(yīng)碼、HTTP狀態(tài)碼等等以kibana展現(xiàn); 并且,elasticsearch的用途遠(yuǎn)不如此,可以用來(lái)做搜索數(shù)據(jù)源,ES提供了編程接口,可以使用編程的方式獲取ES中的數(shù)據(jù)自定義開(kāi)發(fā)監(jiān)控程序,靈活且功能強(qiáng)大。 官方文檔(現(xiàn)在都整合在一起了): logstash:https://www./guide/en/logstash/current/index.html elasticsearch:https://www./ kibana:https://www./ |
|