當前位置:
首頁 > 最新 > 網路日誌搜索引擎——NetSearch

網路日誌搜索引擎——NetSearch

作者|湯汝鳴

編輯|Vicky

內容簡介

本文介紹一種專門針對運營商網路日誌的搜索引擎——NetSearch,該系統用於對與網路事件相關聯的信息進行預處理和索引,幫助運維人員從不同的數據源快速定位網路事件的相關係統狀態和信息。該工作是由裴丹老師與AT&T同事合作發表於Networking』2014。

在大型網路中,對網路的各種狀態和事件的監控和測量是必不可少的。這些大量的測量數據一般都會儲存至相應的資料庫管理系統(DBMS)當中。然而,雖然擁有著全面的數據,在面對網路事件處理和分析問題時,運維人員要想高效地獲取合適的數據卻是十分困難的。一方面是因為數據量過於龐大,而DBMS往往只能通過簡單的時間範圍或是設備號進行篩選;另一方面,事件關聯的信息種類繁多,且語法、句法不統一,難以進行高效地處理。因此,一個快速高效的數據索引和信息查詢系統是十分必要的。

背景及挑戰

本系統針對的數據主要是以下的三類:路由器系統日誌(router SYSLOG)、設備警報(alarm)和控制層監控數據(monitor)。要處理這些數據,有以下的一些特點和困難:

1. 日誌文本結構化程度較低。來自於不同製造商、不同的設備的日誌格式不統一。這些日誌一般具有一些特定的結構化數據例如時間戳、源地址(設備號)等,但同時也帶有大量無特定格式的文本信息。要進行統一的自動化處理是較為困難的。

2. 涉及的網路日誌層級複雜。一個網路事件相關的日誌信息較多,且往往會跨越多個層級,相關聯的網路地址類型也較為複雜,例如網路/IP層(如OSPF信息)、設備信息(如路由器CPU佔用)和物理層(例如SONET警報)。在查詢中,要將所有相關聯的網路地址一一查出也是有難度的。

NetSearch系統設計思路

NetSearch的目的即是根據運維人員的查詢,在大量的網路系統數據中快速的獲取相關的信息,整個NetSearch系統的結構如下圖所示。

圖1. NetSearch結構圖

總體來說,NetSearch系統可以主要分為兩個部分,即建立索引(Indexing)和搜索(Searching)。

1.建立索引。NetSearch系統會持續自動地處理原始信息來獲取諸如網路地址的詳細信息並生成方便查詢目的的索引條目。具體如下:

a)學習。NetSearch系統通過設備的配置文件來學習網路地址信息。並將結果寫入至地址詞典當中。在詞典中記錄了若干鍵值對,分別表示網路地址的類型(如IP地址、介面)和具體數值(如192.168.1.123、SERIAL2/0.7/11:0)。這個詞典將被用於後續提取網路系統數據內容和查詢語句的處理當中。

同時,不同的網路地址之間也存在著匹配關係,包括網路拓撲關係(同一個連接的兩端)和網路地址的層級關係(例如,一個介面及其IP地址、埠號、線卡、設備)。這些信息也可以通過配置文件來獲得。一個典型的層級關係如下圖所示。

圖2. 網路地址層級

注意每一層之間的箭頭為一對多的關係。通過該模型,可以將網路地址的層級表示為樹結構。該結構將用於後續的索引和搜索中。

b)提取。NetSearch系統將原始信息中的網路地址信息提取出來。該系統使用了以下三種方式來進行信息的提取。

i) 基於配置文件的方式。上文中已經提到,通過配置文件生成的地址詞典記錄了網路地址的類型和具體值。只要將網路系統信息的文本與詞典中的值進行一一匹配,若匹配成功則必定是一個網路地址。

ii) 基於文本內容的方式。在實驗中發現,在文本信息中,一些網路地址的前導詞往往是他們的類型值(例如,interface Multilink1034 XXX、slot 2 XXX)。通過匹配這些類型關鍵字,可以從文本當中直接提取出可用的鍵值對。

iii) 基於專家知識的方式。有些網路地址信息的變體(例如[1/3])不符合上述兩種方式的要求,需要預先通過特定的規則進行判斷。這一部分內容通過額外的專家知識進行正則匹配等方式來處理。

基於以上三種方式能較為全面地覆蓋各種情況,在實際運行當中,NetSearch系統會依次使用這些方法。當前一種方式無法正確獲取到網路地址時,則會調用下一種方法進行嘗試。地址提取的實驗結果如下表所示。其中覆蓋率(coverage)代表了能被成功提取的消息條目的比例。可以看出綜合使用三種方法能幾乎覆蓋所有的消息,同時保持著較低的錯誤率,這說明文中的方法是有效的。

表1. 網路地址提取效率

c)標記。NetSearch系統對原始的數據進行標記索引,共分為三個獨立的部分:時間索引、地址索引和其他描述(例如,特定的文本「link up/down」等)的索引。

由於原始的數據都是帶有時間戳的,基於時間和文本的索引與一般的資料庫搜索無異,NetSearch系統中使用了Zettair來進行實現,在這裡就不做贅述了。下面主要描述地址的索引。

在上文中我們已經講過,網路地址的層級可以用樹的結構來描述。在這裡我們定義,若兩個地址對應的節點是同一個節點,或者其中一個節點是另一個的祖先節點,則這兩個地址是相關的。因此,我們建立索引的方式就是構造這棵樹的過程。

下面,我們通過一個實際例子來說明建立索引的過程。如下圖所示。

圖3. 建立索引與搜索實例

起始時,我們有5條來自於同一設備(路由器)的原始數據(Msg1-5),每條數據均有相應的網路地址(例如,interface 0:1:0)。首先,我們將對應的路由器ID作為根節點。其次,對於每條信息的網路地址,將其分隔為若干記號,例如Msg(1)的網路地址0:1:0將被分隔為三個符號0、1和0,注意這三個符號處於樹的不同層中。每一個符號對應一個節點,整個網路地址則表示了由根節點至目標節點的一條路徑(若此過程中有原始樹結構不存在的節點,則創建這個新節點)。最後,將該條信息的ID與這個目標節點關聯。上圖中的5條信息則可以構建出右側的索引樹。

2.搜索。NetSearch系統的搜索分為兩個步驟:第一,是將用戶輸入的查詢語句進行處理,轉義為對應的搜索條件;第二則是通過搜索條件查詢返回對應的相關信息。

a)查詢語句處理。一條查詢語句由以下三個部分組成:時間窗口、網路地址條件和其他描述信息。其中,時間信息是高度格式化的,在這裡略去。對於網路地址,如果用戶顯式地指定了類型,則可以直接使用,否則,NetSearch系統會自行匹配類型。匹配的方式是通過已有的地址詞典進行匹配。考慮到暴力匹配的時間複雜度較高,NetSearch系統採用了匹配特徵簽名的方式。即對於網路地址,將其字元分為三類:字母(A)、數字(D)和其他字元(O)。例如,interface 「SERIAL2/0.7/11:0」的特徵簽名就表示為「AAAAAADODODODDOD」。

b)搜索信息。在查詢語句處理完畢後,NetSearch系統會根據要求的時間窗口範圍、地址和其他文本分別進行搜索,最終將同時符合全部條件的信息返回。基於時間和文本的搜索採用Zettair實現。

搜索相關地址的方式與建立索引類似,仍然使用圖3作為例子。將網路地址作為一條由根節點至目標節點的路徑。則目標節點的子孫節點對應的消息的並集就是最後的搜索結果。例如,搜索「0:1」則會返回(1,4,5),搜索「10」則返回(2,3)。

性能驗證

研究人員共使用了三個網路系統測量數據集(分別是SYSLOG、OSPF和SONET數據)來對NetSearch系統進行實驗驗證。數據集來自於某大型ISP網路近一個月的實際測量結果。

針對一個搜索系統,查詢的響應時間是其關鍵指標。NetSearch的具體時間響應情況如下圖所示。其中橫軸為查詢條目數,縱軸為響應時間(毫秒)。

圖4. NetSearch響應時間測試

在實驗中,研究人員將三個數據集混合,隨機選擇了不同層級的網路地址作為查詢的條件,在查詢中固定時間窗口為一天。從結果中可以看出,每處理一千條查詢,NetSearch系統平均僅需要數秒時間。

應用實例

在實際的網路環境當中,對網路事件和故障的處理與定位是一項重要的需求。通過NetSearch系統,在發生了事件之後,可以通過時間窗口和網路地址來進行快速的查詢,獲取相關的路由器等設備的日誌,有效提高了運維人員響應事件的速度。

我們通過一個具體實例來說明NetSearch對於運維人員的幫助。在某tier-1級別ISP網路中,運維人員發現在最近一周內,路由器R1上的1/1/1埠不穩定。為了確認這件事的影響程度,首先運維人員需要在數據集中查找R1和該埠的日誌信息,這通常是通過系統的grep命令來執行的。由於數據量龐大,這項操作耗時巨大,在實際的SONET和SYSLOG數據集中,通常需要10到30分鐘不等的時間。而查詢出的結果也是十分零散的。

另一方面,這樣查詢出的結果僅包含了該埠本身的信息,而在實際的網路當中,這一個埠還與其他的埠相連,因此,還需要通過配置文件查找與它關聯的其他網路地址。在這個實例當中,1/1/1埠就與9個介面相關聯(見圖5),其中部分還分配了IP地址,另外部分介面還有對應的環路ID(圖6)。通過這些額外的地址信息,又可以進行新一步的查詢。

通過環路ID可以在SONET數據中進行查詢,其他的地址信息則可以查詢SYSLOG數據。通過新一輪的grep操作,運維人員處理連接問題外,還發現了相應的BGP錯誤。而BGP相關的IP地址又可以在OSPF數據中進行新的搜索。

圖5. 埠1/1/1對應的介面和IP

圖6. 介面對應的環路ID

上述的這些操作,一方面十分耗時,另一方面也十分依賴運維人員的專業知識。這樣的一次過程往往需要數小時的時間。而通過NetSearch系統,運維人員可以在幾分鐘內就通過查詢獲取到對應的數據集合。圖5所示的就是AT&T的異常檢測與故障定位系統的頁面。

圖5. 使用NetSearch的相關數據搜索系統

除此以外,NetSearch系統還被實際應用到AT&T的其他系統中。例如用於搜索路由器之間的數據流轉過程(圖6)。

圖6. 使用NetSearch技術的異常檢測與故障定位系統

在實際應用中,充分證明了NetSearch系統對於大量數據的索引能力,其簡便高效的處理能極大地提升運維人員的效率,對後續的故障定位和可視化都有著重要的幫助。

結論

關注我們

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 智能運維前沿 的精彩文章:

TAG:智能運維前沿 |