環境需要
- Elasticsearch需要JAVA環境,至少是JDK1.8
- elasticsearch 不允許root使用者使用,需要新增個elk使用者
- 如果覺得官網下載太慢,可以使用這個
https://pan.baidu.com/s/1LndFYnnZQwFx2-MlDZXdaQ
提取碼:7qnk
Elasticsearch
下載及安裝
- 如果網路狀況好,可以考慮線上安裝,比較省事
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.6.2-linux-x86_64.tar.gz.sha512 #校驗
#校驗的正常輸出為 elasticsearch-{version}-linux-x86_64.tar.gz: OK
tar -xzf elasticsearch-7.6.2-linux-x86_64.tar.gz
cd elasticsearch-7.6.2/
-
或者下載離線包,然後手動上傳到伺服器去解壓。Elasticsearch官網下載地址
找到 Install Elasticsearch from archive on Linux or MacOS ,點進去就自動下載了。 -
或者參考這篇文章的安裝方式 快速搭建ELK日誌分析系統
注意!我這裡使用的版本是7.6.2,ELK三個軟體的版本需要保持一致才可以。
配置檔案
cluster.name: demo
node.name: node-1
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
cluster.initial_master_nodes: ["node-1"]
注意!配置檔案中的path.logs和path.data這倆資料夾都要把許可權賦給elk使用者!不然執行時就會報錯。
chown -R elk.elk 資料夾路徑
執行測試
在elasticsearch的根目錄
#執行elasticsearch:
bin/elasticsearch &
#檢查埠
netstat -antp |grep 9200
#測試介面訪問
curl http://127.0.0.1:9200/
#返回結果如下則表示執行成功:
{
"name" : "node-1",
"cluster_name" : "demo",
"cluster_uuid" : "PLIR2GguShK5RtDlE7xFeQ",
"version" : {
"number" : "7.6.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
"build_date" : "2020-03-26T06:34:37.794943Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
ElasticsearchAPI
Elasticsearch提供了API來方便使用者使用,具體可以參考這篇 Elasticsearch 快速開始
下面是兩個常用的API,用來檢視logstash是否成功將訊息傳入了Elasticsearch
1. 檢視全部索引
curl -X GET "localhost:9200/_cat/indices?v"
2. 檢視某個索引中的所有文件
curl -X GET "http://localhost:9200/索引名稱/_search?q=*&pretty"
外掛(可選項)
安裝elasticsearch-head外掛
- 使用docker安裝,省時省力
docker run -p 9100:9100 mobz/elasticsearch-head:5
- 或使用git安裝
yum install -y npm
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
- 測試訪問
netstat -antp |grep 9100 #檢視埠執行情況
在瀏覽器上訪問 http://IP:9100/ 檢視是否成功啟動
Logstash
下載
官方網站中提供了tar.gz安裝包和線上下載,自行選擇。 官方下載地址
往下翻還有安裝配置指引,講真還是蠻細心的。
測試
bin/logstash -e 'input { stdin { } } output { stdout {} }'
成功執行的話,應當是你輸入什麼,他就給你返回什麼,而且是帶有time和host的格式化輸出
配置
新建個配置檔案,比如elk.conf,如下輸入並儲存
input { stdin { } }
output {
elasticsearch { hosts => ["elasticsearch服務的IP:9200"] }
stdout { codec => rubydebug }
}
執行
通過剛才新建的配置檔案來啟動logstash
logstash -f ./elk.conf
這時,你輸入進去的資訊,就會被髮往兩個地方,一個是發給elasticsearch,另一個是由標準輸出顯示出去。
最好也是用elk這個使用者來執行,報錯的話注意看是否是沒有寫許可權。我用elk使用者執行Elasticsearch之後,再用root使用者執行Logstash時,發現無法查詢到輸入的資訊。
Kibana
下載
配置
解壓之後,開始配置Logstash
編輯kibana的配置檔案
vim kibana/config/kibana.yml
修改配置檔案如下,開啟以下的配置
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.1.202:9200"
kibana.index: ".kibana"
#設定為中文
i18n.locale: "zh-CN"
執行
#這裡仍是使用elk使用者執行
bin/kibana
執行成功後,kibana會自動去按照配置中的路徑去連線Elasticsearch,如果沒連線上,他會有提示並且一直重複嘗試連線。
測試與使用
在瀏覽器中輸入地址:http://IP:5601就可以啦!不過第一次進入可能會很慢。
然後就是去連線Elasticsearch中的Logstash索引。
下面會列出來Elasticsearch 中可用的索引,選擇logstash,下一步,配置時間索引,點選完成就OK啦。
然後左側選單欄的第二個按鈕,進入Discover頁面,選擇logstash索引,此時可能會發現,哎?怎麼沒資料,那就請注意你的右上角時間篩選是否預設為最近十五分鐘了,更改時間篩選條件後再次查詢,就可以順利查到你剛才在logstash裡面傳進去的訊息啦!
至此,基礎的搭建工作告一段落。當我看到我在logstash命令列中傳入的那些資料真的可以在Kibana的頁面中顯示出來的時候,真的是滿滿的成就感,就像搭積木一樣的把這三個工具拼接到了一起,很開心。
但是之後才是真正學習的開始,下一步是讓logstash從日誌檔案中實時讀取資訊傳入Elasticsearch 中,還要去學習如何更好的使用這三個軟體,任重道遠。
報錯解決
max virtual memory areas vm.max_map_count is too low
參考此處 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
elasticsearch程式莫名其妙關閉了?
記憶體佔用過大,系統會oom kill掉佔用最大記憶體的程式(沒辦法,測試用的雲伺服器是最低的配置)。
關掉oom kill(不推薦在生產環境使用):
vm.panic_on_oom = 1 //1表示關閉,預設為0表示開啟OOM
sysctl -p
最後
參考文章:
- 【主要參考】快速搭建ELK日誌分析系統
- 【官方文件】Install Elasticsearch from archive on Linux or MacOS
- 【官方文件】Configuring Logstash
- ELK 快速指南
- ELK快速搭建教程
- 【這一篇極其詳細,推薦閱讀】ELK實時日誌分析平臺環境部署--完整記錄
- 【Elasticsearch的API參考】 Elasticsearch 快速開始