本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種獲取服務(wù)器日志的方法和系統(tǒng)。
背景技術(shù):
服務(wù)器日志用于記錄服務(wù)器接收到的處理請求以及運(yùn)行錯(cuò)誤等各種信息,是程序員日常排查服務(wù)器程序錯(cuò)誤的主要依據(jù)。通過對服務(wù)器日志進(jìn)行統(tǒng)計(jì)、分析和綜合,還能夠有效地掌握服務(wù)器的運(yùn)行狀況,了解客戶訪問分布,更好地加強(qiáng)系統(tǒng)的維護(hù)和管理。
現(xiàn)有技術(shù)中,當(dāng)服務(wù)器程序出錯(cuò)時(shí),運(yùn)維人員登陸到對應(yīng)的服務(wù)器上,配合程序員查看日志,進(jìn)而排查錯(cuò)誤原因。隨著項(xiàng)目的擴(kuò)張,項(xiàng)目中的服務(wù)器的數(shù)量越來越多,服務(wù)器程序的代碼發(fā)布周期越來越頻繁,導(dǎo)致運(yùn)維人員需要頻繁登陸多臺(tái)服務(wù)器查看日志,占用了運(yùn)維人員大量的日常工作時(shí)間,且工作效率較低。此外,當(dāng)運(yùn)維人員不在現(xiàn)場的時(shí)候,程序員無法使用服務(wù)器日志排查錯(cuò)誤,導(dǎo)致排查錯(cuò)誤的效率較為低下。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種獲取服務(wù)器日志的方法和系統(tǒng),能夠提高排查程序錯(cuò)誤的效率。
為實(shí)現(xiàn)上述目的,本發(fā)明提出一種獲取服務(wù)器日志的系統(tǒng),所述系統(tǒng)包括至少一臺(tái)日志服務(wù)器和多臺(tái)工作服務(wù)器;
工作服務(wù)器,用于將自身生成的服務(wù)器日志發(fā)送給日志服務(wù)器;
日志服務(wù)器,用于接收來自工作服務(wù)器的服務(wù)器日志,將所述服務(wù)器日志保存到本地,并在接收到來自客戶端的查詢請求時(shí),從本地獲取對應(yīng)的服務(wù)器日志,將獲取到的服務(wù)器日志返回給所述客戶端。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種獲取服務(wù)器日志的方法,所述方法包括:
日志服務(wù)器通過消息隊(duì)列接收來自工作服務(wù)器的服務(wù)器日志;
日志服務(wù)器從所述消息隊(duì)列中獲取所述服務(wù)器日志,對所述服務(wù)器日志進(jìn)行存儲(chǔ)到本地;
當(dāng)日志服務(wù)器接收來自客戶端的查詢請求,從本地獲取對應(yīng)的服務(wù)器日志,并將獲取到的服務(wù)器日志返回給所述客戶端。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種獲取服務(wù)器日志的方法,所述方法包括:
工作服務(wù)器收集自身生成的服務(wù)器日志;
工作服務(wù)器對所述服務(wù)器日志進(jìn)行過濾,將過濾后的服務(wù)器日志發(fā)送給日志服務(wù)器。
本發(fā)明提出的獲取服務(wù)器日志的方法和系統(tǒng),通過對多臺(tái)工作服務(wù)器上的服務(wù)器日志進(jìn)行收集,將收集到的服務(wù)器日志集中存儲(chǔ)到一臺(tái)日志服務(wù)器上,并提供查詢界面模塊供用戶自行查看服務(wù)器日志,從而實(shí)現(xiàn)了對查詢服務(wù)器日志的流程的優(yōu)化,提高了排查服務(wù)器程序錯(cuò)誤的效率。另外,通過使用消息隊(duì)列存儲(chǔ)服務(wù)器日志,以異步的方式獲取服務(wù)器日志,從而削平了高峰期的并發(fā)服務(wù)器日志,降低了對日志服務(wù)器的沖擊,改善了日志服務(wù)器的性能。
附圖說明
圖1為實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的獲取服務(wù)器日志的系統(tǒng)結(jié)構(gòu)示意圖;
圖2為本發(fā)明第一實(shí)施例的工作服務(wù)器的結(jié)構(gòu)示意圖;
圖3為本發(fā)明第二實(shí)施例的日志服務(wù)器的結(jié)構(gòu)示意圖;
圖4為通過瀏覽器查看服務(wù)器日志的界面示意圖;
圖5為本發(fā)明第三實(shí)施例的獲取服務(wù)器日志的方法流程圖;
圖6為本發(fā)明第四實(shí)施例的獲取服務(wù)器日志的方法流程圖;
圖7為本發(fā)明第五實(shí)施例的獲取服務(wù)器日志的方法流程圖;
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
現(xiàn)在將參考附圖描述實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的獲取服務(wù)器日志的系統(tǒng),如圖1所示,該系統(tǒng)包括至少一臺(tái)日志服務(wù)器110和多臺(tái)工作服務(wù)器120,其中,工作服務(wù)器110,用于將自身生成的服務(wù)器日志發(fā)送給日志服務(wù)器120。
本發(fā)明各個(gè)實(shí)施例中,服務(wù)器日志中包含日志類型信息,該日志類型信息與服務(wù)器日志所屬項(xiàng)目相對應(yīng)。
此外,工作服務(wù)器110,還用于對自身生成的服務(wù)器日志進(jìn)行過濾,例如,例如,將自身生成的Nginx日志過濾成僅包含所需字段的日志文件。
日志服務(wù)器120,用于接收來自工作服務(wù)器110的服務(wù)器日志,將服務(wù)器日志保存到本地,并在接收到來自客戶端的查詢請求時(shí),從本地獲取對應(yīng)的服務(wù)器日志,將獲取到的服務(wù)器日志返回給客戶端。
本發(fā)明各個(gè)實(shí)施例中,查詢請求中包含服務(wù)器標(biāo)識(shí)和時(shí)間段;相應(yīng)地,日志服務(wù)器120在接收到來自客戶端的查詢請求時(shí),根據(jù)查詢請求中的服務(wù)器標(biāo)識(shí)和時(shí)間段,從本地中獲取與查詢請求中的服務(wù)器標(biāo)識(shí)對應(yīng)的工作服務(wù)器在查詢請求中的時(shí)間段內(nèi)生成的服務(wù)器日志,并將獲取到的服務(wù)器日志發(fā)送給客戶端。
進(jìn)一步地,為了提高安全性,實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的獲取服務(wù)器日志的系統(tǒng),還包括:
網(wǎng)頁服務(wù)器,用于接收來自客戶端的查詢請求,對查詢請求進(jìn)行認(rèn)證,并在認(rèn)證通過后,將查詢請求發(fā)送給查詢模塊114。
其中,網(wǎng)頁服務(wù)器可以是Nginx服務(wù)器,也可以是apache服務(wù)器,其配置中包含HTTP基本認(rèn)證。
在實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的獲取服務(wù)器日志的系統(tǒng)中,通過對多臺(tái)工作服務(wù)器上的服務(wù)器日志進(jìn)行收集,將收集到的服務(wù)器日志集中存儲(chǔ)到一臺(tái)日志服務(wù)器上,并提供查詢模塊供用戶自行查看服務(wù)器日志,從而實(shí)現(xiàn)了對查詢服務(wù)器日志的流程的優(yōu)化,提高了排查服務(wù)器程序錯(cuò)誤的效率。另外,通過使用消息隊(duì)列存儲(chǔ)服務(wù)器日志,能夠以異步的方式獲取服務(wù)器日志,從而削平高峰期的并發(fā)服務(wù)器日志,降低對日志服務(wù)器的沖擊,改善日志服務(wù)器的性能。
基于上述獲取服務(wù)器日志的系統(tǒng),提出本發(fā)明方法各個(gè)實(shí)施例。
如圖2所示,本發(fā)明第一實(shí)施例提出一種工作服務(wù)器,包括:
日志收集模塊121,用于收集所在工作服務(wù)器120生成的服務(wù)器日志,將服務(wù)器日志發(fā)送到日志服務(wù)器110。
具體地,日志收集模塊121監(jiān)控所在工作服務(wù)器120生成的服務(wù)器日志,對服務(wù)器日志進(jìn)行過濾,并將過濾后的服務(wù)器日志發(fā)送到日志服務(wù)器110。例如,日志收集模塊121收集工作服務(wù)器120生成的Nginx日志,將Nginx日志過濾成僅包含所需字段的日志文件,并將該日志文件發(fā)送到日志服務(wù)器110。本發(fā)明各個(gè)實(shí)施例中,發(fā)送到日志服務(wù)器110的服務(wù)器日志中包含日志類型信息,該日志類型信息與服務(wù)器日志所屬項(xiàng)目相對應(yīng)。
上述日志收集模塊121可通過配置Logstash或rsyslog等平臺(tái)實(shí)現(xiàn),當(dāng)通過配置Logstash平臺(tái)實(shí)現(xiàn)時(shí),需要在工作服務(wù)器120上安裝Logstash平臺(tái),包括Logstash平臺(tái)依賴的java環(huán)境,并對Logstash平臺(tái)進(jìn)行配置。例如,將Logstash平臺(tái)配置為通過路徑'/data/logs/system.log'收集類型為"pec"的服務(wù)器日志,使用正則格式[DEBUG\]、[ERROR\]和[EXCEPTION\]對服務(wù)器日志進(jìn)行匹配,并將服務(wù)器日志中的"@version"字段和"message"字段過濾,將過濾后的服務(wù)器日志輸出到Redis數(shù)據(jù)庫中,該Redis數(shù)據(jù)庫的地址為"10.47.49.134",端口號(hào)為6379,數(shù)據(jù)類型為"list",鍵值為"Logstash:nubia_pec"。其中,Logstash是一個(gè)開源的日志管理工具;rsyslog是一個(gè)用于快速處理日志的自由軟件。
本發(fā)明第一實(shí)施例通過對多臺(tái)工作服務(wù)器上的服務(wù)器日志進(jìn)行收集和過濾,將過濾后的服務(wù)器日志集中存儲(chǔ)到一臺(tái)日志服務(wù)器上,實(shí)現(xiàn)了根據(jù)需求將收集到的服務(wù)器日志過濾成需要的日志格式,提高了服務(wù)器日志的格式靈活性,實(shí)現(xiàn)了后續(xù)對查詢服務(wù)器日志的流程的優(yōu)化,從而提高了排查服務(wù)器程序錯(cuò)誤的效率。此外,過濾后的服務(wù)器日志中包含日志類型信息,便于對服務(wù)器日志進(jìn)行分類。
如圖3所示,本發(fā)明第二實(shí)施例提出一種日志服務(wù)器,包括:
消息處理模塊111,用于以消息隊(duì)列的方式緩存服務(wù)器日志。
日志轉(zhuǎn)載模塊112,用于從消息處理模塊111中獲取服務(wù)器日志,將服務(wù)器日志發(fā)送到存儲(chǔ)模塊113。
本發(fā)明各個(gè)實(shí)施例中,消息處理模塊111和日志轉(zhuǎn)載模塊112可分別通過配置Redis數(shù)據(jù)庫和Logstash平臺(tái)實(shí)現(xiàn),當(dāng)通過配置Logstash平臺(tái)實(shí)現(xiàn)日志轉(zhuǎn)載模塊112時(shí),需要在日志服務(wù)器110上安裝Logstash平臺(tái),包括Logstash平臺(tái)依賴的java環(huán)境,并對Logstash平臺(tái)進(jìn)行配置。例如將Logstash平臺(tái)配置為從Redis數(shù)據(jù)庫獲取服務(wù)器日志,將該服務(wù)器日志輸出給elasticsearch搜索引擎。其中,Redis數(shù)據(jù)庫的地址為"10.47.49.134",端口號(hào)為6379,數(shù)據(jù)類型為"list",鍵值為"Logstash:nubia_pec"。elasticsearch搜索引擎的協(xié)議為"http",地址為"127.0.0.1",端口號(hào)為"9200",索引為"nubia_pec-%{+YYYY.MM.dd}"。
存儲(chǔ)模塊113,用于存儲(chǔ)服務(wù)器日志。
本發(fā)明各個(gè)實(shí)施例中,存儲(chǔ)模塊113可通過配置elasticsearch搜索引擎實(shí)現(xiàn),即,在日志服務(wù)器110上安裝elasticsearch搜索引擎以及其所依賴的java環(huán)境。例如,配置elasticsearch搜索引擎的集群名稱為elasticsearch,設(shè)置默認(rèn)索引分片個(gè)數(shù)為5片,設(shè)置默認(rèn)索引副本個(gè)數(shù)為1個(gè)副本,設(shè)置配置文件的存儲(chǔ)路徑為根目錄下的config文件夾,設(shè)置索引數(shù)據(jù)的存儲(chǔ)路徑為根目錄下的data文件夾,設(shè)置臨時(shí)文件的存儲(chǔ)路徑為根目錄下的work文件夾,設(shè)置服務(wù)器日志的存儲(chǔ)路徑為根目錄下的logs文件夾,設(shè)置插件的存放路徑為根目錄下的plugins文件夾。其中,elasticsearch搜索引擎是一個(gè)基于lucene構(gòu)建的準(zhǔn)實(shí)時(shí)的搜索引擎。
查詢模塊114,用于接收來自客戶端的查詢請求,從存儲(chǔ)模塊113中獲取對應(yīng)的服務(wù)器日志,并將獲取到的服務(wù)器日志返回給客戶端。
其中,查詢請求中包含服務(wù)器標(biāo)識(shí)和時(shí)間段;相應(yīng)地,查詢模塊114,具體用于接收來自客戶端的查詢請求,根據(jù)查詢請求中的服務(wù)器標(biāo)識(shí)和時(shí)間段,從存儲(chǔ)模塊113中獲取與該服務(wù)器標(biāo)識(shí)對應(yīng)的工作服務(wù)器在該時(shí)間段內(nèi)生成的服務(wù)器日志,并將獲取到的服務(wù)器日志發(fā)送給客戶端。
本發(fā)明各個(gè)實(shí)施例中,查詢模塊114可通過配置kibana接口實(shí)現(xiàn),即,在日志服務(wù)器110上安裝好kibana接口,并將kibana接口配置為從elasticsearch搜索引擎中獲取數(shù)據(jù)。用戶通過瀏覽器等客戶端訪問kibana接口,查詢服務(wù)器日志,如圖4所示。其中,kibana接口是一個(gè)針對elasticsearch搜索引擎的開源分析及可視化平臺(tái)。
本發(fā)明第二實(shí)施例通過將多臺(tái)工作服務(wù)器上的服務(wù)器日志集中存儲(chǔ)到一臺(tái)日志服務(wù)器上,并提供查詢界面供用戶自行查看服務(wù)器日志,從而實(shí)現(xiàn)對查詢服務(wù)器日志的流程的優(yōu)化,提高了排查服務(wù)器程序錯(cuò)誤的效率。另外,通過使用消息隊(duì)列存儲(chǔ)服務(wù)器日志,能夠以異步的方式獲取服務(wù)器日志,從而削平高峰期的并發(fā)服務(wù)器日志,降低對日志服務(wù)器的沖擊,改善日志服務(wù)器的性能。
如圖5所示,本發(fā)明第三實(shí)施例提出一種獲取服務(wù)器日志的方法,該方法包括:
步驟301,日志服務(wù)器通過消息隊(duì)列接收來自工作服務(wù)器的服務(wù)器日志。
其中,服務(wù)器日志中包含日志類型信息,該日志類型信息與服務(wù)器日志所屬項(xiàng)目相對應(yīng)。
步驟302,日志服務(wù)器從消息隊(duì)列中獲取服務(wù)器日志,將服務(wù)器日志存儲(chǔ)到本地。
步驟303,日志服務(wù)器接收來自客戶端的查詢請求,從本地獲取對應(yīng)的服務(wù)器日志,并將獲取到的服務(wù)器日志返回給客戶端。
其中,查詢請求中包含服務(wù)器標(biāo)識(shí)和時(shí)間段,日志服務(wù)器根據(jù)查詢請求中的服務(wù)器標(biāo)識(shí)和時(shí)間段,獲取與該服務(wù)器標(biāo)識(shí)對應(yīng)的工作服務(wù)器在該時(shí)間段內(nèi)生成的服務(wù)器日志。
本發(fā)明第三實(shí)施例通過對多臺(tái)工作服務(wù)器上的服務(wù)器日志進(jìn)行收集,將收集到的服務(wù)器日志集中存儲(chǔ)到一臺(tái)日志服務(wù)器上,并提供查詢界面供用戶自行查看服務(wù)器日志,從而實(shí)現(xiàn)對查詢服務(wù)器日志的流程的優(yōu)化,提高了排查服務(wù)器程序錯(cuò)誤的效率。另外,通過使用消息隊(duì)列存儲(chǔ)服務(wù)器日志,能夠以異步的方式獲取服務(wù)器日志,從而削平高峰期的并發(fā)服務(wù)器日志,降低對日志服務(wù)器的沖擊,改善日志服務(wù)器的性能。
如圖6所示,本發(fā)明第四實(shí)施例提出一種獲取服務(wù)器日志的方法,該方法包括:
步驟401,日志服務(wù)器通過消息隊(duì)列接收來自工作服務(wù)器的服務(wù)器日志。
其中,服務(wù)器日志中包含日志類型信息,該日志類型信息與服務(wù)器日志所屬項(xiàng)目相對應(yīng)。
步驟402,日志服務(wù)器從消息隊(duì)列中獲取服務(wù)器日志,將服務(wù)器日志存儲(chǔ)到本地。
步驟403,當(dāng)網(wǎng)頁服務(wù)器對來自客戶端的查詢請求認(rèn)證通過后,日志服務(wù)器接收網(wǎng)頁服務(wù)器轉(zhuǎn)發(fā)的查詢請求。
步驟404,日志服務(wù)器從本地獲取與查詢請求對應(yīng)的服務(wù)器日志,并將獲取到的服務(wù)器日志返回給客戶端。
其中,查詢請求中包含服務(wù)器標(biāo)識(shí)和時(shí)間段,日志服務(wù)器根據(jù)查詢請求中的服務(wù)器標(biāo)識(shí)和時(shí)間段,獲取與該服務(wù)器標(biāo)識(shí)對應(yīng)的工作服務(wù)器在該時(shí)間段內(nèi)生成的服務(wù)器日志。
本發(fā)明第四實(shí)施例通過對多臺(tái)工作服務(wù)器上的服務(wù)器日志進(jìn)行收集,將收集到的服務(wù)器日志集中存儲(chǔ)到一臺(tái)日志服務(wù)器上,并在網(wǎng)頁服務(wù)器對來自客戶端的查詢請求認(rèn)證通過后,提供查詢界面供用戶自行查看服務(wù)器日志,從而實(shí)現(xiàn)對查詢服務(wù)器日志的流程的優(yōu)化,提高了排查服務(wù)器程序錯(cuò)誤的效率以及查詢服務(wù)器日志的安全性。此外,服務(wù)器日志中包含日志類型信息,便于對服務(wù)器日志進(jìn)行分類。通過使用消息隊(duì)列存儲(chǔ)服務(wù)器日志,能夠以異步的方式獲取服務(wù)器日志,從而削平高峰期的并發(fā)服務(wù)器日志,降低對日志服務(wù)器的沖擊,改善日志服務(wù)器的性能。
如圖7所示,本發(fā)明第五實(shí)施例提出一種獲取服務(wù)器日志的方法,該方法包括:
步驟501,工作服務(wù)器收集自身生成的服務(wù)器日志,對該服務(wù)器日志進(jìn)行過濾。
具體地,工作服務(wù)器中日志收集模塊監(jiān)控自身生成的服務(wù)器日志,并對服務(wù)器日志進(jìn)行過濾,即,根據(jù)需求將服務(wù)器日志過濾成對應(yīng)的日志格式。例如,日志收集模塊工作服務(wù)器收集自身生成的Nginx日志,將Nginx日志過濾成僅包含所需字段的日志文件。
步驟502,工作服務(wù)器將過濾后的服務(wù)器日志發(fā)送到日志服務(wù)器。
其中,過濾后的服務(wù)器日志中包含日志類型信息,該日志類型信息與服務(wù)器日志所屬項(xiàng)目相對應(yīng)。
本發(fā)明第五實(shí)施例通過對多臺(tái)工作服務(wù)器上的服務(wù)器日志進(jìn)行收集和過濾,將過濾后的服務(wù)器日志集中存儲(chǔ)到一臺(tái)日志服務(wù)器上,實(shí)現(xiàn)了根據(jù)需求將收集到的服務(wù)器日志過濾成需要的日志格式,提高了服務(wù)器日志的格式靈活性,實(shí)現(xiàn)了后續(xù)對查詢服務(wù)器日志的流程的優(yōu)化,從而提高了排查服務(wù)器程序錯(cuò)誤的效率。此外,過濾后的服務(wù)器日志中包含日志類型信息,便于對服務(wù)器日志進(jìn)行分類。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。