一窗骑、環(huán)境
- 系統(tǒng)版本:Ubuntu
- jdk版本:openjdk11
- Elasticsearch 版本:8.8
- fluentd版本:1.14.3
- kibana版本:8.8.0
二智什、更新系統(tǒng)依賴源
sudo apt update
sudo apt upgrade -y
三榨乎、 jdk安裝配置
這里我們使用jdk11,當(dāng)然你要使用jdk8也是可以的负饲,不過堤魁,建議使用 JDK 11喂链,因?yàn)樗?Elasticsearch 7.x 的推薦版本。如果你已經(jīng)有 JDK 8姨涡,可以繼續(xù)使用衩藤,但注意可能會(huì)遇到一些兼容性問題。
wget https://download.java.net/java/GA/jdk11/openjdk-11_linux-x64_bin.tar.gz
jdk的配置這里就不展開講了涛漂,可以翻一下博主以往的筆記赏表,有詳細(xì)的配置記錄。
配置成功后 匈仗,版本信息:
四瓢剿、安裝 Elasticsearch
Elasticsearch下載地址:https://www.elastic.co/cn/downloads/elasticsearch
1. 下載 Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.0-linux-x86_64.tar.gz
2. 解壓 Elasticsearch:
tar -xzf elasticsearch-8.8.0-linux-x86_64.tar.gz
3. 配置 Elasticsearch 的配置文件,vi ./elasticsearch-8.8.0/config/elasticsearch.yml
# ======================== Elasticsearch Configuration =========================
# 集群名稱
cluster.name: my-application
# 節(jié)點(diǎn)名稱
node.name: node-1
# 日志存放地址
path.logs: /opt/EFK/elasticsearch-8.8.0/Logs
# 允許所有IP訪問
network.host: 0.0.0.0
# HTTP端口號(hào)
http.port: 9200
# 啟用跨域請(qǐng)求悠轩,允許從任何域名訪問Elasticsearch API
http.cors.enabled: true
http.cors.allow-origin: "*"
# 啟用X-Pack安全功能间狂,確保只有經(jīng)過身份驗(yàn)證的用戶才能訪問Elasticsearch集群
xpack.security.enabled: true
# 啟用安全注冊(cè)功能,允許新的節(jié)點(diǎn)以安全的方式加入到現(xiàn)有的Elasticsearch集群中
# 新節(jié)點(diǎn)會(huì)自動(dòng)獲取必要的證書和密鑰材料火架,確保通信的安全性
xpack.security.enrollment.enabled: true
# 啟用HTTP接口上的SSL/TLS加密鉴象,確保客戶端與Elasticsearch之間的所有通信都是加密的
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
# 啟用傳輸層的SSL/TLS加密何鸡,確保Elasticsearch節(jié)點(diǎn)之間以及客戶端與節(jié)點(diǎn)之間的內(nèi)部通信也是加密的
xpack.security.transport.ssl:
enabled: true
# 設(shè)置傳輸層SSL/TLS連接的驗(yàn)證模式纺弊,確保節(jié)點(diǎn)將驗(yàn)證其他節(jié)點(diǎn)提供的證書
verification_mode: certificate
# 指定用于傳輸層SSL/TLS連接的密鑰庫文件路徑
keystore.path: certs/transport.p12
# 指定用于傳輸層SSL/TLS連接的信任庫文件路徑,包含一組受信任的證書
truststore.path: certs/transport.p12
# 初始主節(jié)點(diǎn)列表骡男,指定哪些節(jié)點(diǎn)可以成為主節(jié)點(diǎn)
cluster.initial_master_nodes: ["node-1"]
4. 配置服務(wù)內(nèi)存占用
找到你的jvm.options文件:vi /opt/EFK/elasticsearch-8.8.0/config/jvm.options
打開文件淆游,找到 -Xms 和 -Xmx 設(shè)置,將它們都改為 1g:
這意味著分配給 Elasticsearch 的最小和最大內(nèi)存都是 1GB隔盛。
-Xms1g
-Xmx1g
5. 創(chuàng)建系統(tǒng)用于管理 elasticsearch 的用戶和組:
elasticsearch 不能使用root用戶直接啟動(dòng)犹菱。所以一定要配置普通用戶。
- (1) 創(chuàng)建一個(gè)名為 elasticsearch 的用戶組吮炕。
sudo groupadd elasticsearch
- (2) 創(chuàng)建一個(gè)名為 elasticsearch 的系統(tǒng)用戶腊脱,并將其加入到剛才創(chuàng)建的 elasticsearch 用戶組中。
-r 選項(xiàng)表示創(chuàng)建一個(gè)系統(tǒng)用戶龙亲,通常用于系統(tǒng)服務(wù)虑椎,通常這些用戶沒有登錄權(quán)限。
-g elasticsearch 指定新用戶所屬的用戶組為 elasticsearch俱笛。
sudo useradd -r -g elasticsearch elasticsearch
- (3) 將 /opt/elasticsearch 目錄及其所有子文件和目錄的所有者和用戶組更改為 elasticsearch。
sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch
6. 將 Elasticsearch 注冊(cè)到systemct传趾,vi /etc/systemd/system/elasticsearch.service
[Unit]
# 描述
Decription=Elasticsearch
# 穩(wěn)定地址
Documentation=http://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
# 表示該服務(wù)在網(wǎng)絡(luò)在線后啟動(dòng)
Wants=network-online.target
# 確保網(wǎng)絡(luò)已完全可用迎膜,再啟動(dòng) Elasticsearch。
After=network-online.target
[Service]
# 指定運(yùn)行該服務(wù)的用戶
User=elasticsearch
# 指定運(yùn)行該服務(wù)的用戶組浆兰。
Group=elasticsearch
# 這是啟動(dòng) Elasticsearch 的命令磕仅,指向?qū)嶋H的執(zhí)行文件路徑
ExecStart=/opt/EFK/elasticsearch-8.8.0/bin/elasticsearch
# 指定服務(wù)在失敗時(shí)會(huì)自動(dòng)重啟珊豹。
Restart=on-failure
# 用于控制服務(wù)可以鎖定的內(nèi)存大小
LimitMEMLOCK=infinity
[Install]
WantedBy=multi-user.target
7. 重啟systemctl 服務(wù)
sudo systemctl daemon-reload
sudo systemctl start elasticsearch
sudo systemctl stop elasticsearch
8. 查看是否成功啟動(dòng)
9. 創(chuàng)建 elasticsearch 賬戶密碼
cd /opt/EFK/elasticsearch-8.8.0/bin/
sudo ./elasticsearch-users useradd elastic -p abcd123 -r superuser
- useradd:
添加一個(gè)新用戶。 - elastic:
要添加的用戶的用戶名榕订。通常是 Elasticsearch 的內(nèi)置超級(jí)用戶店茶。 - -p abcd123:
參數(shù)用于指定用戶的密碼。 - -r superuser:
參數(shù)用于指定用戶的角色劫恒。角色設(shè)置為 superuser贩幻,這意味著該用戶擁有完全訪問權(quán)限,可以執(zhí)行所有操作两嘴。
如果密碼忘記了丛楚,可以重置成隨機(jī)密碼
sudo ./elasticsearch-reset-password -u elastic
回車后,輸入elastic 密碼
sudo ./bin/elasticsearch-reset-password -u elastic -i
10. 訪問:9200端口憔辫,到這里elasticsearch 就配置結(jié)束了
elasticsearch 地址:https://localhost:9200/_cluster/health?pretty
五趣些、Fluentd 安裝配置
1. 從 Fluentd 的官方網(wǎng)站或 GitHub 上下載。
wget https://github.com/fluent/fluentd/archive/v1.14.3.tar.gz
2. 解壓下載的文件
tar -zxvf fluentd-1.14.3
3. 安裝依賴
sudo apt update
sudo apt install -y ruby ruby-dev build-essential
sudo gem install bundler
4. 安裝 Fluentd
cd fluentd-1.14.3
sudo gem build fluentd.gemspec
sudo gem install fluentd-*.gem
5. 配置Fluentd 的可執(zhí)行環(huán)境
將 Fluentd 的可執(zhí)行文件路徑添加到用戶的環(huán)境變量 PATH 中
echo 'export PATH="$PATH:/opt/EFK/fluentd-1.14.3/bin"' >> ~/.bashrc
重新加載 .bashrc 文件贰您,使剛才添加的路徑立即生效
source ~/.bashrc
6. 驗(yàn)證安裝
fluentd --version
7. 配置 Fluentd 要監(jiān)控的日志文件
創(chuàng)建或編輯配置文件 fluent.conf坏平,通常放在 /etc/fluent 目錄下〗跻啵可以參考以下示例:
cd /opt/EFK/fluentd-1.14.3
mkdir config
cd ./config
touch fluent.conf
將一下內(nèi)容寫入至 fluent.conf 文件
<system>
# 記錄提示信息舶替、警告和錯(cuò)誤。
log_level info
# 日志文件存放路徑
log /opt/EFK/fluentd-1.14.3/logs/fluentd_service.log
</system>
<source>
@type tail
path /var/log/your_log.log
pos_file /var/log/your_log.log.pos
tag your_log
format none
</source>
<match your_log>
@type elasticsearch
host localhost
port 9200
logstash_format true
scheme https
ssl_verify false
# Elasticsearch的賬戶
user "elastic"
# Elasticsearch的密碼
password "Lq3FDhZ39E2GvnUr3Lw4"
</match>
-
<source> 配置:
- <source>:定義數(shù)據(jù)的來源孽亲。
- @type tail:指定數(shù)據(jù)來源的類型為 tail坎穿,即實(shí)時(shí)讀取文件的末尾數(shù)據(jù),類似于 tail -f 命令返劲。
- path /var/log/your_log.log:指定要監(jiān)控的日志文件的路徑玲昧。在這里,F(xiàn)luentd 會(huì)讀取這個(gè)文件的新內(nèi)容篮绿。
- pos_file /var/log/your_log.log.pos:指定一個(gè)位置文件孵延,用于記錄已讀取到文件的哪個(gè)位置。這樣亲配,當(dāng) Fluentd 重啟時(shí)尘应,可以從上次停止的地方繼續(xù)讀取文件。文件不存在會(huì)自動(dòng)創(chuàng)建吼虎,但不能不指定文件名犬钢。
- tag your_log:為讀取的數(shù)據(jù)設(shè)置一個(gè)標(biāo)簽,后續(xù)處理時(shí)可以使用這個(gè)標(biāo)簽來匹配數(shù)據(jù)思灰。
- format none:指定文件內(nèi)容的格式玷犹,這里設(shè)置為 none,表示 Fluentd 將直接讀取原始文本洒疚。
-
<match> 配置:
- <match your_log>:定義如何處理帶有 your_log 標(biāo)簽的數(shù)據(jù)歹颓。
- @type elasticsearch:指定數(shù)據(jù)的輸出類型為 elasticsearch坯屿,表示要將數(shù)據(jù)發(fā)送到 Elasticsearch。
- host localhost:指定 Elasticsearch 服務(wù)的主機(jī)名或 IP 地址巍扛,這里使用 localhost 表示 Elasticsearch 運(yùn)行在同一臺(tái)機(jī)器上领跛。
- port 9200:指定 Elasticsearch 服務(wù)的端口,9200 是 Elasticsearch 默認(rèn)的端口撤奸。
- logstash_format true:將數(shù)據(jù)格式化為 Logstash 格式吠昭,這樣可以確保與 Elasticsearch 的兼容性。
8. 安裝 Elasticsearch 插件:
sudo /opt/EFK/fluentd-1.14.3/bin/fluent-gem install fluent-plugin-elasticsearch
驗(yàn)證插件是否正確安裝:
/opt/EFK/fluentd-1.14.3/bin/fluent-gem list | grep elasticsearch
9. 創(chuàng)建服務(wù)文件:
創(chuàng)建服務(wù)文件:sudo tounch /etc/systemd/system/fluentd.service
編輯服務(wù)文件:sudo vi /etc/systemd/system/fluentd.service
[Unit]
Description=Fluentd
After=network.target
[Service]
User=ubuntu
Group=ubuntu
# 以指定配置文件啟動(dòng)fluentd
ExecStart=/opt/EFK/fluentd-1.14.3/bin/fluentd -c /opt/EFK/fluentd-1.14.3/config/fluent.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
重新加載 systemd 配置:sudo systemctl daemon-reload
啟動(dòng):sudo systemctl start fluentd
停止:sudo systemctl enable fluentd
狀態(tài):sudo systemctl status fluentd
10. 啟動(dòng) Fluentd
-o 將日志文件寫入指只當(dāng)路徑
fluentd -c /opt/EFK/fluentd-1.14.3/config/fluentd.conf -o /opt/EFK/fluentd-1.14.3/logs/fluentd_service.log
六寂呛、Kiban安裝
Kiban 官方文檔:https://www.elastic.co/guide/cn/kibana/current/access.html
1. 下載 Kiban :
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.8.0-linux-x86_64.tar.gz
2. 解壓
tar -xzf kibana-8.8.0-linux-x86_64.tar.gz
3.修改kibana_system用戶密碼
通過API的方式修改kibana_system用戶的密碼
kibana_system 賬戶是由Elasticsearch服務(wù)創(chuàng)建的怎诫,是Elasticsearch中的一個(gè)內(nèi)置用戶,專門用于Kibana與Elasticsearch之間的通信贷痪。
4. 配置Kibana:
vi /opt/EFK/kibana-8.8.0/config/kibana.yml
編輯kibana-8.8.0-linux-x86_64/config/kibana.yml幻妓,至少設(shè)置以下幾項(xiàng):
# kibana服務(wù)端口
server.port: 5601
# 0.0.0.0 表示允許所有請(qǐng)求訪問kibana
server.host: "0.0.0.0"
# elasticsearch 服務(wù)地址;如果elasticsearch 啟用了SSL/TLS協(xié)議劫拢,那么這里就要用https肉津。
elasticsearch.hosts: ["http://localhost:9200"]
# 當(dāng)elasticsearch 啟用了需要用戶名和密碼進(jìn)行身份驗(yàn)證情況下,那么需要配置
# 使用Elasticsearch中創(chuàng)建的kibana_system用戶舱沧。這個(gè)用戶是專門用于Kibana與Elasticsearch通信的妹沙。
elasticsearch.username: "kibana_system"
elasticsearch.password: "Lq3FDhZ39E2GvnUr3Lw4"
# 配置Kibana信任Elasticsearch的SSL證書;這通常是Elasticsearch的根證書熟吏。
elasticsearch.ssl.certificateAuthorities: ["/opt/EFK/elasticsearch-8.8.0/config/certs/http_ca.crt"]
# 設(shè)置SSL驗(yàn)證模式距糖,確保Kibana驗(yàn)證Elasticsearch的證書
elasticsearch.ssl.verificationMode: full
5. 啟動(dòng)
/opt/EFK/kibana-8.8.0/bin/kibana
6. 瀏覽器訪問
訪問地址:http://localhost:5601/login
-
可以用elastic 的超級(jí)用戶登錄
elastic 用戶作為超級(jí)用戶,擁有所有權(quán)限牵寺,包括登錄 Kibana 界面的權(quán)限悍引。這是因?yàn)?elastic 用戶是 Elasticsearch 的內(nèi)置超級(jí)用戶,具有最高的權(quán)限級(jí)別帽氓,可以執(zhí)行所有操作趣斤,包括管理 Kibana。
image.png
七 調(diào)試整個(gè)EFK堆棧
確保Elasticsearch正在運(yùn)行并且可以通過9200端口訪問黎休。
確認(rèn)Fluentd能夠正常讀取日志并將它們發(fā)送到Elasticsearch浓领。
如果您安裝了Kibana,請(qǐng)確保它能連接到Elasticsearch势腮,并且能夠看到由Fluentd發(fā)送的日志數(shù)據(jù)联贩。
安全性:考慮啟用Elasticsearch的安全特性,如SSL/TLS加密通信捎拯、基本認(rèn)證等撑蒜。
性能調(diào)優(yōu):根據(jù)實(shí)際負(fù)載調(diào)整Elasticsearch和Fluentd的資源配置,例如JVM堆大小、Fluentd的緩沖區(qū)大小等座菠。
日志輪轉(zhuǎn):配置日志文件的輪轉(zhuǎn)策略,避免單個(gè)日志文件過大影響性能藤树。