国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

新疆天文臺天文觀測數(shù)據(jù)傳輸日志系統(tǒng)設(shè)計與實現(xiàn)*

2019-04-19 08:56張海龍冶鑫晨王萬瓊托乎提努爾
天文研究與技術(shù) 2019年2期
關(guān)鍵詞:腳本文件夾日志

朱 艷,張海龍,冶鑫晨,王 杰,王萬瓊,托乎提努爾,李 嘉,張 萌

(1. 中國科學院新疆天文臺,新疆 烏魯木齊 830011;2. 中國科學院大學,北京 100049;3. 中國科學院射電天文重點實驗室,江蘇 南京 210008)

由于天文觀測的特殊性,望遠鏡觀測臺站與天文數(shù)據(jù)存儲中心往往相距遙遠,觀測產(chǎn)生的科學數(shù)據(jù)需要通過專線傳輸?shù)綌?shù)據(jù)中心永久存儲,傳輸?shù)臄?shù)據(jù)專線長期暴露在外會產(chǎn)生多種問題,導(dǎo)致數(shù)據(jù)傳輸中斷。數(shù)據(jù)傳輸過程中需要控制系統(tǒng)與詳細的日志系統(tǒng)以便及時發(fā)現(xiàn)問題,并在故障修復(fù)后重新傳輸數(shù)據(jù),若有直觀的展示和可視化管理界面,將極大地方便數(shù)據(jù)管理員進行數(shù)據(jù)統(tǒng)計與分析。數(shù)據(jù)傳輸過程中的日志記錄和之后對日志的分析查詢是天文數(shù)據(jù)傳輸系統(tǒng)的重要組成部分,也是本文的主要內(nèi)容。本文以新疆天文臺觀測數(shù)據(jù)在傳輸過程中遇到的問題為基礎(chǔ),設(shè)計并開發(fā)了一套數(shù)據(jù)傳輸日志系統(tǒng),實現(xiàn)數(shù)據(jù)查詢、統(tǒng)計、分析等功能。

文[1-2]研發(fā)了下一代歸檔系統(tǒng)[注]https://github.com/ICRAR/ngas(Next Generation Archive System, NGAS),主要目標是處理來自望遠鏡的大數(shù)據(jù)流,該系統(tǒng)很好地滿足了不斷增長的數(shù)據(jù)傳輸與管理需要。NGAS提供用戶基于URL命令的接口,支持包括歸檔、檢索在內(nèi)的幾十個命令。目前,NGAS已經(jīng)應(yīng)用在多個數(shù)據(jù)中心的數(shù)據(jù)傳輸中,ALMA,MWA,F(xiàn)AST產(chǎn)生的數(shù)據(jù)已經(jīng)使用NGAS進行傳輸,目前上海天文臺也計劃使用NGAS進行數(shù)據(jù)傳輸。

rsync是一款數(shù)據(jù)鏡像備份工具,可實現(xiàn)本地主機與遠程主機上的文件同步, rsync僅傳送本地與遠程兩個位置的數(shù)據(jù)差異部分,數(shù)據(jù)傳輸效率較高[3]。rsync執(zhí)行日志默認輸出到syslog,支持指定同步日志文件位置和定制日志文件的具體字段。rsync存在記錄日志信息單一的問題,無法滿足海量天文數(shù)據(jù)傳輸過程中狀態(tài)判斷和問題發(fā)現(xiàn),真實的天文數(shù)據(jù)傳輸過程需要更為詳盡的日志內(nèi)容。

日志審計跟蹤發(fā)生在對象上的活動,在軟件系統(tǒng)中起輔助作用,在滿足需求的情況下應(yīng)盡量簡單高效。已經(jīng)存在成熟、優(yōu)秀的日志系統(tǒng),如Glog[注]https://github.com/google/glog等,由于框架龐大導(dǎo)致開銷也大[4]。NGAS與rsync都不支持日志多目的地輸出,rsync也不提供日志輪轉(zhuǎn)功能。日志文件輪轉(zhuǎn)配置、多目的地輸出、存儲數(shù)據(jù)按天或按文件夾的統(tǒng)計結(jié)果寫入日志文件與數(shù)據(jù)庫表中等需求都是已有日志系統(tǒng)無法滿足的。

1 天文數(shù)據(jù)傳輸日志系統(tǒng)設(shè)計

新疆天文臺在南山建有26 m射電望遠鏡,其本部位于南山觀測站以北約100 km。望遠鏡觀測到的原始數(shù)據(jù)經(jīng)專線傳輸?shù)叫陆煳呐_本部進行異地備份[5],本日志系統(tǒng)以rsync軟件工具為基礎(chǔ)。

1.1 日志系統(tǒng)的整體架構(gòu)

如圖1,日志系統(tǒng)包括日志收集、存儲、檢索3部分。通過日志收集器進行日志的收集,收集器對本機上觀測數(shù)據(jù)存儲目錄定時掃描并進行處理,根據(jù)配置文件中的數(shù)值選擇掃描的間隔時間。存儲服務(wù)進程接收到收集器的輸出信息后存儲為數(shù)據(jù)庫表內(nèi)容,同時存入日志文件。日志檢索系統(tǒng)根據(jù)管理員檢索條件顯示日志信息,控制后臺服務(wù)程序(服務(wù)的啟動、關(guān)閉、重啟等),修改配置文件。

圖1 日志系統(tǒng)結(jié)構(gòu)圖
Fig.1 Log system structure

1.2 關(guān)鍵點

圖2為日志系統(tǒng)后臺程序?qū)崿F(xiàn)細節(jié)圖。

監(jiān)控腳本:執(zhí)行監(jiān)控任務(wù)的腳本,共有兩個監(jiān)控腳本,彼此監(jiān)控。

控制腳本:根據(jù)配置文件內(nèi)容,控制各個腳本的輸入?yún)?shù),如腳本內(nèi)容的循環(huán)間隔等。

監(jiān)控對象:由檢查更新和數(shù)據(jù)寫入兩部分組成。檢查更新腳本通過檢測發(fā)送接收兩端數(shù)據(jù)對比來確定是否需要同步數(shù)據(jù)備份,該腳本只存在接收端日志系統(tǒng)中。數(shù)據(jù)寫入由文件信息數(shù)據(jù)和統(tǒng)計信息數(shù)據(jù)組成。文件信息寫入腳本記錄最新一次存儲目錄掃描后新增的文件信息,統(tǒng)計信息腳本負責統(tǒng)計存儲根目錄與其下的各個文件夾以及每日的增量信息。

圖2 實現(xiàn)細節(jié)圖
Fig.2 Implementation details

1.2.1 互相監(jiān)控體系

shell腳本在Linux系統(tǒng)運行中可能會非正常退出或異常結(jié)束,日志系統(tǒng)必須隨時監(jiān)測保證整套系統(tǒng)正常運行。監(jiān)控腳本1、監(jiān)控腳本2、監(jiān)控對象組成了一個牢固的互相監(jiān)控體系。監(jiān)控腳本1與監(jiān)控腳本2彼此互相監(jiān)控,監(jiān)控對象同時被兩個監(jiān)控腳本監(jiān)控。監(jiān)控腳本主要任務(wù)是檢查腳本進程的運行狀態(tài),腳本一旦不在進程列表中會被立刻喚醒。這樣的監(jiān)控體系可以保證監(jiān)控對象一直處在運行狀態(tài),保證日志系統(tǒng)在無人值守的情況下能夠長時間穩(wěn)定運行。

1.2.2 Linux 實現(xiàn)

控制腳本需要同時運行多個腳本,就需要啟動多個后臺進程,系統(tǒng)采用在執(zhí)行腳本命令后加&操作符實現(xiàn)多線程,即:

./script_name.sh &

加&操作符會對SIGINT信號免疫,表示該條命令將在子shell中執(zhí)行,但該條命令所在終端被關(guān)閉,進程也被關(guān)閉。實現(xiàn)真正后臺執(zhí)行應(yīng)在語句前面加上nohup,對SIGHUP信號免疫,即:

nohup./script_name.sh &

監(jiān)控對象包含多個腳本,通過shell的多線程技術(shù)實現(xiàn)一個控制腳本啟動多個腳本。監(jiān)控對象內(nèi)腳本若停止運行將被控制腳本喚醒。

2 系統(tǒng)實現(xiàn)

2.1 開發(fā)語言簡介

新疆天文臺數(shù)據(jù)傳輸日志系統(tǒng)的后臺程序由shell腳本組成,日志檢索系統(tǒng)由Qt語言在集成環(huán)境Qt Creator內(nèi)完成。

shell是用戶使用Linux系統(tǒng)的橋梁,接收用戶鍵入的命令并送入內(nèi)核執(zhí)行。shell腳本是用shell命令組成的程序,shell作為一種編程語言,也有分支控制結(jié)構(gòu)和循環(huán)結(jié)構(gòu)等普通編程語言具有的特點,在Linux上統(tǒng)計信息使用命令組合可以方便得到統(tǒng)計結(jié)果。

Qt是一個跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架,Qt語言模塊化程度高且可重用性較好,Qt簡化了開發(fā)和維護圖形用戶應(yīng)用程序的任務(wù)[6],內(nèi)部的組件通過Qt特有的信號槽機制通信[7]。

2.2 日志文件結(jié)構(gòu)

數(shù)據(jù)傳輸日志系統(tǒng)的日志包括兩部分:(1)記錄數(shù)據(jù)存儲在本地機器上的處理后的統(tǒng)計日志,稱為普通日志,這種日志以文件形式存儲在以日期命名的log文件中,有數(shù)據(jù)存入就會產(chǎn)生新日志文件;(2)使用日志檢索系統(tǒng)產(chǎn)生的如登錄、退出系統(tǒng)記錄,界面操作的相關(guān)日志,記錄用戶行為軌跡,稱為系統(tǒng)日志,這類日志的命名規(guī)則由配置文件決定,配置文件中日志文件輪轉(zhuǎn)提供大小和時間兩個選項。另外普通日志中的某些信息需要寫入數(shù)據(jù)庫表中。

(1)普通日志

普通日志寫入文本文件,同時也將某些字段寫入數(shù)據(jù)庫表中,其輸出格式如下:

[] []

-e.g.:

[2018-06-04 19:28:22][INFO]/data/2014/2014011871493.342018-04-13 13:30:25

字段意義對應(yīng)如下:

表示日志記錄日期和時間; 代表日志等級,可取 “INFO” “WARNING”“ERROR”“NOTICE”; 表示數(shù)據(jù)存儲路徑下的各文件夾的絕對路徑; 表示該文件夾下文件個數(shù); 表示該文件夾下文件總量(單位為MB); 表示該文件夾最后的修改時間。

(2)系統(tǒng)日志

系統(tǒng)日志以文本形式寫入文件,其輸出格式如下:

|||||=,

e.g.:

SYSTEM_LOGIN|2018-06-20 18:23:21|sam|logon|logindialog.cpp|INFO=log into system,SUCCEED

字段含義如下:

表示日志類型,登陸日志或者是操作日志; 表示日志記錄時間; 表示管理員姓名; 表示操作; 表示源文件; 表示日志等級; 表示日志說明字符串; 表示操作狀態(tài)。

2.3 數(shù)據(jù)庫表

(1)文件表(files):記錄每個文件的文件名、文件大小、文件存儲時間、文件最后修改時間、文件的md5值。

(2)天文數(shù)據(jù)表(data):記錄設(shè)備上天文數(shù)據(jù)的存儲信息,包括數(shù)據(jù)總量(單位MB)、存儲路徑內(nèi)數(shù)據(jù)總個數(shù)、存儲時間與最后修改時間(用戶可以設(shè)置記錄數(shù)據(jù)的間隔時間,如2 min)。

(3)文件夾表(folder):記錄存儲路徑根目錄下的各文件夾的數(shù)據(jù)信息,包括自增字段、文件夾遍歷次數(shù)、文件夾名稱、該文件夾下存儲的總數(shù)據(jù)量、該文件夾包括的數(shù)據(jù)文件總個數(shù)、文件夾記錄時間、文件夾最后修改時間、根目錄下文件夾總個數(shù)。

(4)每日數(shù)據(jù)增量表(dayData):記錄每日天文數(shù)據(jù)存儲路徑下數(shù)據(jù)的變化信息,包括自增字段、當日日期、當日增加的數(shù)據(jù)總量、當日增加的文件總個數(shù)、備用字段。

(5)每日文件夾數(shù)據(jù)增量表(dayFolderData):記錄天文數(shù)據(jù)存儲路徑根目錄下各文件夾每天數(shù)據(jù)變化信息,包括自增編號字段、當日日期、文件夾名稱、該文件夾存儲數(shù)據(jù)總量、該文件夾下存儲文件總個數(shù)、該文件夾當日增加的數(shù)據(jù)總量、該文件夾下當日增加的文件總個數(shù)、根目錄下文件夾總個數(shù)。

(6)腳本程序監(jiān)控表(proc_status):記錄后臺腳本程序的運行狀態(tài)、4個腳本(分別為寫數(shù)據(jù)腳本、控制腳本、每日數(shù)據(jù)統(tǒng)計腳本、rsync數(shù)據(jù)傳輸腳本)、更新時間。

上述6張表的字段信息如表1。

表1 數(shù)據(jù)庫表結(jié)構(gòu)Table 1 Database table structure

(續(xù)表1)

3 日志檢索系統(tǒng)實現(xiàn)

日志檢索系統(tǒng)主要為系統(tǒng)管理員服務(wù),通過一個友好的操作界面讓使用者更加方便地查詢和操作日志,為了便于控制整套天文數(shù)據(jù)傳輸日志系統(tǒng),通過界面控制后臺運行程序開啟、停止或重啟,更改配置文件參數(shù)達到控制日志輸出行為的目的。

3.1 功能結(jié)構(gòu)

如圖3,日志檢索系統(tǒng)由4部分組成,分別為普通日志檢索、分類日志查詢、日志備份、參數(shù)管理控制。

3.2 各功能子模塊描述

如圖4,用戶成功登錄后頁面顯示發(fā)送端和接收端存儲數(shù)據(jù)情況,包括兩端的系統(tǒng)狀態(tài)和各自存儲的總文件量、總文件數(shù)。系統(tǒng)狀態(tài)列出磁盤設(shè)備已占用空間大小、占用比例、可用空間等信息。

圖3 日志檢索系統(tǒng)結(jié)構(gòu)
Fig.3 Structure of log retrieval system

3.2.1 普通日志檢索(Log Retrievel)

如圖5,普通日志檢索界面展示詳細的文件記錄,包括文件名、文件大小、文件生成時間。支持檢索某一段存儲時間內(nèi)的記錄,時間可精確到某一天的某一秒,支持關(guān)鍵字檢索。關(guān)鍵字是文件名或者文件名的一部分,頂部可選擇sender或者receiver按鈕檢索發(fā)送端或接收端的數(shù)據(jù)。底部的backup按鈕支持備份當前檢索的數(shù)據(jù)到本地默認目錄,備份目錄在Configure頁中修改。

圖4 發(fā)送端與接收端數(shù)據(jù)存儲情況一覽
Fig.4 Summary of data storage at the sender and receiver

圖5 普通日志文件檢索
Fig.5 Ordinary Log file retrieval

3.2.2 分類日志查詢(System Log)

此界面分類顯示系統(tǒng)日志內(nèi)容,系統(tǒng)日志是指用戶使用日志檢索系統(tǒng)所產(chǎn)生的一系列日志信息。系統(tǒng)日志可查看系統(tǒng)登錄日志與系統(tǒng)操作日志兩類。

圖6展示了系統(tǒng)日志概覽,包括日志分類和各自的數(shù)量。如圖7,系統(tǒng)登錄日志記錄每個用戶登入或登出系統(tǒng)的時間、登錄狀態(tài)、動作(登入或登出)以及相關(guān)描述。如圖8,系統(tǒng)的操作日志詳細記錄了用戶使用本系統(tǒng)的行為軌跡,給出了用戶操作的時間、操作的內(nèi)容(如查詢操作、備份操作等)、操作的狀態(tài)(成功或失敗)和操作的詳細描述。

圖6 日志概覽Fig.6 Log overview

圖7 不同類型日志查詢(登錄日志)
Fig.7 Different types of log queries (logging log)

圖8 不同類型日志查詢(操作日志)
Fig.8 Different types of log queries (operation log)

3.2.3 參數(shù)管理控制(Configure)

此界面可以控制后臺服務(wù)的啟動、關(guān)閉、重啟,對參數(shù)進行設(shè)置。

圖9系統(tǒng)配置界面,自動顯示已有的參數(shù)及參數(shù)內(nèi)容:

OrdinaryLogBackupDir:普通日志遠程備份到本地的默認路徑

SystemLogBackupDir:系統(tǒng)日志備份默認路徑

OrdinaryLogMaxSize:普通日志單個文件最大值,默認值為5 MB,若單個日志文件超過設(shè)定的最大值,則將日志寫入另一個新文件中。

OrdinaryLogInterval:寫入日志文件的間隔時間,也就是后臺程序掃描根目錄的間隔時間,默認間隔2 min。

MonitorInterval:后臺程序監(jiān)控的時間間隔,即檢測后臺各shell程序的運行狀態(tài)的間隔時間,默認間隔5 min。

界面中3個checkbox的設(shè)置分別對應(yīng)OrdinaryLogMaxSize,OrdinaryLogInterval和MonitorInterval,更改設(shè)置后需點擊restart(重啟)按鈕重啟后臺服務(wù)程序。Start與stop按鈕表示后臺服務(wù)的開啟和停止。

3.2.4 日志備份(Backup)

此界面分為普通日志備份和系統(tǒng)日志備份兩種,普通日志備份支持數(shù)據(jù)發(fā)送服務(wù)器或接收服務(wù)器上的日志備份,系統(tǒng)日志備份支持軟件界面的日志備份。

如圖10,系統(tǒng)日志文件備份可備份今天以前、半年前、一年前的本地日志,默認配置頁面的備份路徑;普通日志備份支持用戶選擇的起始日期內(nèi)的日志文件,包括按每個文件、每個文件夾、存儲路徑根目錄每日變化的所有日志的壓縮打包下載,默認配置頁面中的備份路徑。

圖9 系統(tǒng)配置
Fig.9 System configuration

圖10 日志備份
Fig.10 Log backup

4 數(shù)據(jù)傳輸可視化

在日志系統(tǒng)的基礎(chǔ)上,通過html5,AJAX,PHP等相關(guān)技術(shù)建立了數(shù)據(jù)傳輸可視化頁面,如圖11??梢暬撁嫔峡娠@示傳輸系統(tǒng)的工作情況,便于系統(tǒng)管理員及相關(guān)人員了解數(shù)據(jù)的傳輸情況。可視化頁面分為6部分:(1)通過柱狀統(tǒng)計圖顯示當日的數(shù)據(jù)存入和發(fā)送情況;(2)通過柱狀統(tǒng)計圖顯示過去一周的數(shù)據(jù)情況;(3)通過調(diào)用后臺服務(wù)器的狀態(tài)監(jiān)控數(shù)據(jù),顯示發(fā)送服務(wù)器與接收服務(wù)器的狀態(tài),一旦出現(xiàn)異常會通過警報程序自動發(fā)送提醒;(4)通過餅狀圖顯示服務(wù)器的存儲情況,管理人員可通過直觀的顯示判斷是否需要增加存儲設(shè)備;(5)通過調(diào)用日志記錄顯示正在進行的傳輸情況;(6)通過曲線圖顯示過去一小時的數(shù)據(jù)傳輸速率。

圖11 可視化界面
Fig.11 Visualization page

可視化系統(tǒng)將數(shù)據(jù)傳輸?shù)娜罩緝?nèi)容較為直觀地顯示出來,為系統(tǒng)管理員提供了極大的便捷,可輔助判斷系統(tǒng)的運行情況,及時發(fā)現(xiàn)系統(tǒng)存在的問題??梢暬撁娌捎媚K化開發(fā)技術(shù),將來可以嵌入到大型觀測裝置的中控系統(tǒng)。

5 總 結(jié)

根據(jù)新疆天文臺數(shù)據(jù)傳輸?shù)膶嶋H需求,構(gòu)建了日志收集-存儲服務(wù)-日志檢索的日志系統(tǒng)架構(gòu),在數(shù)據(jù)發(fā)送服務(wù)器與接收服務(wù)器上搭建了日志系統(tǒng)的后臺服務(wù)程序。提出了腳本程序間互監(jiān)控系統(tǒng),完成了數(shù)據(jù)傳輸中對文件信息、文件md5校驗值記錄的普通日志,與按天、按存儲數(shù)據(jù)文件夾記錄的統(tǒng)計日志。另外,在數(shù)據(jù)接收服務(wù)器端的系統(tǒng)具有自動檢測數(shù)據(jù)更新的功能。

日志檢索系統(tǒng)作為客戶端軟件安裝在第三方設(shè)備上,軟件讀取配置文件信息,自動連接數(shù)據(jù)發(fā)送服務(wù)器端與數(shù)據(jù)接收服務(wù)器端數(shù)據(jù)庫。實現(xiàn)了按時間、關(guān)鍵字檢索兩端遠程服務(wù)器日志信息,備份由檢索結(jié)果組成的日志信息。查看軟件本地產(chǎn)生的登錄、操作等不同類別日志,壓縮備份本地日志。實現(xiàn)了對服務(wù)器兩端配置文件參數(shù)修改,提供用戶對服務(wù)器兩端系統(tǒng)的啟動、停止、重啟功能。實現(xiàn)了數(shù)據(jù)傳輸?shù)目梢暬?,通過WEB形式顯示日志內(nèi)容,可以輔助系統(tǒng)管理員了解傳輸系統(tǒng)的運行狀態(tài),采用模塊化開發(fā)技術(shù),便于后期的移植和復(fù)用。

猜你喜歡
腳本文件夾日志
酒駕
一名老黨員的工作日志
安奇奇與小cool 龍(第二回)
Fast Folders,讓你的文件夾四通八達
扶貧日志
雅皮的心情日志
雅皮的心情日志
自動推送與網(wǎng)站匹配的腳本
摸清超標源頭 大文件夾這樣處理
調(diào)動右鍵 解決文件夾管理三大難題