@[TOC](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
基本介紹
- 什么是分布式日志
在分布式應(yīng)用中,日志被分散在儲存不同的設(shè)備上。如果你管理數(shù)十上百臺服務(wù)器,你還在使用依次登錄每臺機器的傳統(tǒng)方法查閱日志。這樣是不是感覺很繁瑣和效率低下亏镰。所以我們使用集中化的日志管理汉矿,分布式日志就是對大規(guī)模日志數(shù)據(jù)進行采集、追蹤、處理公荧。
- 為什么要使用分布式日志
一般我們需要進行日志分析場景:直接在日志文件中grep
、awk
就可以獲得自己想要的信息同规。但在規(guī)模較大的場景中循狰,此方法效率低下,面臨問題包括日志量太大如何歸檔券勺、文本搜索太慢怎么辦晤揣、如何多維度查詢。需要集中化的日志管理朱灿,所有服務(wù)器上的日志收集匯總。常見解決思路是建立集中式日志收集系統(tǒng)钠四,將所有節(jié)點上的日志統(tǒng)一收集盗扒,管理,訪問缀去。
- ELK 分布式日志
實際上ELK
是三款軟件的簡稱,分別是Elasticsearch
缕碎、 Logstash
褥影、Kibana
組成。
Elasticsearch 基于java
咏雌,是個開源分布式搜索引擎凡怎,它的特點有:分布式校焦,零配置,自動發(fā)現(xiàn)统倒,索引自動分片寨典,索引副本機制,restful
風(fēng)格接口房匆,多數(shù)據(jù)源耸成,自動搜索負載等。
Kibana 基于nodejs
浴鸿,也是一個開源和免費的工具井氢,Kibana
可以為Logstash
和ElasticSearch
提供的日志分析友好的Web 界面,可以匯總岳链、分析和搜索重要數(shù)據(jù)日志花竞。
Logstash 基于java
,是一個開源的用于收集,分析和存儲日志的工具宠页。
下面是ELK
的工作原理:
ElasticSearch
簡介
ElasticSearch是一個基于Lucene的搜索服務(wù)器左胞。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口举户。Elasticsearch是用Java開發(fā)的烤宙,并作為Apache許可條款下的開放源碼發(fā)布,是當前流行的企業(yè)級搜索引擎俭嘁。設(shè)計用于云計算中躺枕,能夠達到實時搜索,穩(wěn)定供填,可靠拐云,快速,安裝使用方便近她。
我們建立一個網(wǎng)站或應(yīng)用程序叉瘩,并要添加搜索功能,但是想要完成搜索工作的創(chuàng)建是非常困難的粘捎。我們希望搜索解決方案要運行速度快薇缅,我們希望能有一個零配置和一個完全免費的搜索模式,我們希望能夠簡單地使用JSON通過HTTP來索引數(shù)據(jù)攒磨,我們希望我們的搜索服務(wù)器始終可用泳桦,我們希望能夠從一臺開始并擴展到數(shù)百臺,我們要實時搜索娩缰,我們要簡單的多租戶灸撰,我們希望建立一個云的解決方案。因此我們利用Elasticsearch來解決所有這些問題及可能出現(xiàn)的更多其它問題。
ElasticSearch是Elastic Stack的核心浮毯,同時Elasticsearch 是一個分布式完疫、RESTful風(fēng)格的搜索和數(shù)據(jù)分析引擎,能夠解決不斷涌現(xiàn)出的各種用例亲轨。作為Elastic Stack的核心趋惨,它集中存儲您的數(shù)據(jù),幫助您發(fā)現(xiàn)意料之中以及意料之外的情況惦蚊。
下載
選擇需要的版本器虾,目前高版本的已經(jīng)需要JDK11支持
我本地和服務(wù)器上都是使用7.13 + JDK 1.8 , 試了7.15版本不支持
安裝
Windows
/elasticsearch
或者
bin/elasticsearch.bat
Linux
- 解壓到相應(yīng)目錄
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"]
- 創(chuàng)建
es
用戶 因為ElasticSearch
不支持Root
用戶直接操作,因此我們需要創(chuàng)建一個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))蹦锋,如果出現(xiàn)了下面的信息兆沙,就表示已經(jīng)成功啟動了
安全設(shè)置
修改配置文件
修改config目錄下面的elasticsearch.yml文件,在里面添加如下內(nèi)容,并重啟
關(guān)閉安全設(shè)置
xpack.security.enabled: false
開啟安全設(shè)置
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
設(shè)置用戶名和密碼
這里需要為4個用戶分別設(shè)置密碼莉掂,elastic, kibana, logstash_system,beats_system
elastic 賬號:擁有 superuser 角色葛圃,是內(nèi)置的超級用戶。
kibana 賬號:擁有 kibana_system 角色憎妙,用戶 kibana 用來連接 elasticsearch 并與之通信库正。Kibana 服務(wù)器以該用戶身份提交請求以訪問集群監(jiān)視 API 和 .kibana 索引。不能訪問 index厘唾。
logstash_system 賬號:擁有 logstash_system 角色褥符。用戶 Logstash 在 Elasticsearch 中存儲監(jiān)控信息時使用。
cmd 命令行進入ES安裝目錄抚垃,運行下面的命令行
這里在設(shè)置用戶名和密碼的時候都是隱式的設(shè)置喷楣,并非鍵盤有問題
bin/elasticsearch-setup-passwords interactive
修改用戶名和密碼
Linux服務(wù)器
-- 創(chuàng)建超級用戶 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是一個開源的服務(wù)器端數(shù)據(jù)處理管道曲伊,能夠同時從多個來源采集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù)追他,然后將數(shù)據(jù)發(fā)送到最喜歡的存儲庫中(我們的存儲庫當然是ElasticSearch)
下載
到官網(wǎng)下載: (https://www.elastic.co/cn/downloads/logstash (opens new window))
安裝
- 解壓到相應(yīng)目錄
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 是一款開源的數(shù)據(jù)分析和可視化平臺熊昌,它是 Elastic Stack 成員之一,設(shè)計用于和 Elasticsearch 協(xié)作湿酸。您可以使用 Kibana 對 Elasticsearch 索引中的數(shù)據(jù)進行搜索、查看灭美、交互操作推溃。您可以很方便的利用圖表、表格及地圖對數(shù)據(jù)進行多元化的分析和呈現(xiàn)届腐。
下載
需要和es 同一個版本
到官網(wǎng)下載: (https://www.elastic.co/cn/downloads/kibana (opens new window))
安裝
- 解壓到相應(yīng)目錄
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"
- 授權(quán)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))铁坎,如果出現(xiàn)了下面的信息蜂奸,就表示已經(jīng)成功啟動了
切換中文
在config/kibana.yml
添加
i18n.locale: "zh-CN"
日志收集
對應(yīng)服務(wù)器安裝logstash
,配置規(guī)則硬萍,例如新建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
可視化檢索各個服務(wù)日志數(shù)據(jù)
參考