Elasticsearch之分散式日誌ELK Stack
@
目錄Elasticsearch之分散式日誌ELK Stack:https://blog.csdn.net/weixin_42526326/article/details/121302809
Elasticsearch官方使用者手冊:https://www.elastic.co/guide/en/elasticsearch/reference/7.15/index.html
Kibana官方使用者手冊:https://www.elastic.co/guide/cn/kibana/current/index.html
基本介紹
- 什麼是分散式日誌
在分散式應用中,日誌被分散在儲存不同的裝置上。如果你管理數十上百臺伺服器,你還在使用依次登入每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。所以我們使用集中化的日誌管理,分散式日誌就是對大規模日誌資料進行採集、追蹤、處理。
- 為什麼要使用分散式日誌
一般我們需要進行日誌分析場景:直接在日誌檔案中grep
、awk
就可以獲得自己想要的資訊。但在規模較大的場景中,此方法效率低下,面臨問題包括日誌量太大如何歸檔、文字搜尋太慢怎麼辦、如何多維度查詢。需要集中化的日誌管理,所有伺服器上的日誌收集彙總。常見解決思路是建立集中式日誌收集系統,將所有節點上的日誌統一收集,管理,訪問。
- ELK 分散式日誌
實際上ELK
是三款軟體的簡稱,分別是Elasticsearch
、 Logstash
、Kibana
組成。
Elasticsearch 基於java
,是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful
風格介面,多資料來源,自動搜尋負載等。
Kibana 基於nodejs
,也是一個開源和免費的工具,Kibana
可以為Logstash
和ElasticSearch
提供的日誌分析友好的Web 介面,可以彙總、分析和搜尋重要資料日誌。
Logstash 基於java
,是一個開源的用於收集,分析和儲存日誌的工具。
下面是ELK
的工作原理:
ElasticSearch
簡介
ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。
我們建立一個網站或應用程式,並要新增搜尋功能,但是想要完成搜尋工作的建立是非常困難的。我們希望搜尋解決方案要執行速度快,我們希望能有一個零配置和一個完全免費的搜尋模式,我們希望能夠簡單地使用JSON通過HTTP來索引資料,我們希望我們的搜尋伺服器始終可用,我們希望能夠從一臺開始並擴充套件到數百臺,我們要實時搜尋,我們要簡單的多租戶,我們希望建立一個雲的解決方案。因此我們利用Elasticsearch來解決所有這些問題及可能出現的更多其它問題。
ElasticSearch是Elastic Stack的核心,同時Elasticsearch 是一個分散式、RESTful風格的搜尋和資料分析引擎,能夠解決不斷湧現出的各種用例。作為Elastic Stack的核心,它集中儲存您的資料,幫助您發現意料之中以及意料之外的情況。
下載
選擇需要的版本,目前高版本的已經需要JDK11支援
我本地和伺服器上都是使用7.13 + JDK 1.8 , 試了7.15版本不支援
安裝
Windows
/elasticsearch
或者
bin/elasticsearch.bat
Linux
- 解壓到相應目錄
tar -zxvf elasticsearch-7.10.2-linux-x86_64.tar.gz -C /usr/local
- 修改配置
cd /usr/local/elasticsearch-7.10.2/config/
vim elasticsearch.yml
node.name: node-1
path.data: /usr/local/elasticsearch-7.10.2/data
path.logs: /usr/local/elasticsearch-7.10.2/logs
network.host: 127.0.0.1
http.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]
- 建立
es
使用者 因為ElasticSearch
不支援Root
使用者直接操作,因此我們需要建立一個es
使用者
useradd es
chown -R es:es /usr/local/elasticsearch-7.10.2
啟動
- 切換使用者成es使用者進行操作
su - es
/usr/local/elasticsearch-7.10.2/bin/elasticsearch
- 後臺啟動
/usr/local/elasticsearch-7.10.2/bin/elasticsearch -d
在瀏覽器開啟9200
埠地址: (http://120.78.129.95:9200/ (opens new window)),如果出現了下面的資訊,就表示已經成功啟動了
安全設定
修改配置檔案
修改config目錄下面的elasticsearch.yml檔案,在裡面新增如下內容,並重啟
關閉安全設定
xpack.security.enabled: false
開啟安全設定
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
設定使用者名稱和密碼
這裡需要為4個使用者分別設定密碼,elastic, kibana, logstash_system,beats_system
elastic 賬號:擁有 superuser 角色,是內建的超級使用者。
kibana 賬號:擁有 kibana_system 角色,使用者 kibana 用來連線 elasticsearch 並與之通訊。Kibana 伺服器以該使用者身份提交請求以訪問叢集監視 API 和 .kibana 索引。不能訪問 index。
logstash_system 賬號:擁有 logstash_system 角色。使用者 Logstash 在 Elasticsearch 中儲存監控資訊時使用。
cmd 命令列進入ES安裝目錄,執行下面的命令列
這裡在設定使用者名稱和密碼的時候都是隱式的設定,並非鍵盤有問題
bin/elasticsearch-setup-passwords interactive
修改使用者名稱和密碼
Linux伺服器
-- 建立超級使用者 TestSuper
elasticsearch-users useradd TestSuper -r superuser
-- 通過介面更改密碼
curl -H "Content-Type:application/json" -XPOST -u elastic:now_password 'http://10.10.17.19:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'
windows
重灌大法
未完成,已崩潰,重啟中。。。
Logstash
簡介
Logstash是一個開源的伺服器端資料處理管道,能夠同時從多個來源採集資料,轉換資料,然後將資料傳送到最喜歡的儲存庫中(我們的儲存庫當然是ElasticSearch)
下載
到官網下載: (https://www.elastic.co/cn/downloads/logstash (opens new window))
安裝
- 解壓到相應目錄
tar -zxvf logstash-7.10.2.tar.gz -C /usr/local
- 新增配置檔案
cd /usr/local/logstash-7.10.2/bin
vim logstash-elasticsearch.conf
input {
stdin {}
}
output {
elasticsearch {
hosts => '120.78.129.95:9200'
}
stdout {
codec => rubydebug
}
}
啟動
./logstash -f logstash-elasticsearch.conf
Kibana
簡介
Kibana 是一款開源的資料分析和視覺化平臺,它是 Elastic Stack 成員之一,設計用於和 Elasticsearch 協作。您可以使用 Kibana 對 Elasticsearch 索引中的資料進行搜尋、檢視、互動操作。您可以很方便的利用圖表、表格及地圖對資料進行多元化的分析和呈現。
下載
需要和es 同一個版本
到官網下載: (https://www.elastic.co/cn/downloads/kibana (opens new window))
安裝
- 解壓到相應目錄
tar -zxvf kibana-7.10.2-linux-x86_64.tar.gz -C /usr/local
mv /usr/local/kibana-7.10.2-linux-x86_64 /usr/local/kibana-7.10.2
- 修改配置
cd /usr/local/kibana-7.10.2/config
vim kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://120.78.129.95:9200"]
kibana.index: ".kibana"
- 授權es使用者
chown -R es:es /usr/local/kibana-7.10.2/
啟動
- 切換使用者成es使用者進行操作
su - es
/usr/local/kibana-7.10.2/bin/kibana
- 後臺啟動
/usr/local/kibana-7.10.2/bin/kibana &
在瀏覽器開啟5601
埠地址: (http://120.78.129.95:5601/ (opens new window)),如果出現了下面的資訊,就表示已經成功啟動了
切換中文
在config/kibana.yml
新增
i18n.locale: "zh-CN"
日誌收集
對應伺服器安裝logstash
,配置規則,例如新建logstash-apache.conf
input {
file {
path => "/home/ruoyi/logs/sys-*.log"
start_position => beginning
sincedb_path => "/dev/null"
codec => multiline {
pattern => "^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}"
negate => true
auto_flush_interval => 3
what => previous
}
}
}
filter {
if [path] =~ "info" {
mutate { replace => { type => "sys-info" } }
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
} else if [path] =~ "error" {
mutate { replace => { type => "sys-error" } }
} else {
mutate { replace => { type => "random_logs" } }
}
}
output {
elasticsearch {
hosts => '120.78.129.95:9200'
}
stdout { codec => rubydebug }
}
- 啟動logstash
./logstash -f logstash-apache.conf
- 通過
kibana
視覺化檢索各個服務日誌資料
參考