原文鏈接
Elastic Stack簡稱ELK,在本教程你將學(xué)習(xí)如何快速搭建并運(yùn)行Elastic Stack。
首先你要安裝核心開源產(chǎn)品:
Elasticsearch:
Kibana:
Beats:
Logstash:
然后,你將了解如何實(shí)現(xiàn)一個系統(tǒng)監(jiān)視解決方案,該方案使用Metricbeat收集服務(wù)器度量并將數(shù)據(jù)發(fā)送到Elasticsearch,在Elasticsearch里你可以使用Kibana搜索和可視化數(shù)據(jù)。在你完成基本的設(shè)置之后,你可以添加Logstash來進(jìn)行額外的解析。
你可以在一個單個虛擬機(jī)甚至你的筆記本上安裝Elastic Stack。
重要:
實(shí)現(xiàn)安全性是建立Elastic Stack的關(guān)鍵步驟。要使用示例安裝快速啟動和運(yùn)行,現(xiàn)在就跳過這些步驟。在通過網(wǎng)絡(luò)發(fā)送敏感數(shù)據(jù)之前,請確保對Elastic Stack進(jìn)行安全保護(hù),并啟用加密通信。
在你開始之前
- 有關(guān)支持的操作系統(tǒng)和產(chǎn)品兼容性的信息,請參閱Elastic Support Matrix
- 驗(yàn)證您的系統(tǒng)滿足Logstash和Elasticsearch的最低JVM需求。
安裝Elasticsearch
Elasticsearch是一個實(shí)時、分布式存儲、搜索和分析引擎。它可以用于許多用途,但它擅長的一個上下文是對半結(jié)構(gòu)化數(shù)據(jù)流(如日志或解碼網(wǎng)絡(luò)數(shù)據(jù)包)進(jìn)行索引。
要下載和安裝Elasticsearch,打開終端窗口,使用系統(tǒng)的命令(deb為Debian/Ubuntu, rpm為Redhat/Centos/Fedora, mac為OS X, win為Windows):
deb
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.deb
sudo dpkg -i elasticsearch-6.4.0.deb
sudo /etc/init.d/elasticsearch start
rpm
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.rpm
sudo rpm -i elasticsearch-6.4.0.rpm
sudo service elasticsearch start
mac
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz
tar -xzvf elasticsearch-6.4.0.tar.gz
cd elasticsearch-6.4.0
./bin/elasticsearch
win
1.從Elasticsearch下載頁面下載Elasticsearch 6.4.0 Windows zip文件。
2.將zip文件的內(nèi)容解壓縮到計(jì)算機(jī)上的一個目錄,例如,C:\Program Files
3.作為管理員打開命令提示符并進(jìn)入到包含提取文件的目錄,例如:
cd C:\Program Files\elasticsearch-6.4.0
4.啟動Elasticsearch
bin\elasticsearch.bat
對于其他操作系統(tǒng),請?jiān)L問Elasticsearch下載頁面。
要了解關(guān)于安裝、配置和運(yùn)行Elasticsearch的更多信息,請閱讀Elasticsearch參考資料
確保elasticsearch已經(jīng)啟動并運(yùn)行
要測試Elasticsearch守護(hù)進(jìn)程是否啟動并運(yùn)行,請嘗試在端口9200上發(fā)送HTTP GET請求。
curl http://127.0.0.1:9200
在Windows上,如果沒有安裝cURL,則將瀏覽器指向URL。
你會看到類似這樣的回應(yīng):
{
"name" : "QtI5dUu",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "DMXhqzzjTGqEtDlkaMOzlA",
"version" : {
"number" : "6.4.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "00d8bc1",
"build_date" : "2018-06-06T16:48:02.249996Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
安裝kibana
Kibana是一個開源的分析和可視化平臺,設(shè)計(jì)用于Elasticsearch。使用Kibana搜索、查看和與存儲在Elasticsearch索引中的數(shù)據(jù)交互。你可以輕松地執(zhí)行高級數(shù)據(jù)分析并在各種圖表、表格和地圖中可視化數(shù)據(jù)。
我們建議你將Kibana安裝在與Elasticsearch相同的服務(wù)器上,但這不是必需的。如果將產(chǎn)品安裝在不同的服務(wù)器上,在開始Kibana之前,則需要更改Kibana配置文件kibana.yml中的Elasticsearch服務(wù)器的URL (IP:PORT)。
要下載和安裝Kibana,打開終端窗口,使用與系統(tǒng)匹配的命令:
deb or rpm
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz
tar xzvf kibana-6.4.0-linux-x86_64.tar.gz
cd kibana-6.4.0-linux-x86_64/
./bin/kibana
mac
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-darwin-x86_64.tar.gz
tar xzvf kibana-6.4.0-darwin-x86_64.tar.gz
cd kibana-6.4.0-darwin-x86_64/
./bin/kibana
win
- 從Kibana下載頁面下載Kibana 6.4.0 Windows zip文件。
2.將zip文件的內(nèi)容解壓縮到一個目錄在您的計(jì)算機(jī)上,例如,C:\Program Files
3.作為管理員打開命令提示符并導(dǎo)航到包含提取文件的目錄,例如:
cd C:\Program Files\kibana-6.4.0-windows
4.啟動Kibana
bin\kibana.bat
對于其他操作系統(tǒng),請?jiān)L問Kibana下載頁面。
要了解關(guān)于安裝、配置和運(yùn)行Kibana的更多信息,請閱讀Kibana參考資料。
啟動Kibana web界面
要啟動Kibana web界面,請將瀏覽器指向端口5601。例如,http://127.0.0.1:5601。
安裝Beats
Beats是作為開源數(shù)據(jù)托運(yùn)人代理安裝在服務(wù)器上,用于向Elasticsearch發(fā)送操作數(shù)據(jù)。Beats可以直接將數(shù)據(jù)發(fā)送到Elasticsearch或通過Logstash,在Logstash里你可以進(jìn)一步處理和增強(qiáng)數(shù)據(jù)。
每個Beat是一個單獨(dú)的可安裝的產(chǎn)品。在本教程中,你將了解如何安裝、運(yùn)行Metricbeat和系統(tǒng)模塊,使之能夠收集系統(tǒng)指標(biāo)。
要了解關(guān)于安裝和配置其他Beat的更多信息,請參閱入門文檔:
<colgroup style="box-sizing: border-box;"><col class="col_1" style="box-sizing: border-box;"><col class="col_2" style="box-sizing: border-box;"></colgroup>
Elastic Beats | To capture |
---|---|
Auditbeat | Audit data |
Filebeat | Log files |
Heartbeat | Availability monitoring |
Metricbeat | Metrics |
Packetbeat | Network traffic |
Winlogbeat | Windows event logs |
安裝Metricbeat
要下載和安裝Metricbeat,打開終端窗口并使用與您的系統(tǒng)匹配的命令:
deb
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.4.0-amd64.deb
sudo dpkg -i metricbeat-6.4.0-amd64.deb
rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.4.0-x86_64.rpm
sudo rpm -vi metricbeat-6.4.0-x86_64.rpm
mac
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.4.0-darwin-x86_64.tar.gz
tar xzvf metricbeat-6.4.0-darwin-x86_64.tar.gz
win
1.從Metricbeat下載頁面下載Metricbeat Windows zip文件。
2.將zip文件的內(nèi)容解壓縮到 C:\Program Files中。
3.將Metricbeat -6.4.0-windows目錄重命名為Metricbeat。
4.作為管理員打開PowerShell提示符(右鍵單擊PowerShell圖標(biāo)并選擇以管理員身份運(yùn)行)。
5.從PowerShell提示符,運(yùn)行以下命令將Metricbeat安裝為Windows服務(wù)
PS > cd 'C:\Program Files\Metricbeat'
PS C:\Program Files\Metricbeat> .\install-service-metricbeat.ps1
對于其他操作系統(tǒng),請?jiān)L問Beats下載頁面
將系統(tǒng)指標(biāo)傳到Elasticsearch
Metricbeat提供預(yù)先構(gòu)建的模塊,您可以使用這些模塊在大約5分鐘內(nèi)快速實(shí)現(xiàn)和部署一個系統(tǒng)監(jiān)控解決方案,包括樣例指示板和數(shù)據(jù)可視化。
在本節(jié)中,您將了解如何運(yùn)行系統(tǒng)模塊,以從運(yùn)行在服務(wù)器上的操作系統(tǒng)和服務(wù)收集指標(biāo)。系統(tǒng)模塊收集系統(tǒng)級指標(biāo),如CPU使用率、內(nèi)存、文件系統(tǒng)、磁盤IO和網(wǎng)絡(luò)IO統(tǒng)計(jì)數(shù)據(jù),以及系統(tǒng)上運(yùn)行的每個進(jìn)程的頂級統(tǒng)計(jì)數(shù)據(jù)。
在你開始之前驗(yàn)證Elasticsearch和Kibana正在運(yùn)行,Elasticsearch準(zhǔn)備從Metricbeat接收數(shù)據(jù)。
建立系統(tǒng)模塊并開始收集系統(tǒng)指標(biāo)。
1.從Metricbeat安裝目錄,啟用系統(tǒng)模塊:
deb and rpm
sudo metricbeat modules enable system
mac:
./metricbeat modules enable system
win
PS C:\Program Files\Metricbeat> .\metricbeat.exe modules enable system
2.設(shè)置初始環(huán)境
deb and rpm
sudo metricbeat setup -e
mac
./metricbeat setup -e
win
PS C:\Program Files\Metricbeat> metricbeat.exe setup -e
setup命令加載Kibana儀表板。如果儀表板已經(jīng)設(shè)置好,則省略此命令。e標(biāo)志是可選的,并將輸出發(fā)送到標(biāo)準(zhǔn)錯誤,而不是syslog。
3.啟動Metricbeat
deb and rpm
sudo service metricbeat start
mac
./metricbeat -e
win
PS C:\Program Files\Metricbeat> Start-Service metricbeat
Metricbeat運(yùn)行并開始向Elasticsearch發(fā)送系統(tǒng)指標(biāo)。
在Kibana中可視化系統(tǒng)指標(biāo)
要可視化系統(tǒng)指標(biāo),打開瀏覽器并導(dǎo)航到Metricbeat系統(tǒng)概述儀表板:
http://localhost:5601/app/kibana#/dashboard/Metricbeat-system-overview
TIP:如果在Kibana沒有看到數(shù)據(jù),請嘗試將日期范圍更改為更大的范圍。默認(rèn)情況下,Kibana會顯示最后15分鐘。如果看到錯誤,請確保Metricbeat正在運(yùn)行,然后刷新頁面。
現(xiàn)在你已經(jīng)知道了如何為Elastic Stack建立最簡單的體系結(jié)構(gòu)—一個或多個Beats將事件數(shù)據(jù)直接發(fā)送到同一個服務(wù)器上運(yùn)行的Elasticsearch實(shí)例—現(xiàn)在讓我們添加Logstash。
安裝Logstash
Logstash是一個強(qiáng)大的工具,可以集成多種部署。它提供了大量可供選擇的插件,可以幫助您解析、充實(shí)、轉(zhuǎn)換和緩沖各種來源的數(shù)據(jù)。
要下載和安裝Logstash,打開終端窗口并使用與您的系統(tǒng)匹配的命令:
deb
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.deb
sudo dpkg -i logstash-6.4.0.deb
rpm
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.rpm
sudo rpm -i logstash-6.4.0.rpm
mac
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.tar.gz
tar -xzvf logstash-6.4.0.tar.gz
win
1.從Logstash下載頁面下載Logstash 6.4.0 Windows zip文件。
2.將zip文件的內(nèi)容解壓縮到計(jì)算機(jī)上的一個目錄,例如,C:\Program Files。使用短路徑(少于30個字符)以避免在Windows上遇到文件路徑長度限制。
對于其他操作系統(tǒng),請?jiān)L問Logstash的下載頁面。
要了解關(guān)于安裝、配置和運(yùn)行Logstash的更多信息,請閱讀logstash的參考資料。
配置logstash監(jiān)聽beats輸入
Logstash提供從各種輸入讀取的輸入插件。在本教程中,你將創(chuàng)建一個Logstash管道配置,它偵聽Beats輸入并將接收到的事件發(fā)送到Elasticsearch輸出。
配置logstash:
1.創(chuàng)建一個新的日志存儲管道配置文件,名為demo-metrics-pipeline.conf。如果您將Logstash作為deb或rpm包安裝的,請?jiān)贚ogstash config目錄中創(chuàng)建該文件。該文件必須包含:
- 一種輸入階段,配置Logstash在端口5044上偵聽傳入Beats連接。
- 一個輸入階段,將事件索引到Elasticsearch。輸出階段還配置Logstash寫入Metricbeat索引。
例如:
input {
beats {
port => 5044
}
}
# The filter part of this file is commented out to indicate that it
# is optional.
# filter {
#
# }
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
當(dāng)你開始使用這個管道配置Logstash時,Beats事件是通過logstash輸出出來的,你可以完全訪問logstach輸出出來的收集、充實(shí)和轉(zhuǎn)換數(shù)據(jù)的功能。
啟動logstash
使用與系統(tǒng)匹配的命令。如果你將Logstash作為deb或rpm包安裝的,請確保config文件位于config目錄中。
deb
sudo /etc/init.d/logstash start
rpm
sudo service logstash start
mac
./bin/logstash -f demo-metrics-pipeline.conf
win
bin\logstash.bat -f demo-metrics-pipeline.conf
TIP:如果你收到JVM錯誤消息,請檢查Java版本,如安裝Logstash中所示。
Logstash開始偵聽來自Beats輸入的事件。接下來需要配置Metricbeat將事件發(fā)送到Logstash。
配置Metricbeat以發(fā)送事件到logstash
Metricbeat默認(rèn)向Elasticsearch發(fā)送事件。要將事件發(fā)送到Logstash中,請修改Metricbeat配置文件Metricbeat .yml。你可以在Metricbeat安裝目錄下找到這個文件,或者對于rpm和deb,在找到/etc/metricbeat。
通過注釋它以禁用輸出到Elasticsearch,然后取消注釋以啟用輸出到logstash:
#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
.
.
.
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
保存文件,然后重新啟動Metricbeat應(yīng)用配置更改。
Logstash從Beats輸入讀取數(shù)據(jù)并將事件索引到Elasticsearch。你還沒有定義篩選器部分,因此Logstash只是將事件轉(zhuǎn)發(fā)給Elasticsearch,而沒有進(jìn)行額外的處理。接下來,您將學(xué)習(xí)如何定義篩選器階段。
定義一個過濾器以使從字段中提取數(shù)據(jù)
Metricbeat收集的系統(tǒng)度量包括一個名為cmdline的字段,該字段包含用于啟動系統(tǒng)進(jìn)程的完整命令行參數(shù)。例如:
"cmdline": "/Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/plugin-container -childID 3
-isForBrowser -boolPrefs 36:1|299:0| -stringPrefs 285:38;{b77ae304-9f53-a248-8bd4-a243dbf2cab1}| -schedulerPrefs
0001,2 -greomni /Applications/Firefox.app/Contents/Resources/omni.ja -appomni
/Applications/Firefox.app/Contents/Resources/browser/omni.ja -appdir
/Applications/Firefox.app/Contents/Resources/browser -profile
/Users/dedemorton/Library/Application Support/Firefox/Profiles/mftvzeod.default-1468353066634
99468 gecko-crash-server-pipe.99468 org.mozilla.machname.1911848630 tab"
與其將整個命令行參數(shù)發(fā)送到Elasticsearch,不如只發(fā)送命令的路徑。一種方法是使用Grok過濾器。學(xué)習(xí)Grok超出了本教程的范圍,但是如果您想了解更多,請參閱Grok filter插件文檔。
要提取路徑,在之前創(chuàng)建的Logstash配置文件的輸入和輸出部分之間添加以下Grok過濾器:
filter {
if [system][process] {
if [system][process][cmdline] {
grok {
match => {
"[system][process][cmdline]" => "^%{PATH:[system][process][cmdline_path]}"
}
remove_field => "[system][process][cmdline]"
}
}
}
}
- 使用正則模式匹配路徑,然后將路徑存儲在一個名為cmdline_path的字段中。
- 移除原始字段cmdline,所以它不在Elasticsearch中索引。
完成之后,完整的配置文件應(yīng)該如下所示:
input {
beats {
port => 5044
}
}
filter {
if [system][process] {
if [system][process][cmdline] {
grok {
match => {
"[system][process][cmdline]" => "^%{PATH:[system][process][cmdline_path]}"
}
remove_field => "[system][process][cmdline]"
}
}
}
}
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
重新啟動Logstash以獲取更改。事件現(xiàn)在包含一個名為cmdline_path的字段,該字段包含命令路徑:
"cmdline_path": "/Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/plugin-container"
接下來是什么
恭喜你! 你已經(jīng)成功地建立了Elastic Stack。你學(xué)習(xí)了如何流傳輸系統(tǒng)度量到Elasticsearch中在Kibana中可視化這些數(shù)據(jù)。你還學(xué)習(xí)了如何使用Logstash來過濾Metricbeat收集的事件。