1. 程式人生 > >開源解決方案搭建統一日誌平臺

開源解決方案搭建統一日誌平臺

最近專案裡面需要搭建一個統一日誌平臺,順手寫下自己理解的日誌平臺介紹,主要作為自己的一個筆記,這是為了後面做智慧運維的基礎,智慧的基礎首先必須有自動化平臺

統一日誌平臺背景

早期在系統規模較小的時期,系統的運維工作主要靠運維人員手工完成,隨著業務的急劇膨脹,及服務的多樣化,讓網路的組建變得越來越複雜,一個系統可能涉及到多個裝置,部署多個例項,運維人員手工的去檢視定位問題變得困難,效率低效。裝置的增加讓跨運維小組之間的溝通代價變得很高,各種日誌和告警散落在不同的裝置上,如果日誌的檔案設計不合理,可能還會導致開啟日誌檔案耗時高,甚至失敗的結果。為了解決這些困難,統一日誌平臺應運而生。

統一日誌平臺介紹

“統一”在這裡包含三層涵義:1.統一監控:對各應用系統涉及到的網路、主機、儲存、資料庫、中介軟體、負載均衡器、介面互動通過日誌資料進行統一監控 2. 統一採集,分析,匯聚和關聯展示:採集的日誌資料統一進行解析,關聯和入庫,提供搜尋查詢功能,支援多維度查詢,方便維護人員排查問題3.統一的日誌規範:為了實現跨系統的分析和管理,日誌的規範是統一日誌的重要環節,規範的目的是為了更好的可讀性,可分析性,因此,統一的日誌規範是統一日誌平臺的基礎。

統一日誌平臺提供了以下的監控分析功能:

  1. 效能、穩定性監控:對裝置的效能指標進行準實時(5分鐘粒度)的採集和展現,運維人員能夠直觀的瞭解系統涉及到的各裝置和程式的健康狀況。

  2. 使用者角度的系統的監控:使用者通過前端頁面訪問系統得到的一個響應時間是指使用者的訪問傳送到伺服器,伺服器響應並返回的時間,通過流量映象將這些資料包抓取後進行分析,可以計算出系統頁面的響應時間,頁面的訪問量,出錯率等指標,從使用者角度監控系統的執行狀況。

  3. 卡單業務統計分析:對全業務的介面互動進行彙總、分析,可以根據關聯欄位查詢詳細的業務介面互動時間,實現業務端到端分析。這部分設計還能有效避免系統之間的糾紛,用統一的資料反應介面互動真實情況。

  4. 審計日誌查詢分析 :資料庫,作業系統,業務系統的審計日誌的採集,匯聚為審計人員提供了資料來源。

統一日誌平臺的技術架構

本平臺的技術架構選型為ELK(Elasticsearch,Lostash,Kibana)結合zabbix的解決方案,這個方案的優點是實現向下相容,覆蓋多種採集方式和協議。

  1. 網路裝置(交換機、路由器、防火牆)的效能指標及物理機、虛擬機器的效能指標和告警都是基於snmp、tcp協議進行採集,其中網路裝置只需要做一定的配置,無需部署代理便能採集到,而主機則通過部署主機的代理程式zabbix-agent的方式實現;虛擬機器和共享儲存的效能指標通過呼叫虛擬化層的API獲取;一體機的儲存和效能指標通過指令碼定時採集;網路裝置和主機的日誌都是基於syslog採集;文字類的日誌(中介軟體、資料庫、nginx、應用層)採集是輕量級的日誌採集器Beats。

  1. 資料解析

資料解析採用logstash將匯聚的資料按照一定的規則和協議進行解析,通過ip、埠等資訊與CMDB進行關聯,把關聯後的資訊寫入ES叢集中。

  1. 資料安全

免費的ELK方案中不包含AAA(Authentication, Authorization, Audit,認證、許可權控制、審計)的解決方案,而開源的searchguard作為ES的一個外掛,通過ESACL控制實現多租戶,提供了不同粒度的許可權控制,包括索引級indecies、型別types甚至過濾field粒度的許可權控制,不同使用者訪問不同索引,不授權的索引無法檢視,分組控制不同user檢視各自的業務,同時提供多種HTTP支援方式、認證方式,支援HTTPS,日誌平臺採用TLS證書方式進行認證,結合Kibana和logstash進行統一的許可權控制,確保資料訪問的安全性。

  1. 日誌的展示

Kibana是一個針對ES的開源分析和視覺化平臺,用來搜尋、檢視互動儲存在ES索引中的資料,ES提供了豐富的聚合函式,kibana通過分割槽圖、資料表、折線圖、柱狀圖、餅狀圖、熱度分佈圖等展示聚合的資料,這些自由排列在一個儀表盤(dashboard)進行監控。

如果需要對資料進行復雜的運算,logstash+ELK的架構無法滿足需求,可以通過以下兩種方案實現,第一種是通過呼叫ES的API方式實時的取資料到傳統資料庫中供應用使用;第二種方案引入kafaka元件,應對峰值資料的高負載,並且在Logstash出現故障時,可直接從Kafka做資料回放,避免回溯至若干上游應用,通過spark實現複雜的離線計算,得到的資料可以寫會ES做展現,也可以通過儲存到mysql做定製化的展示,隨著業務需求的複雜度提供,第二種方案是後續演進的路徑。

ES叢集的資料共享有兩種方式:一種是呼叫ES的API(TransportClient)的方式;另一種是登入kibana後,點選"Dev Tools"後使用console進行索引資料查詢,e.g

GET /eastcom-middleware-nginx-2018.06.01/_search?pretty

{

"query":{"match_all":{}},

"size":1000

}

然後使用elasticdump(外掛)匯出資料。

如果只匯出統計類的表格,則可以直接在dashboard上查詢某段時間的資料後,匯出為excel(只針對表格型)

統一日誌平臺使用場景

場景一:分系統日誌展示:把IAAS、PAAS、SAAS及使用者體驗層的各類日誌按照所屬的應用系統進行分類,主機資料關聯CMDB進行劃分應用主機/資料庫主機/NGINX主機等分類,通過kibana提供的豐富圖示功能和聚合功能把資料做轉換後在dashboard頁面集中呈現資料,運維人員可以直觀的關注系統的整體狀況,減少檢視不同類資料時來回切換頁面的操作。

管理者檢視(能看出一週內的業務變化規律):dashboard上可以配置多個圖形化的查詢圖示,方便管理者看業務的趨勢,走向,業務特點。