淺談ELK日志分析平台


作者:珂珂
鏈接:https://zhuanlan.zhihu.com/p/22104361
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

小編的話

“技術干貨”系列文章意在分享技術牛人的知識干貨,每期主題都不一樣喲!期待各位讀者在文后發表留言,來一場技術上的交流和思想上的碰撞!


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 ops@10.1.1.1 ssh ops@10.1.1.1

ssh ops@10.1.1.1 …

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 …… ……

因此,傳統的日志架構存在的以下若干缺點:

  1. 開發人員無權登錄,經過運維周轉費時費力

  2. 日志數據分散在多個系統,難以查找

  3. 日志數據量大,查詢速度慢

  4. 一個調用會涉及多個系統,難以在這些系統的日志中快速定位數據

  5. 數據不夠實時

  6. ……

一、日志架構的演變:

傳統的日志架構,需要運維人員強大的正則功底,對日志運用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: ""

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('?'))])"

}

五、日志展示



后續:
1、監控方面:
進程和端口存活(各個軟件)
磁盤空間(Elasticsearch的數據目錄,logstash的日志目錄等
……
2、優化方面:
Elasticsearch 中,JVM使用OS的max-open-files設置、索引調整、文件刷新時間等
Logstash的日志部分無用段去除、filter worker數量等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM