什么是ELK
-
Elasticsearch:Elasticsearch(以下簡(jiǎn)稱ES) 是一個(gè)分布式、RESTful 風(fēng)格的搜索和數(shù)據(jù)分析引擎,能夠解決不斷涌現(xiàn)出的各種用例。 ES是 Elastic Stack 的核心,采用集中式數(shù)據(jù)存儲(chǔ),可以通過(guò)機(jī)器學(xué)習(xí)來(lái)發(fā)現(xiàn)潛在問(wèn)題。ES能夠執(zhí)行及合并多種類型的搜索(結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)、地理位置、指標(biāo))。支持 PB級(jí)數(shù)據(jù)的秒級(jí)檢索。
-
Kibana:Kibana 是一個(gè)免費(fèi)且開(kāi)放的用戶界面,能夠讓您對(duì) Elasticsearch 數(shù)據(jù)進(jìn)行可視化,并讓您在 Elastic Stack 中進(jìn)行導(dǎo)航。您可以進(jìn)行各種操作,從跟蹤查詢負(fù)載,到理解請(qǐng)求如何流經(jīng)您的整個(gè)應(yīng)用,都能輕松完成
-
Logstash:Logstash 是免費(fèi)且開(kāi)放的服務(wù)器端數(shù)據(jù)處理管道,能夠從多個(gè)來(lái)源采集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到合適的的“存儲(chǔ)庫(kù)”中。
-
Beats:Beats 是一套免費(fèi)且開(kāi)源的輕量級(jí)數(shù)據(jù)采集器,集合了多種單一用途數(shù)據(jù)采集器。它們從成百上千或成千上萬(wàn)臺(tái)機(jī)器和系統(tǒng)向 Logstash 或 Elasticsearch 發(fā)送數(shù)據(jù)。
為什么要使用ELK
-
嚴(yán)格按照開(kāi)發(fā)標(biāo)準(zhǔn)來(lái)說(shuō),開(kāi)發(fā)人員是不能登錄生產(chǎn)服務(wù)器查看日志數(shù)據(jù)的
-
一個(gè)應(yīng)用可能分布于多態(tài)服務(wù)器,難以查找
-
同一臺(tái)服務(wù)區(qū)可能部署多個(gè)應(yīng)用,日志分散難以管理
-
日志可能很大,單個(gè)文件通常能達(dá)到GB級(jí)別,日志無(wú)法準(zhǔn)確定位,日志查詢不方便且速度慢
-
通常日志文件以非結(jié)構(gòu)化存儲(chǔ),不支持?jǐn)?shù)據(jù)可視化查詢。
-
不支持日志分析(比如慢查詢?nèi)罩痉治?、分析用戶畫像等)?/p>
使用場(chǎng)景
-
采集業(yè)務(wù)日志
-
采集Nginx日志
-
采集數(shù)據(jù)庫(kù)日志,如MySQL
-
監(jiān)控集群性能指標(biāo)
-
監(jiān)聽(tīng)網(wǎng)絡(luò)端口
-
心跳檢測(cè)
Logstash
開(kāi)源的流數(shù)據(jù)處理、轉(zhuǎn)換(解析)和發(fā)送引擎,可以采集來(lái)自不同數(shù)據(jù)源的數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行處理后輸出到多種輸出源
工作原理
Logstash的每個(gè)處理過(guò)程均以插件的形式實(shí)現(xiàn),Logstash的數(shù)據(jù)處理過(guò)程主要包括: Inputs , Filters , Outputs 三部分
數(shù)據(jù)采集:Inputs
數(shù)據(jù)過(guò)濾:Filter
數(shù)據(jù)存儲(chǔ):output
Beats
Beats 是一套免費(fèi)且開(kāi)源的輕量級(jí)數(shù)據(jù)采集器,集合了多種單一用途數(shù)據(jù)采集器。它們從成百上千或成千上萬(wàn)臺(tái)機(jī)器和系統(tǒng)向 Logstash 或 Elasticsearch 發(fā)送數(shù)據(jù)。
beats替換了logstash一部分功能(input? 采集功能)。因?yàn)閘ogstash比較重量級(jí),占用較多資源;而Beats相對(duì)輕量級(jí)。
Beats的基本特性
開(kāi)源:Beats 是一個(gè)免費(fèi)且開(kāi)放的平臺(tái),集合了多種單一用途數(shù)據(jù)采集器,各司其職,功能分離。社區(qū)中維護(hù)了上百個(gè)beat
輕量級(jí):體積小,職責(zé)單一、基于go語(yǔ)言開(kāi)發(fā),具有先天性能優(yōu)勢(shì),不依賴于Java環(huán)境,對(duì)服務(wù)器資源占用極小。Beats 可以采集符合 Elastic Common Schema (ECS) 要求的數(shù)據(jù),可以將數(shù)據(jù)轉(zhuǎn)發(fā)至 Logstash 進(jìn)行轉(zhuǎn)換和解析。
可插拔:Filebeat 和 Metricbeat 中包含的一些模塊能夠簡(jiǎn)化從關(guān)鍵數(shù)據(jù)源(例如云平臺(tái)、容器和系統(tǒng),以及網(wǎng)絡(luò)技術(shù))采集、解析和可視化信息的過(guò)程。只需運(yùn)行一行命令,即可開(kāi)始探索。
高性能:對(duì)CPU、內(nèi)存和IO的資源占用極小。
可擴(kuò)展:由于Beats開(kāi)源的特性,如果現(xiàn)有Beats不能滿足開(kāi)發(fā)需要,我們可以自行構(gòu)建,并且完善Beats社區(qū)
?組件
-
Filebeat:文件日志監(jiān)控采集 ,主要用于收集日志數(shù)據(jù)
-
Metricbeat:進(jìn)行指標(biāo)采集,指標(biāo)可以是系統(tǒng)的,也可以是眾多中間件產(chǎn)品的,主要用于監(jiān)控系統(tǒng)和軟件的性能
-
Packetbeat: 是一個(gè)實(shí)時(shí)網(wǎng)絡(luò)數(shù)據(jù)包分析器,通過(guò)網(wǎng)絡(luò)抓包、協(xié)議分析,基于協(xié)議和端口對(duì)一些系統(tǒng)通信進(jìn)行監(jiān)控和數(shù)據(jù)收集。可以將其與Elasticsearch一起使用,以提供應(yīng)用程序監(jiān)視和性能分析系統(tǒng)。
-
Heartbeat:心跳檢測(cè) (在配置的Url中喊一句:喂,有活著的么?有的話吱個(gè)聲!)
-
Winlogbeat:Windows事件日志
-
Auditbeat:審計(jì)數(shù)據(jù)(收集審計(jì)日志)
-
Functionbeat:云服務(wù)生成的日志和指標(biāo)收集器
Kibana
Kibana 是一個(gè)免費(fèi)且開(kāi)放的可視化系統(tǒng),能夠讓您對(duì) Elasticsearch 數(shù)據(jù)進(jìn)行可視化,并讓您在 Elastic Stack 中進(jìn)行導(dǎo)航。您可以進(jìn)行各種操作,從跟蹤查詢負(fù)載,到理解請(qǐng)求如何流經(jīng)您的整個(gè)應(yīng)用,都能輕松完成。
之前用的比較多的就是kibana的dev tools的功能,用于寫dsl
?kibana中的discover支持可視化的查看數(shù)據(jù)
基于ELK搭建日志采集系統(tǒng)
流程?
安裝logstash
下載:
Past Releases of Elastic Stack Software | Elastic
直接解壓
啟動(dòng):切換到bin目錄? ./logstash
./logstash -e 'input{stdin{}}' output{stdout{}}'
-e:加啟動(dòng)選擇
stdin:標(biāo)準(zhǔn)化輸入
stdout:標(biāo)準(zhǔn)化輸出
?在config/logstash-sample.conf中配置
啟動(dòng)時(shí),加 -f指定配置文件
?./bin/logstash??config/logstash-sample.conf
結(jié)果
stdin、stdout:方便排查日志采集問(wèn)題
FileBeat
安裝地址:
Filebeat 7.13.0 | Elastic
原理
?為什么要使用fileBeat
因?yàn)閘ogstash有日志采集的功能,但是logstash比較重量級(jí),如果放在業(yè)務(wù)服務(wù)器上,比較占用資源。所以,使用fileBeat在業(yè)務(wù)服務(wù)器上進(jìn)行日志采集,然后把采集到的日志輸出到logstash(單獨(dú)的服務(wù)器)上,這樣采集日志就不會(huì)占用業(yè)務(wù)服務(wù)器空間
?
filebeat配置
inputs配置
?啟動(dòng)fileBeat
?-e:對(duì)啟動(dòng)日志進(jìn)行輸出?
-c:指定配置文件
將fileBeat的輸出改為logstash(filebeat.yml)
?logstash的默認(rèn)端口號(hào):5044
?修改logstash的輸入為beats(logstash-sample.conf)
修改logstash的輸出為es(logstash-sample.conf)
?output中可以加多個(gè)(stdout、elasticsearch等)
可以通過(guò)配置,將一部分日志歸為一條日志(比如說(shuō)一些錯(cuò)誤日志)
multiline.type: pattern # 匹配格式是正則
multiline.pattern: '^\[' # 匹配的正則表達(dá)式
multiline.negate: true # 匹配上正則表示是一條數(shù)據(jù)(false表示匹配不上為新的一條數(shù)據(jù))
multiline.match: after # 匹配不上的追加在上一條后面
logstash添加filter過(guò)濾器
logstash最常用的filter是grok
kibana中可以寫grok
?將logstash中的filter配置成寫的grok正則
啟動(dòng)filebeat前,先把data數(shù)據(jù)刪除(避免之前的日志已經(jīng)采集過(guò)了,沒(méi)有產(chǎn)生新的日志?)
rm -rf data/
區(qū)分input
一個(gè)beats可以有多個(gè)input,但是只能輸出到同一個(gè)es的索引中,不方便做數(shù)據(jù)區(qū)分
可以給不同的input加標(biāo)簽區(qū)分
?在logstash中進(jìn)行判斷,然后區(qū)分index
可以根據(jù)grok判斷
想根據(jù)日志級(jí)別區(qū)分不同的日志,生成不同的index,可以根據(jù)grok中的LOGLEVEL判斷
如果要自定義正則表達(dá)式的話,可以在logstash的patterns文件中寫
?也可以通過(guò)字符串判斷
基于FileBeat采集nginx日志
安裝nginx
查找nginx安裝路徑
修改nginx配置文件中日志采集格式為json
nginx.conf?
改動(dòng)后需要重啟nginx
修改filebeat支持json輸入
?
基于filebeat采集系統(tǒng)日志syslog
format是一種日志規(guī)范
采集系統(tǒng)日志
udp、tcp的默認(rèn)端口是514
修改配置文件?
?重啟系統(tǒng)服務(wù)
查看系統(tǒng)服務(wù)狀態(tài)?
?在logstash中區(qū)分tcp、udp索引
?使用logger測(cè)試tcp
?
?使用netcat測(cè)試udp
后面的udp.yml是自己創(chuàng)建的文件
數(shù)據(jù)可視化操作
kibana的dashboard
?管理index patterns
?創(chuàng)建index pattern
方便更好的看一類es索引數(shù)據(jù)
?創(chuàng)建dashboard文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-600592.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-600592.html
到了這里,關(guān)于ELK(elasticsearch+logstash+kibana+beats)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!