正在找Elastic Stack(ELK)指南,那本介紹如何搭建Elastic Stack和快速啟動運行的寶典?那你就找對地方了!首先,請安裝以下核心產品:
- Elasticsearch
- Kibana
- Beats
- Logstash(可選)
之后你就可以學習到如何集成一套系統監測解決方案。用Metricbeat收集服務器指標數據,將數據發送到ElasticSearch,通過Kibana進行搜索和可視化數據。這些基礎的步驟完成之后,你還可以添加Logstash進行其他分析。
剛開始你可以將Elastic Stack安裝到單獨的虛擬機或者你的筆記本電腦上。
?? 在Elastic Stack設置中集成安全組件是非常重要的。為了快速啟動和運行樣例,現在暫時略去此步驟。但項目中在網絡上發送敏感數據前,請確保已經加密 secure the Elastic Stack啟用 encrypted communications.
開始之前
- 有關受支持的操作系統和產品兼容性的信息,請參閱 Elastic Support Matrix
- 確保你的系統滿足Logstash和Elasticsearch對JVM最低要求
安裝Elasticsearch
Elasticsearch是一款實時,分布式存儲,搜索和分析引擎。用途廣泛,但最重要的一個特點是索引半結構化的數據,比如日志或者解碼的網絡數據包。
??你可以在自己的硬件上運行Elasticsearch,或者ElasticCloud運行 hosted Elasticsearch Service。這項服務在AWS和GCP上都有。免費試用Elasticsearch Service.
下載安裝Elasticsearch,打開終端并運行命令(deb for Debian/Ubuntu, rpm for Redhat/Centos/Fedora, mac or brew for OS X, linux for Linux, and win for Windows):
deb:
Version 7.8.0 of Elasticsearch has not yet been released.
rpm:
Version 7.8.0 of Elasticsearch has not yet been released.
mac:
Version 7.8.0 of Elasticsearch has not yet been released.
brew:
Version 7.8.0 of Elasticsearch has not yet been released.
linux:
Version 7.8.0 of Elasticsearch has not yet been released.
win:
Version 7.8.0 of Elasticsearch has not yet been released.
其他操作系統, 請訪問 Elasticsearch download 頁面.
??默認的 cluster.name和 node.name分別是elasticsearch和你的主機名。如果你打算繼續使用這個集群或者添加更多的節點,那么最好把這些參數改成唯一的名稱。詳細關于這些修改和其他在elasticsearch.yml中的參數,參考Configuring Elasticsearch.
更多關于Elasticsearch安裝、配置和運行的細節,請參閱Elasticsearch Reference。
確保Elasticsearch啟動運行
測試Elasticsearch守護進程啟動并運行,發送HTTP的GET請求到端口9200。
curl http://127.0.0.1:9200
Windows上,如果你沒有安裝cURL,那就直接在瀏覽器打開http://127.0.0.1:9200
如果運行正常,那么你可以看到如下的返回信息:
{
"name" : "QtI5dUu",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "DMXhqzzjTGqEtDlkaMOzlA",
"version" : {
"number" : "7.8.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是用域數據分析和可視化的Elasticsearch最佳搭檔。通過Ki 辦啊可以與Elasticsearch索引進行交互,查詢,查看。你可以在Kibana使用高級的數據分析、數據可是化,它支持多種圖、表、地圖等。
??如果您在Elastic Cloud托管Elasticsearch,那么只需輕輕一點開關就可以啟用Kibana
我建議你在與Elasticsearch同一臺服務器上安裝Kibana,但倒也不是必須這么做。如果你將產品安裝在不同的服務器上,那么就需要啟動之前在Kibana配置文件kibana.yml上修改Elasticsearch服務器的地址(IP:PORT).
可以通過終端下載Kibana安裝包,國內可以使用huawei鏡像下載:
deb, rpm, or linux:
Version 7.8.0 of Kibana has not yet been released.
mac:
Version 7.8.0 of Kibana has not yet been released.
brew:
Version 7.8.0 of Kibana has not yet been released.
win:
Version 7.8.0 of Kibana has not yet been released.
其他操作系統, 訪問Kibana download頁面.
關于安裝、配置、運行Kibana的相關細節,參閱Kibana Reference。
訪問Kibana頁面控制臺
訪問Kibana頁面控制臺,在瀏覽器中打開http://127.0.0.1:5601。
安裝Beats
Beats是您作為代理安裝在服務器上的開源數據發送者,用于將運營數據發送到Elasticsearch。 Beats可以將數據直接發送到Elasticsearch或通過Logstash發送,您可以在其中進一步處理和增強數據。
每個Beat是單獨安裝的產品。在本指南中,您將學習如何在啟用system模塊以收集系統指標的情況下安裝和運行Metricbeat。
要了解有關安裝和配置其他Beats的更多信息,請參閱《入門指南》文檔.
Elastic Beats | To capture |
---|---|
Auditbeat | Audit data |
Filebeat | Log files |
Functionbeat | Cloud data |
Heartbeat | Availability monitoring |
Journalbeat | Systemd journals |
Metricbeat | Metrics |
Packetbeat | Network traffic |
Winlogbeat | Windows event logs |
安裝Metricbeat
下載安裝Metricbeat,打開終端運行你的系統支持的命令:
deb:
Version 7.8.0 of Metricbeat has not yet been released.
rpm:
Version 7.8.0 of Metricbeat has not yet been released.
mac:
Version 7.8.0 of Metricbeat has not yet been released.
brew:
Version 7.8.0 of Metricbeat has not yet been released.
linux:
Version 7.8.0 of Metricbeat has not yet been released.
win:
Version 7.8.0 of Metricbeat has not yet been released.
其他系統,前往Beats download 頁面。
將系統數據發送到Elasticsearch
Metricbeat提供了預構建的模塊,可用于在約5分鐘內快速實現和部署系統監視解決方案,并帶有示例儀表板和數據可視化。
這一節中,您將學到如何運行system模塊從操作系統和服務器上運行的服務中收集數據。system模塊收集操作系統級別的數據,比如CPU用量,內存,文件系統,磁盤IO和網絡IO統計量,同時系統上運行的每個進程的頂級統計數據。
開始之前:檢查Elasticsearch和Kibana已經正常運行并且能夠接收來自Metricbeat的數據。
設置system模塊并開始收集系統數據:
- 從Metricbeat安裝目錄中啟動system模塊:
deb and rpm:
sudo metricbeat modules enable system
mac and linux:
./metricbeat modules enable system
brew:
metricbeat modules enable system
win:
PS C:\Program Files\Metricbeat> .\metricbeat.exe modules enable system
- 設置初始環境:
deb and rpm:
sudo metricbeat setup -e
mac and linux:
./metricbeat setup -e
brew:
metricbeat setup -e
win:
PS C:\Program Files\Metricbeat> metricbeat.exe setup -e
setup命令將加載Kibana儀表板。如果已經設置了儀表板,請忽略此命令。 -e標志是可選的,并將輸出發送到標準錯誤而不是syslog
啟動Metricbeat:
deb and rpm:
sudo service metricbeat start
mac and linux:
./metricbeat -e
brew:
metricbeat -e
win:
PS C:\Program Files\Metricbeat> Start-Service metricbeat
Metricbeat運行并開始將系統指標發送到Elasticsearch。
Kibana可視化系統數據
打開瀏覽器,訪問Metricbeat系統儀表盤
??如果你在Kibana中看不到數據,試著把數據范圍擴大。默認,Kibana只展示最近15分鐘之內的數據;如果有錯誤,請確保metricbeat正常運行,并刷新頁面。
單擊Host Overview以查看有關所選主機的詳細指標
現在您已經知道如何為Elastic Stack設置最簡單的架構-一個或多個Beats將事件數據直接發送到運行在同一服務器上的Elasticsearch實例-讓我們添加Logstash。
安裝Logstash(可選)
Logstash是一個可以與多種部署交互的強大的工具。它提供大陸昂可選插件來幫你從各種數據源解析、擴展、轉換、緩存數據。如果你的數據要求其他Beats里無法處理的需求,你可以在部署中添加Logstash。
下載安裝Logstash,打開你的系統終端,用系統支持的命令:
deb:
Version 7.8.0 of Logstash has not yet been released.
rpm:
Version 7.8.0 of Logstash has not yet been released.
mac and linux:
Version 7.8.0 of Logstash has not yet been released.
brew:
Version 7.8.0 of Logstash has not yet been released.
win:
Version 7.8.0 of Logstash has not yet been released.
其他系統,參閱 Logstash download。
更多關于安裝、配置、運行Logstash,參閱Logstash Reference。
配置Logstash監聽Beats的輸入
Logstash提供輸入插件可以從不同的輸入源獲取數據。在本指南中,你將創建一個Logstash管道配置監聽Beats作為輸入源,并將接收到的事件作為輸出發送給Elasticssearch。
配置Logstash:
- 新建一個Logstash管道,命名配置文件為demo-metricss-pipeline.conf。如果你是通過deb或者rpm包安裝的Logstash,將這個文件創建在Logstash的config目錄下,這個文件需要包含:
- 輸入階段 :為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}"
}
}
當你啟動有這份管道配置文件的Logstash時,Beats的事件通過Logstash路由,通過Logstash我們有完全的控制權限來收集、擴展、轉換和傳輸數據。
啟動Logstash
使用系統支持的命令行。如果你通過deb或者rpm包安裝Logstash,確保配置文件在config目錄下。其他平臺,config目錄不是必須的,但是最好能保持一致。
deb:
sudo /etc/init.d/logstash start
rpm:
sudo service logstash start
mac and linux:
cd logstash-7.8.0
./bin/logstash -f path/to/config/demo-metrics-pipeline.conf
brew:
logstash -f path/to/config/demo-metrics-pipeline.conf
win:
bin\logstash.bat -f path\to\config\demo-metrics-pipeline.conf
??如果出現JVM錯誤信息,請確保java 版本是跟 Installing Logstash
中匹配的。
Logstash開始監聽來自Beats的事件作為輸入。接下來你需要配置Metricbeat來發送事件到Logstash。
配置Metricbeat發送事件到Logstash
Metricbeat默認發送事件到Elasticsearch。發送事件到Logstash,修改Metricbeat配置文件metricbeat.yml。你可以在Metricbeat安裝目錄下找到這份文件。rpm和deb在/etc/metricbeat,brew在/usr/local/etc/metricbeat.
注釋output.elasticsearch這段來停用,然后刪掉注釋output.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來應用修改的配置。
Logstash從Beats中讀取數據然后往Elasticsearch發送索引事件。到目前位置,你還沒有定義過濾器,所以Logstash只是簡單地將事件轉發到Elasticsearch而沒有做任何其他的處理。接下來,你將學習如何定義過濾器。
定義過濾器從指定字段中提取數據
Metricbeat收集的系統指標包括一個名為cmdline的字段,其中包含用于啟動系統進程的完整命令行參數。例如:
"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"
除了發送這個命令行參數到Elasticsearch之外, 你可能還想要發送命令行的路徑。有一個方法就是用Grok過濾器。學習Grok超出了入門指南的范圍,你可以在 Grok filter plugin文檔中學習更多有關內容。
抓取路徑,可以在Logstash配置的輸入輸出配置之間添加下面Grok過濾器:
filter {
if [system][process] {
if [system][process][cmdline] {
grok{
match => { 1.
"[system][process][cmdline]" => "^%{PATH:[system][process][cmdline_path]}"
}
remove_field => "[system][process][cmdline]" 2.
}
}
}
}
- 使用模式匹配路徑,然后存儲這些路徑到一個名為cmdline_path的域中
- 移除最初的域cmdline,這樣它就不會在Elasticsearch里被索引
至此,整個配置文件會是這樣的:
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來更新配置。現在事件引入了一個名為cmdline_path的域:
"cmdline_path": "/Applications/Firefox.app/Contents/MacOS/plugin-container.app/Contents/MacOS/plugin-container"
接下來是什么?
恭喜!你已經成功的配置好了Elastic Stack。你學到了如何將系統數據導入Elasticsearch,在Kibana中可視化數據。你要學習了如何使用Logstash過濾Metricbeat收集的數據。
接下來,你想要在Elastic Stack設置安全性,激活你的試用許可,這樣你可以激活Elastic Stack的所有功能。如何學習?
否想通過指標監視和集中式日志分析快速啟動并運行?在Kibana中試用Metrics應用程序和Logs應用程序。更多細節,參見Metrics Monitoring Guide 和 Logs Monitoring Guide.
隨后, 想要在生產環境中配置,參考 Elastic Stack Installation and Upgrade Guide。