原文鏈接
Elastic Stack簡稱ELK迎捺,在本教程你將學(xué)習(xí)如何快速搭建并運行Elastic Stack。
首先你要安裝核心開源產(chǎn)品:
Elasticsearch:
Kibana:
Beats:
Logstash:
然后恶守,你將了解如何實現(xiàn)一個系統(tǒng)監(jiān)視解決方案第献,該方案使用Metricbeat收集服務(wù)器度量并將數(shù)據(jù)發(fā)送到Elasticsearch,在Elasticsearch里你可以使用Kibana搜索和可視化數(shù)據(jù)兔港。在你完成基本的設(shè)置之后庸毫,你可以添加Logstash來進行額外的解析。
你可以在一個單個虛擬機甚至你的筆記本上安裝Elastic Stack衫樊。
重要:
實現(xiàn)安全性是建立Elastic Stack的關(guān)鍵步驟飒赃。要使用示例安裝快速啟動和運行,現(xiàn)在就跳過這些步驟科侈。在通過網(wǎng)絡(luò)發(fā)送敏感數(shù)據(jù)之前载佳,請確保對Elastic Stack進行安全保護,并啟用加密通信臀栈。
在你開始之前
- 有關(guān)支持的操作系統(tǒng)和產(chǎn)品兼容性的信息蔫慧,請參閱Elastic Support Matrix
- 驗證您的系統(tǒng)滿足Logstash和Elasticsearch的最低JVM需求。
安裝Elasticsearch
Elasticsearch是一個實時权薯、分布式存儲姑躲、搜索和分析引擎睡扬。它可以用于許多用途,但它擅長的一個上下文是對半結(jié)構(gòu)化數(shù)據(jù)流(如日志或解碼網(wǎng)絡(luò)數(shù)據(jù)包)進行索引黍析。
要下載和安裝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)容解壓縮到計算機上的一個目錄马靠,例如,C:\Program Files
3.作為管理員打開命令提示符并進入到包含提取文件的目錄蔼两,例如:
cd C:\Program Files\elasticsearch-6.4.0
4.啟動Elasticsearch
bin\elasticsearch.bat
對于其他操作系統(tǒng)甩鳄,請訪問Elasticsearch下載頁面。
要了解關(guān)于安裝额划、配置和運行Elasticsearch的更多信息娩贷,請閱讀Elasticsearch參考資料
確保elasticsearch已經(jīng)啟動并運行
要測試Elasticsearch守護進程是否啟動并運行,請嘗試在端口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è)計用于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)容解壓縮到一個目錄在您的計算機上瘟芝,例如,C:\Program Files
3.作為管理員打開命令提示符并導(dǎo)航到包含提取文件的目錄褥琐,例如:
cd C:\Program Files\kibana-6.4.0-windows
4.啟動Kibana
bin\kibana.bat
對于其他操作系統(tǒng)锌俱,請訪問Kibana下載頁面。
要了解關(guān)于安裝敌呈、配置和運行Kibana的更多信息贸宏,請閱讀Kibana參考資料造寝。
啟動Kibana web界面
要啟動Kibana web界面,請將瀏覽器指向端口5601锚赤。例如匹舞,http://127.0.0.1:5601。
安裝Beats
Beats是作為開源數(shù)據(jù)托運人代理安裝在服務(wù)器上线脚,用于向Elasticsearch發(fā)送操作數(shù)據(jù)赐稽。Beats可以直接將數(shù)據(jù)發(fā)送到Elasticsearch或通過Logstash,在Logstash里你可以進一步處理和增強數(shù)據(jù)浑侥。
每個Beat是一個單獨的可安裝的產(chǎn)品姊舵。在本教程中,你將了解如何安裝寓落、運行Metricbeat和系統(tǒng)模塊括丁,使之能夠收集系統(tǒng)指標。
要了解關(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圖標并選擇以管理員身份運行)。
5.從PowerShell提示符陨簇,運行以下命令將Metricbeat安裝為Windows服務(wù)
PS > cd 'C:\Program Files\Metricbeat'
PS C:\Program Files\Metricbeat> .\install-service-metricbeat.ps1
對于其他操作系統(tǒng)吐绵,請訪問Beats下載頁面
將系統(tǒng)指標傳到Elasticsearch
Metricbeat提供預(yù)先構(gòu)建的模塊,您可以使用這些模塊在大約5分鐘內(nèi)快速實現(xiàn)和部署一個系統(tǒng)監(jiān)控解決方案河绽,包括樣例指示板和數(shù)據(jù)可視化己单。
在本節(jié)中,您將了解如何運行系統(tǒng)模塊耙饰,以從運行在服務(wù)器上的操作系統(tǒng)和服務(wù)收集指標纹笼。系統(tǒng)模塊收集系統(tǒng)級指標,如CPU使用率榔幸、內(nèi)存允乐、文件系統(tǒng)、磁盤IO和網(wǎng)絡(luò)IO統(tǒng)計數(shù)據(jù)削咆,以及系統(tǒng)上運行的每個進程的頂級統(tǒng)計數(shù)據(jù)牍疏。
在你開始之前驗證Elasticsearch和Kibana正在運行,Elasticsearch準備從Metricbeat接收數(shù)據(jù)拨齐。
建立系統(tǒng)模塊并開始收集系統(tǒng)指標鳞陨。
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標志是可選的,并將輸出發(fā)送到標準錯誤掏导,而不是syslog享怀。
3.啟動Metricbeat
deb and rpm
sudo service metricbeat start
mac
./metricbeat -e
win
PS C:\Program Files\Metricbeat> Start-Service metricbeat
Metricbeat運行并開始向Elasticsearch發(fā)送系統(tǒng)指標。
在Kibana中可視化系統(tǒng)指標
要可視化系統(tǒng)指標趟咆,打開瀏覽器并導(dǎo)航到Metricbeat系統(tǒng)概述儀表板:
http://localhost:5601/app/kibana#/dashboard/Metricbeat-system-overview
TIP:如果在Kibana沒有看到數(shù)據(jù)添瓷,請嘗試將日期范圍更改為更大的范圍。默認情況下值纱,Kibana會顯示最后15分鐘鳞贷。如果看到錯誤,請確保Metricbeat正在運行虐唠,然后刷新頁面搀愧。
現(xiàn)在你已經(jīng)知道了如何為Elastic Stack建立最簡單的體系結(jié)構(gòu)—一個或多個Beats將事件數(shù)據(jù)直接發(fā)送到同一個服務(wù)器上運行的Elasticsearch實例—現(xiàn)在讓我們添加Logstash。
安裝Logstash
Logstash是一個強大的工具疆偿,可以集成多種部署咱筛。它提供了大量可供選擇的插件,可以幫助您解析杆故、充實眷蚓、轉(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)容解壓縮到計算機上的一個目錄叉钥,例如罢缸,C:\Program Files。使用短路徑(少于30個字符)以避免在Windows上遇到文件路徑長度限制投队。
對于其他操作系統(tǒng)枫疆,請訪問Logstash的下載頁面。
要了解關(guā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包安裝的价说,請在Logstash 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輸出出來的收集、充實和轉(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默認向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,而沒有進行額外的處理行贪。接下來漾稀,您將學(xué)習(xí)如何定義篩選器階段。
定義一個過濾器以使從字段中提取數(shù)據(jù)
Metricbeat收集的系統(tǒng)度量包括一個名為cmdline的字段建瘫,該字段包含用于啟動系統(tǒng)進程的完整命令行參數(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收集的事件。