分布式系統的日誌散落在各個伺服器上,對於監控和排錯非常不利,我們基於elk構建了整套日誌收集,分析,展示系統。
架構圖
1.整理rails日誌
我們最關心的是rails的訪問日誌,但是rails日誌本身的格式是有問題的,舉個例子
started get "/"
for 10.1.1.11 at 2017-07-19 17:21:43 +0800
cannot render console from 10.1.1.11! allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
processing by rails::welcomecontroller#index as html
rendering /home/vagrant/.rvm/gems/[email protected]/gems/railties-5.1.2/lib/rails/templates/rails/welcome/index.html.erb
rendered /home/vagrant/.rvm/gems/[email protected]/gems/railties-5.1.2/lib/rails/templates/rails/welcome/index.html.erb (2.5ms) completed 200 ok in 184ms (views: 10.9ms)
複製**
可以看到,一次請求的日誌散落在多行中,而且在併發情況下,不同請求的日誌會交織在一起,針對這個問題,我們使用logstasher重新生成乙份json格式的日誌
複製**
2.使用logstash收集日誌
logstash通過乙份配置檔案描述了資料從**來,經過怎樣的處理流程,輸出到何處這整套流程,分別對應於input,filter,output三個概念。
我們先使用簡單的配置來驗證一下正確性
input
}output
}複製**
在這份配置中,我們從上一步生成的日誌檔案中讀取,並輸出到stdout中,結果如下
2017-07-19t09:59:01.520z precise64
複製**
然後,修改logstash的配置檔案,將output改為elasticsearch
input
}output
}複製**
可以看到,整個配置檔案的可讀性是非常高的,input中描述了輸入源是我們整理好的日誌檔案,輸出到elasticsearch中。
然後就可以使用kibanana來進行日誌分析的工作了。
3. kibana的一些實踐
基於kibana,我們可以定製elasticsearch的搜尋,來查詢一些非常有價值的資料
4.future
有了elk提供的資料,我們已經可以比較方便的完成分布式情況下的錯誤排查,高頻介面統計,為下一步的優化提供了指導。我們不必再根據業務邏輯去猜測哪些才是20%的熱點,而是有了實實在在的資料支撐。
5. 問題
當然,在使用過程中也遇到過一些問題。在活動期間,訪問量暴增的情況下,elasticsearch吃了很多記憶體,直接拖垮了兩台機器。我們通過臨時關閉幾台web server上的logstash暫時解決了這個問題。後續還需要對jvm進行一些調優。
使用ELK構建分布式日誌分析系統
分布式系統的日誌散落在各個伺服器上,對於監控和排錯非常不利,我們基於elk構建了整套日誌收集,分析,展示系統。架構圖 1.整理rails日誌 我們最關心的是rails的訪問日誌,但是rails日誌本身的格式是有問題的,舉個例子 started get for 10.1.1.11 at 2017 07...
ELK分布式日誌系統學習1 ELK介紹
e是指elasticsearch,是乙個開源的分布式,可擴充套件,高可用的 restful 風格的搜尋和資料分析引擎 l是指logstash,是開源的伺服器端資料處理管道,能夠同時從多個 採集資料 轉換資料,然後將資料傳送到你需要儲存的地方 此處以elasticsearch為例 k是指kibana,...
分布式實時日誌分析解決方案 ELK 部署架構
elk 已經成為目前最流行的集中式日誌解決方案,它主要是由beats logstash elasticsearch kibana等元件組成,來共同完成實時日誌的收集,儲存,展示等一站式的解決方案。本文將會介紹elk常見的架構以及相關問題解決。filebeat filebeat是一款輕量級,占用服務資...