APP開發(fā)程序員如何利用ELK日志分析平臺,我們APP開發(fā)愛好者可以想象下下面的場景:有個(gè)應(yīng)用服務(wù)器集群里面有10臺服務(wù)器,每臺服務(wù)器都提供了API的接口業(yè)務(wù),其使用了負(fù)載均衡技術(shù)把API請求平均分發(fā)到每臺服務(wù)器上,服務(wù)器會把處理流程記錄在日志中。由于應(yīng)用服務(wù)器集群使用了負(fù)載均衡技術(shù),當(dāng)查找問題時(shí)開發(fā)人員根本不知道問題出現(xiàn)在哪臺服務(wù)器,因此開發(fā)人員不得不登錄所有服務(wù)器去逐查看日志,在這個(gè)集群中,開發(fā)人員需要分別查看10臺服務(wù)器的日志。如果集群中機(jī)器的規(guī)模達(dá)到100臺,開發(fā)人員需要登錄100臺服務(wù)器查看日志,這太麻煩了!
為了解決日志查看不方便和日志中的異常(不能及時(shí)報(bào)警等問題),后臺可以引入ELK(Logst ash_Elas ticSearch_Kibaua)這個(gè)分布式的日志收集和分析系統(tǒng)。
APP開發(fā)經(jīng)驗(yàn)之日志處理基本模塊
這個(gè)日志系統(tǒng)各模塊功能如下。
·Logstash:收集處理解析日志。其中有兩個(gè)角色
·shipper.在產(chǎn)生日志的機(jī)器上運(yùn)行,發(fā)送日志至indexer
·indexer,接收并索引化事件。
·ElasticSearcll=一個(gè)基于Lucene的分布式搜索服務(wù),用來提供存儲搜索。
·Kibaua,一個(gè)開源和免費(fèi)的工具,其可以匯總、分析和搜索重要數(shù)據(jù)日志并提供友好的Web界面,用來報(bào)警統(tǒng)計(jì)展示.
APP開發(fā)日志分析流程
APP開發(fā)ELK的流程如圖所示
ELK收集和分析日志的流程如下。
(1)在需要收集日志的機(jī)器上運(yùn)行Logstash (shipper),其用于監(jiān)控、過濾并收集日志。
(2) Logstash (shipper)把符合條件的日志發(fā)送到緩沖隊(duì)列Redis。
(3) Logstash (indexer)從緩沖隊(duì)列Redis讀取日志,將日志收集在起交給搜索服務(wù)ElasticSearch。
(4) ElasticSearch把收集到的日志結(jié)合自定義搜索的規(guī)則索引起來
(5)當(dāng)用戶需要在Kibana獲取數(shù)據(jù)時(shí),Kibana向ElasticSearch發(fā)送請求,在ElasticSearch的自定義搜索返回?cái)?shù)據(jù)的基礎(chǔ)上,以友好的頁面展示給用戶。
APP開發(fā)后臺制作時(shí)如何Docker構(gòu)建一致的開發(fā)環(huán)境
在移動互聯(lián)網(wǎng)企業(yè),開發(fā)者完成某個(gè)功能需求后上線發(fā)布的流程如下:
由開發(fā)者在個(gè)人電腦上部署新的功能后獨(dú)自測試,測試完畢后在測試服務(wù)器中部署新功能,再由公司內(nèi)部的測試人員在測試服務(wù)器,測試完畢后再在生產(chǎn)服務(wù)器部署新功能,正式發(fā)布該功能。
這個(gè)流程如圖3-19所示
在圖3-19所示的流程中會產(chǎn)生下面系列的問題。
·每臺計(jì)算機(jī)的Linux環(huán)境、JDK版本、PHP版本、Nginx版本、MySQL版本等不致,有可能造成某些問題只是某臺計(jì)算機(jī)上出現(xiàn),其他電腦沒法重現(xiàn)。
·某些開發(fā)環(huán)境搭建復(fù)雜,還要分別在個(gè)人計(jì)算機(jī)、測試服務(wù)器、生產(chǎn)服務(wù)器上搭建一次,里面有大量的重復(fù)勞動,效率低下。
·在個(gè)人計(jì)算機(jī)和測試服務(wù)器上有可能只是單機(jī)環(huán)境,到了生產(chǎn)服務(wù)器上變成了分布式環(huán)境,環(huán)境不致導(dǎo)致部署方法不致,造成在測試階段沒法發(fā)現(xiàn)問題。
Docker是個(gè)用于統(tǒng)開發(fā)和部署的輕量級容器,讓開發(fā)者打包其應(yīng)用及相關(guān)的依賴包到個(gè)可移植的容器,發(fā)布該容器到其他機(jī)器,就能很容易地實(shí)現(xiàn)應(yīng)用的部署。好了,關(guān)于APP開發(fā)后臺日志分析與利用Docker構(gòu)建一致環(huán)境的經(jīng)驗(yàn)博納網(wǎng)絡(luò)APP開發(fā)工程師就分享到這里。下期文章中我們接本文最后一節(jié)Docker環(huán)境構(gòu)建未完部分繼續(xù)分享。深圳APP開發(fā)博納網(wǎng)絡(luò)編輯整理。