小編的話
“技術干貨”系列文章意在分享技術牛人的知識干貨,每期主題都不一樣喲!期待各位讀者在文后發表留言,來一場技術上的交流和思想上的碰撞!
2016年7月20日,本期品高云公開課由葉春草帶來“可視化案發現場——淺談ELK日志分析平臺”的分享。
分享嘉賓
葉春草現就職于品高云軟件技術支持工程師。就職一年來,曾參與過廣州地鐵聆客、公司聆客、深圳公安局聆客的數據庫遷移、升級及其他服務器的監控運維、日志分析系統搭建等,主要負責聆客相關運維。
分享正文
在談ELK前,先來談談我們品高聆客和ELK之間的關系。
BingoLink(品高聆客)是一款集“應用開發、整合接入、應用管理、安全保障、社交平臺”于一體的MEAP平臺。用BingoLink構建企業的移動化平臺,滿足企業在移動互聯網年代移動應用開發、現有業務系統的整合接入、應用管理及運營、企業內部溝通協作等需求的實現。
ELK在聆客中,發揮的作用和價值就在于:
1、可提高用戶響應速度。通過ELK篩選出數據庫慢查詢日志,開發再對語句進行優化,則可提高數據庫響應時間,進而提高用戶響應時間。
2、可提高聆客軟件可用率。當有故障時,可用ELK快速查詢所需要的日志,查看故障原因,縮短故障定位時間,進而提高可用率。
3、可總結聆客網頁的正常狀態百分比。通過ELK篩選nginx狀態碼結果,繪制狀態碼扇形圖,可清晰知道網頁訪問有多少是正常的。
4、可定位聆客用戶的地圖分布。通過ELK抓取用戶訪問的公網IP,再繪制Tile map地圖,則可在地圖上清楚看來聆客在全國各地的分布,定位客戶來源。
5、可優化聆客系統。通過開發、運維定期查看ELK上的圖表、周報,可發現隱藏問題(例如某個nginx路徑訪問持續過長、數據庫有暫未影響功能的error等),進行排除,從而減少潛在的隱患,及優化系統。
那么問題來了,ELK日志分析平臺是什么?
首先來看一下傳統的日志查找方式:當有客戶報障時,需要:
1、登錄服務器
ssh [email protected] ssh [email protected]
ssh [email protected] …
2、找到位置
cd /apps/logs/nginx/; cd /apps/logs/mysql/;
cd /apps/logs/docker; cd /apps/logs/java/; …… ……
3、查看日志
head tail grep wc awk count cut …… ……
因此,傳統的日志架構存在的以下若干缺點:
開發人員無權登錄,經過運維周轉費時費力
日志數據分散在多個系統,難以查找
日志數據量大,查詢速度慢
一個調用會涉及多個系統,難以在這些系統的日志中快速定位數據
數據不夠實時
……
一、日志架構的演變:
傳統的日志架構,需要運維人員強大的正則功底,對日志運用shell命令,例如cat tail grep awk sed等,對日志進行處理,再篩選出自己想要的結果或尋找關鍵字。
有了ELK后,對運維和開發處理日志的要求降低,只需要在web界面上簡單的操作,就可以找到自己想要的數據,并進行畫圖
二、那么ELK名稱怎么由來呢?
首字母為該管理系統三個主要軟件:Elasticsearch、Logstash、Kibana。這三個并非該管理系統的全部組成,而且還可以添加Redis,kafka,filebeat等軟件
它們各自的功能大概可以這樣概述:
E
實時分析、實時檢索、海量存儲
建立索引,以便日后快速查看、搜索、分析
L
數據流傳輸、日志結構化
K
分析統計、酷炫圖表
關于ELK的配置
E配置:
主要配置數據目錄、日志目錄、綁定IP和端口
path.data: /apps/data/
path.logs: /apps/logs/elasticsearch/
network.host: 172.17.96.9
http.port: 9200
L配置:
logstash的配置比較復雜,由三個部分組成:input,filter,output
K配置:
主要配置elasticsearch的地址,K的數據目錄、日志目錄、綁定IP和端口
server.host: "172.17.96.8“
server.port: 5601
elasticsearch.url: "http://172.17.96.9:9200"
pid.file: /apps/run/kibana/kibana.pid
logging.dest: /apps/logs/kibana/kibana.log
三、ELK啟動
service方式,當你的安裝方式是rpm包或配置官方倉庫時:
1、service方式(rpm包,yum安裝時)
service $PROG start
nohup+&在后臺啟動(源碼安裝時)
2、nohup方式(源碼包安裝時)
nohup $COMMAND &
demontools(supervisord等啟動進程的程序
3、supervisord (源碼包安裝時)
service supervisord start
四、日志匹配
1、過濾器:這里是選取幾個過濾器進行講解,更多的過濾器,可以在官網上繼續學習
date時間處理
date時間格式
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
}
2、grok正則捕獲
grok正則捕獲
grok{
pattern => ["%{TIMESTAMP_ISO8601:Time} - %{IP:serverIP} %{BASE10NUM:port} %{BASE10NUM:relay:int}"]
}
grok {
patterns_dir => ["/apps/conf/logstash/patterns"]
match => {
"message" => "%{MYSQLSLOW}"
}
3、mutate數據修改
mutate數據修改
mutate { convert => ["bytes","integer"] }
mutate { convert => [“time","float"] }
mutate { split => ["re_path", "/"] }
4、rubby靈活處理
ruby靈活處理
ruby {
init =>"@kname= ['re_path','re_args']"
code =>"event.append(Hash[@kname.zip(event['request'].split('?'))])"
}
五、日志展示
實時搜索
時間欄
圖形選擇
填充圖
表格
markdown(文本說明)
度量值
扇形圖
儀表盤:圖表的整合
后續:
1、監控方面:
進程和端口存活(各個軟件)
磁盤空間(Elasticsearch的數據目錄,logstash的日志目錄等
……
2、優化方面:
Elasticsearch 中,JVM使用OS的max-open-files設置、索引調整、文件刷新時間等
Logstash的日志部分無用段去除、filter worker數量等
歡迎大家一起來交流!
你想和更多志同道合的技術大咖一起交流嗎?你想收聽每周的“品高云微信群公開課”的直播嗎?
長按識別以下二維碼關注“品高云計算”微信公眾號,回復“公開課”,品高云公開課的最新資訊、往期精彩回顧都在這里!