摘 要:本研究就非結(jié)構(gòu)化機(jī)器數(shù)據(jù)利用難題進(jìn)行了闡述,在此基礎(chǔ)上,對(duì)非結(jié)構(gòu)化機(jī)器數(shù)據(jù)范式化處理技術(shù)進(jìn)行了深入研究,并提出了非結(jié)構(gòu)化機(jī)器數(shù)據(jù)的范式化處理能力試驗(yàn)方法。
關(guān)鍵詞:非結(jié)構(gòu)化機(jī)器;數(shù)據(jù)范式化;處理技術(shù);數(shù)據(jù)利用
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2018)06-0099-03
Abstract:In this paper,the problem of unstructured machine data utilization is expounded. On this basis,the unstructured machine data paradigm processing technology is deeply studied,and the experimental method of unstructured machine data paradigm processing capability is put forward.
Keywords:unstructured machine;data normalization;processing technology;data utilization
0 引 言
隨著互聯(lián)網(wǎng)與數(shù)字化信息技術(shù)的飛速發(fā)展,新的數(shù)據(jù)源不斷涌現(xiàn),各種應(yīng)用所產(chǎn)生的數(shù)據(jù)呈指數(shù)級(jí)增長(zhǎng)。根據(jù)互聯(lián)網(wǎng)數(shù)據(jù)中心監(jiān)測(cè),全球數(shù)據(jù)量大約每?jī)赡攴环?。預(yù)計(jì)到2020年,全球的數(shù)據(jù)量將達(dá)到35 ZB。據(jù)Gartner Group統(tǒng)計(jì),如今80%的數(shù)據(jù)為非結(jié)構(gòu)化數(shù)據(jù),并且仍保持高速增長(zhǎng)態(tài)勢(shì),非結(jié)構(gòu)化數(shù)據(jù)已逐漸成為大數(shù)據(jù)的主體。
1 非結(jié)構(gòu)化機(jī)器數(shù)據(jù)利用難題
計(jì)算機(jī)信息化系統(tǒng)中的數(shù)據(jù)分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)是指數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整,沒有預(yù)定義的數(shù)據(jù)模型。包括所有格式的辦公文檔、文本、圖片、XML,HTML、各類報(bào)表、圖像和音頻/視頻信息等。
非結(jié)構(gòu)化數(shù)據(jù)的格式多樣,標(biāo)準(zhǔn)也是多樣性的。而且在技術(shù)上非結(jié)構(gòu)化信息比結(jié)構(gòu)化信息更難標(biāo)準(zhǔn)化和理解。所以存儲(chǔ)、檢索、發(fā)布以及利用需要更加智能化的IT技術(shù),比如海量存儲(chǔ)、智能檢索、知識(shí)挖掘、內(nèi)容保護(hù)及信息的增值開發(fā)利用等。對(duì)比結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù)數(shù)量巨大、產(chǎn)生速度快,又缺乏規(guī)律性,價(jià)值密度較低。因缺乏有效的技術(shù)手段進(jìn)行處理和分析,往往被丟棄和忽視。隨著大數(shù)據(jù)浪潮的來臨,海量數(shù)據(jù)處理技術(shù)的日漸成熟,數(shù)據(jù)存儲(chǔ)成本下降,數(shù)據(jù)分析應(yīng)用方向逐漸也向非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)移。
非結(jié)構(gòu)化數(shù)據(jù)包含復(fù)雜的內(nèi)容,并具有不同的結(jié)構(gòu)特點(diǎn)。傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)無論從描述能力上還是從管理數(shù)據(jù)的規(guī)模上,都無法應(yīng)對(duì)非結(jié)構(gòu)化數(shù)據(jù)管理的要求。因此,如何對(duì)非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行范式化處理,已成為非結(jié)構(gòu)化機(jī)器數(shù)據(jù)處理相關(guān)研究中的一個(gè)核心問題。
2 非結(jié)構(gòu)化機(jī)器數(shù)據(jù)范式化處理技術(shù)研究
一般情況下,對(duì)非結(jié)構(gòu)化數(shù)據(jù)的處理是通過范式化匹配。提取字段后建立字段索引,則可形成新的結(jié)構(gòu)化數(shù)據(jù)形式,提高搜索效率。但是非結(jié)構(gòu)化機(jī)器數(shù)據(jù)格式是經(jīng)常改變,對(duì)于沒有提取到字段信息的數(shù)據(jù),如果需要進(jìn)行字段統(tǒng)計(jì),則需要實(shí)現(xiàn)搜索時(shí)提取字段功能。
2.1 非結(jié)構(gòu)化機(jī)器數(shù)據(jù)范式化處理流程
(1)收到一條原始非結(jié)構(gòu)化數(shù)據(jù)raw_event;(2)提取關(guān)鍵信息key(token + appname(appname不存在則使用hostname)),從ParserCache中找對(duì)應(yīng)的解析規(guī)則EventParser;(3)如果找到對(duì)應(yīng)的解析規(guī)則并且處理成功,則返回structured event;(4)如果沒找到對(duì)應(yīng)的解析規(guī)則EventParser或解析EventParser處理不成功,進(jìn)入ParserContainer處理;(5)看token+appname是否有對(duì)應(yīng)的用戶Custom配置;(6)如果有則使用按照其配置產(chǎn)生的Parser來處理,如果處理成功則產(chǎn)生event_parser和structured event,更新cache,若不成功則使用DefaultParser只保留raw_message,不提取任何字段;(7)如果沒有,則使用Common配置處理,需要依次使用各種類型的Parser去嘗試處理,如果處理成功則產(chǎn)生event_parser和結(jié)構(gòu)化數(shù)據(jù)structured event,更新cache,若不成功則使用DefaultParser只保留raw_message,不提取任何字段;(8)返回結(jié)構(gòu)化數(shù)據(jù)structured event。
在運(yùn)維過程中,非結(jié)構(gòu)化數(shù)據(jù)主要來源于大量的設(shè)備日志、服務(wù)日志、應(yīng)用日志,普遍缺乏統(tǒng)一的數(shù)據(jù)采集、格式和存儲(chǔ)規(guī)范。針對(duì)常見的日志數(shù)據(jù),采用內(nèi)置相應(yīng)的日志解析規(guī)則,能夠自動(dòng)識(shí)別和解析常見的日志格式,如Linux、Apache、JSON等;對(duì)于非常用的日志格式,通過個(gè)性化配置日志格式解析規(guī)則,抽取自定義字段達(dá)到數(shù)據(jù)的范式化處理。
2.2 針對(duì)機(jī)器數(shù)據(jù)的字段抽取規(guī)則
2.2.1 字段抽取類
(1)正則解析:通過配置正則解析出匹配的字段,支持命名分組、多行正則、Grok語(yǔ)法;(2)KeyValue解析適用于日志中包含字段名,分隔符比較明確的日志,配置KV對(duì)分隔符和KV之間的分隔符來抽取字段;(3)KeyValue正則解析適用于分隔符不確定,KV對(duì)不連續(xù)的日志,通過配置Key,Value,分隔符的正則來抽取字段;(4)Json解析適用于Json日志格式,抽取出來的字段結(jié)構(gòu)和Json中定義的結(jié)構(gòu)一致;(5)XML解析適用于XML日志解析,抽取出來的字段結(jié)構(gòu)和XML中定義的結(jié)構(gòu)一致;(6)CSV解析適用于列順序固定,分隔符固定的日志,配置分隔符和列名來解析字段;(7)結(jié)構(gòu)體解析適用于按固定字節(jié)長(zhǎng)度寫入的日志,配置字節(jié)格式的解析。
2.2.2 字段轉(zhuǎn)換類
(1)UserAgent解析:從UserAgent抽取出操作系統(tǒng),瀏覽器,設(shè)備信息;(2)Geo解析:從IP地址中抽取出國(guó)家、省、市、互聯(lián)網(wǎng)服務(wù)提供商、經(jīng)度、經(jīng)度、緯度信息;(3)手機(jī)號(hào)碼解析:從手機(jī)號(hào)碼中抽取出國(guó)家、省、市、互聯(lián)網(wǎng)服務(wù)提供商、經(jīng)度、緯度信息;(4)固定號(hào)碼解析:從手機(jī)號(hào)碼中抽取出國(guó)家、省、市、經(jīng)度、緯度信息;(5)自定義字典:查自定義字典表,從一個(gè)字段擴(kuò)展到多個(gè)字段;(6)Syslog_prio解析:從Syslog的日志抽取出來設(shè)備、日志級(jí)別。
2.2.3 字段操作類
(1)格式化處理:用于把多個(gè)字段按指定格式,產(chǎn)生新的字段;(2)刪除字段:用于刪除不用的字段;(3)重命名字段:用于重命名字段;(4)內(nèi)容替換:用于替換字段的內(nèi)容;(5)hex轉(zhuǎn)換:用于把16進(jìn)制度的hex dump轉(zhuǎn)換成可讀度字符格式;(6)URL轉(zhuǎn)換:用于把URL轉(zhuǎn)碼的字段轉(zhuǎn)換到轉(zhuǎn)碼之前的格式;(7)IP格式轉(zhuǎn)換:用于把數(shù)值類型的IPv4地址轉(zhuǎn)換成字符串IP地址;(8)數(shù)值字段轉(zhuǎn)換:用于把字符串類型的字段轉(zhuǎn)換成數(shù)值類型。
2.2.4 其他
時(shí)間戳解析:配置時(shí)間戳抽取格式,來抽取日志的時(shí)間戳,抽取出來時(shí)間戳決定日志的存儲(chǔ)位置和搜索時(shí)間范圍。
3 非結(jié)構(gòu)化機(jī)器數(shù)據(jù)的范式化處理能力試驗(yàn)
3.1 自動(dòng)解析能力試驗(yàn)
3.1.1 規(guī)則匹配流程
(1)配置的規(guī)則可以指定Appname,tags,匹配上原始日志中斷Appname,tags的規(guī)則執(zhí)行這些規(guī)則;(2)沒有規(guī)則的日志或者配置的規(guī)則中不包括解析成功的日志,嘗試默認(rèn)規(guī)則。
3.1.2 默認(rèn)規(guī)則
(1)apache access:匹配apache access日志,同時(shí)適用于nginx access日志;(2)apache error:匹配apache error日志,同時(shí)適用于nginx error日志;(3)Json:匹配Json格式的日志;(4)Java log4j:log4j默認(rèn)格式的日志。
3.1.3 時(shí)間戳順序
識(shí)別時(shí)間戳的順序如下:(1)Agent識(shí)別到的時(shí)間戳;(2)用“時(shí)間戳解析”解析出來的時(shí)間戳;(3)Agent事件源時(shí)間戳;(4)Collector收到的時(shí)間戳;(5)當(dāng)前時(shí)間戳。測(cè)試步驟如表1所示。
例如支持自動(dòng)解析的apache日志格式如下:
%h %l %u %t \\"%r\\" %>s %b
%h %l %u %t \\"%r\\" %>s %b \\"%{Referer}i\\" \\"%{User-agent}i\\"
%h %l %u %t \\"%r\\" %>s %b \\"%{Referer}i\\" \\"%{User-agent}i\\" \\"%{X-Forwarded-For}i\\"
其中各項(xiàng)配置的含義如下:
%b or %B - Size
%h RemoteIPOrHost
%l - RemoteLogname
%r - Request
%>s - HttpStatusCode
%t - eventTime
%{Referer}i - Referer
%{User-agent}i - UserAgent
%{X-Forwarded-For}i - XForwardedFor
自動(dòng)識(shí)別Apache的error日志,通常情況下日志格式為:
[Fri Jul 05 21:28:24 2013] [error] child process 1245 still did not exit, sending a SIGKILL
自動(dòng)解析出如下字段:
timestamp, loglevel, message 等。
3.2 自定義日志解析能力試驗(yàn)
3.2.1 正則解析
原始日志:
192.168.1.139--[24/Jan/2015:17:03:49 +0800] \"GET /api/v0/search/fields/?field=tagfilters=order=descpage=1query=*size=50sourcegroup=allsourcegroupCn=%E6%89%80%E6%9C%89%E6%97%A5%E5%BF%97time_range=-2d,nowtype=fields HTTP/1.1\" 200 363 \"http://alltest.rizhiyi.com/search/?query=*time_range=-2d%2Cnoworder=descsize=20page=1sourcegroup=alltype=timeline_t=1422088066859title=%E9%BB%98%E8%AE%A4index=0\"\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:35.0) Gecko/20100101 Firefox/35.0\"
可以采用如下配置:
%{ApcClientIP} %{ApcIdent} %{ApcUser} %{ApcTimestamp} %{ApcRequest} %{ApcStatus} %{ApcRespLen} %{ApcReferer} %{ApcUa}
解析結(jié)果如下:
Object
clientip:\"192.168.1.139\"
method:\"GET\"
referer:\"http://alltest,rizhiyi.com/
search/?qufery=*time range=-2d%2Cnow
order=descsize=20page=lsourcegroup=
al1type=timelinet=1422088066859title
=%E9%bb%98%E8*AE%A4index=0\"
referer_domain:\"alltest.rizhiyi.com\"
request_path:\"/api/v0/search/fields/\"
request_query:\"field=tagfilters=
order=descpage=lquery=*size=50sourcegroup
=allsourcegroupCn=%E6%89%80%E6%9C
%89%%E6%97%A5%E5%BF%97time_reage=-2d,
nowtype=fields”
resp_len:363
status:200
timestamp: \"24/Jan/2015:17:03:49+4800\"
ua:\"Mozilla/5.0 (Macintosh;Intel Mac
OS X 10.10: rv:35.0) Gecko/20100101
Firefox/35.0\"
version:\"1.1\"
3.2.2 KeyValue分解
解析明顯的KV字符,輸入request_query字段為:
field=tagfilters=order=descpage=1query=*size=50sourcegroup=allsourcegroupCn=%E6%89%80%E6%9C%89%E6%97%A5%E5%BF%97time_range=-2d,nowtype=fields。
即添加解析規(guī)則:KeyValue分解,source字段選擇request_query,定義字段間分隔符為,定義k-v分隔符為=。
解析結(jié)果如下:
Object
clientip:\"192.168.1.139\"
method;\"GET\"
referer:\"http://alltest,rizhiyi,com/s
earch/?query=*time range=2d%2Cnow
order=descsize=20page=1sour cegroup=
alltype=timelnet=l422088066859title
=%E9%BB%98%E8%AE%A4index=0\"
referer_domain:〃alltest,rizhiyi,com〃
request_path:〃api/v0/search/fields/〃
request_query:〃field=tagfilters=
order=descpage=1query=*size50=
sourceroup=allsourceroupCn=%E6%89%80%E6%9C
%89%E6%97%A5%E5%BF%97timte_range=-2d,
nowtype=fields
resp_len:363
status:200
timestamp:\"24/Jan/2015:17:03:49+0800\"
ua:\"Mozilla/5.0(Macintosh:Intel Mac
OS X 10 10:rv:35.0) Gecko/20100101
Firefox/35.0\"
Version:\"101\"
4 結(jié) 論
非結(jié)構(gòu)化機(jī)器數(shù)據(jù)范式化處理是大數(shù)據(jù)技術(shù)的基礎(chǔ),是實(shí)現(xiàn)海量數(shù)據(jù)實(shí)時(shí)檢索和統(tǒng)計(jì)分析的前提。本研究主要對(duì)大數(shù)據(jù)中的非結(jié)構(gòu)化機(jī)器數(shù)據(jù)的范式處理技術(shù)進(jìn)行分析和探討,并對(duì)自動(dòng)解析和自定義解析兩種方式做出實(shí)驗(yàn)驗(yàn)證。上述技術(shù)已在機(jī)器數(shù)據(jù)搜索分析平臺(tái)成功實(shí)現(xiàn),并在金融、電力、通信運(yùn)營(yíng)商等行業(yè)得到應(yīng)用。
參考文獻(xiàn):
[1] 郎波,張博宇.面向大數(shù)據(jù)的非結(jié)構(gòu)化數(shù)據(jù)管理平臺(tái)關(guān)鍵技術(shù) [J].信息技術(shù)與標(biāo)準(zhǔn)化,2013(10):53-56.
[2] 馮宇.非結(jié)構(gòu)化數(shù)據(jù)管理平臺(tái)研究與建設(shè) [J].電力信息化,2012,10(2):69-72.
[3] 黃海峰.2013年綠色通信呈現(xiàn)四大發(fā)展趨勢(shì) [J].通信世界,2013(26):46.
[4] 陳氫.基于信息鏈的跨部門政府信息共享架構(gòu)研究 [J].情報(bào)雜志,2013,32(11):164-168.
作者簡(jiǎn)介:潘世成(1972.06-),河南蘭考人,高級(jí)工程師,本科。研究方向:信息技術(shù)在電力行業(yè)的應(yīng)用。