安裝部署elk7.10.0詳細教程
- 一、安裝jdk 11環境
- 二、安裝elasticsearch 7.10.0
- 三、安裝kibana 7.10.0
- 四、安裝logstash 7.10.0
- 五、安裝ik7.10.0分詞
- 六、開啟安全功能
- 1. 開啟用戶名密碼登錄
- 2. 開啟es安全加密通信
- 3. 開啟Kibana安全功能
- 七、注意事項和常見錯誤
- 八、其它操作及命令
【背景】
- 整個elk安裝是基于ubuntu 22.04和jdk 11環境。
- elk均在一臺測試機器上安裝,單節點服務。
- elk均采用 *.deb方式安裝,需要服務器能聯網。
- elk每個版本都要對應一致,避免沖突或者其它未知異常。
一、安裝jdk 11環境
如果需要卸載其它版本jdk,命令如下
sudo apt-get purge openjdk-17-jdk*
sudo apt-get purge openjdk-17-jre*
# 最后檢查下是否卸載完成
java -version
javac -version
開始安裝jdk 11 環境,命令如下
#1. 更新apt 軟件包倉庫緩存
sudo apt update
#2. 安裝 openjdk-11-jdk
sudo apt install -y openjdk-11-jdk
#3. 測試是否安裝成功
java -version
javac -version
二、安裝elasticsearch 7.10.0
- 安裝elasticsearch
# 1. 下載安裝包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-amd64.deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.0-amd64.deb.sha512# 2.安裝
shasum -a 512 -c elasticsearch-7.10.0-amd64.deb.sha512
# 輸出應顯示 elasticsearch-7.10.0-amd64.deb: OK 表示驗證成功
sudo dpkg -i elasticsearch-7.10.0-amd64.deb# 3. 查看安裝文件的權限,確保所有者都是elasticsearch,如果不是可以授權
sudo chown -R elasticsearch:elasticsearch /usr/share/elasticsearch
sudo chown -R elasticsearch:elasticsearch /var/lib/elasticsearch
sudo chown -R elasticsearch:elasticsearch /var/log/elasticsearch
sudo chown -R elasticsearch:elasticsearch /etc/elasticsearch
- 備份elasticsearch.yml配置文件
# 1.備份文件后修改elasticsearch.yml配置文件
sudo cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
sudo vim /etc/elasticsearch/elasticsearch.yml
- 修改elasticsearch.yml配置文件
# 設置集群名稱
cluster.name: myes
# 設置節點名稱
node.name: node-1
# 設置綁定地址(如果需要遠程訪問)
network.host: 0.0.0.0 # 注意:生產環境建議使用具體IP而非0.0.0.0
# 設置HTTP端口
http.port: 9200
# 發現設置(單節點配置)
discovery.type: single-node
- 啟動并測試驗證
es啟動需要用非root用戶啟動。
sudo systemctl daemon-reload #重新加載服務配置文件
sudo systemctl enable elasticsearch.service #開啟自啟動
sudo systemctl start elasticsearch.service #啟動
sudo systemctl stop elasticsearch.service #停止
sudo systemctl restart elasticsearch.service #重啟
sudo systemctl status elasticsearch.service #查看服務狀態
如下圖表示已經正常啟動服務了
6. 訪問驗證
如若需要可安裝curl命令:sudo apt install curl
服務器訪問:sudo curl http://localhost:9200
【注意】如果遠程訪問鏈接需要防火墻開發端口9200/9300,詳見命令如下:防火墻操作命令
以上基本安裝完成,后續可根據需要設置安全訪問配置。因es需要較高的系統資源如下配置6、7可根據需求修改。
- 修改配置文件 limits.conf、sysctl.conf,可根據需求修改
# 1. 編輯文件 limits.conf
sudo vim /etc/security/limits.conf
# 添加以下內容(設置 nofile 和 nproc 限制):
elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
elasticsearch soft nproc 4096
elasticsearch hard nproc 4096# 2. 編輯 sysctl.conf
sudo vim /etc/sysctl.conf
# 添加以下內容(調整虛擬內存和最大映射數):
vm.max_map_count=262144# 3. 使配置生效
sudo sysctl -p
- 修改jvm.options 文件,可根據需求修改
sudo vim /etc/elasticsearch/jvm.options
# 修改以下內容,7.10.0版本中默認1G,8.x版本默認更大
-Xms1g # 初始堆大小
-Xmx1g # 最大堆大小
- 修改完成后重啟驗證
重啟服務:sudo systemctl restart elasticsearch.service
查看狀態: sudo systemctl status elasticsearch.service
訪問鏈接:sudo curl http://localhost:9200
三、安裝kibana 7.10.0
- 下載并安裝文件
# 1. 下載安裝文件
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-amd64.deb
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.0-amd64.deb.sha512# 2. 安裝
shasum -a 512 -c kibana-7.10.0-amd64.deb.sha512
# 輸出應顯示 kibana-7.10.0-amd64.deb: OK
sudo dpkg -i kibana-7.10.0-amd64.deb
- 先備份后在修改kibana.yml文件
sudo cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak
sudo vim /etc/kibana/kibana.yml # 如下就是kibana.yml要修改的參數
# 設置服務器端口和地址
server.port: 5601
server.host: "0.0.0.0" # 允許遠程訪問,生產環境建議使用具體IP
# 設置 Elasticsearch 連接地址
elasticsearch.hosts: ["http://localhost:9200"] # 指向你的 ES 地址
# 中文漢化
i18n.locale: "zh-CN"# 可選:設置 Elasticsearch 用戶名和密碼(如果 ES 啟用了安全認證)
# elasticsearch.username: "kibana_system"
# elasticsearch.password: "your_password"
- 其它配置
# kibana默認1G內存,可根據實際情況修改
sudo vim /etc/default/kibana
NODE_OPTIONS="--max-old-space-size=512" # 調整為512MB
- 啟動服務驗證
sudo systemctl daemon-reload
sudo systemctl enable kibana.service
sudo systemctl start kibana.service
sudo systemctl resrart kibana.service
sudo systemctl status kibana.service
【注意】遠程訪問需要防火墻開放端口5601
以上基本安裝完成,根據需要設置安全認證和用戶名密碼。目前尚未開啟,所以配置文件也注釋了。
四、安裝logstash 7.10.0
因logstash文件篇幅較長單獨編寫【ubuntu 22.04 安裝部署logstash 7.10.0教程】
五、安裝ik7.10.0分詞
- 安裝ik分詞
# 安裝命令
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.10.0
- 檢測es插件文件權限
安裝完成后重新授權es的文件夾,如果elasticsearch的文件權限出現變動則重新授權,否則es啟動可能會失敗。
授權命令:sudo chown -R elasticsearch:elasticsearch /etc/elasticsearch/
- 重啟啟動es驗證es和ik分詞
sudo systemctl restart elasticsearch.service sudo systemctl status elasticsearch.service
如下是驗證ik分詞示意圖
如果有其它分詞需求,可以手動分詞處理
六、開啟安全功能
1. 開啟用戶名密碼登錄
- 首先在es中配置文件中添加如下配置,然后重啟服務
# 編輯配置文件
sudo vim /etc/elasticsearch/elasticsearch.yml
# 添加配置參數,開啟登錄
xpack.security.enabled: true
# 重啟服務
sudo systemctl restart elasticsearch
- 設置內置用戶密碼
# 系統內置用戶列舉如下
# apm_system, beats_system ,elastic ,kibana_system, logstash_system, remote_monitoring_user
# 設置用戶密碼命令
# 交互式設置-手動設置
sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
# 系統生成-自動設置(推薦生產環境)
sudo /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
-
驗證測試es用戶名密碼
驗證命令:sudo curl -u elastic:密碼 http://localhost:9200 -
配置kibana 使用內置用戶連接es服務
# 修改kibana配置
sudo vim /etc/kibana/kibana.yml
# 設置用戶名密碼
elasticsearch.username: "kibana_system"
elasticsearch.password: "your_password"
# 重啟kibana服務
sudo systemctl restart kibana.service
-
驗證訪問kibana頁面
訪問:http://ip:5601
用戶名密碼:elastic/密碼 -
隱藏式用戶名密碼登錄
大致理解為,如果不想將用戶名和密碼放入文件中,就將它們存儲在密鑰庫中,實際類似將用戶名密碼加密存儲到密鑰中,
在配置文件采用參數占位符的樣式。
# 操作命令,[--allow-root] 是因為直接執行出現警告報錯,需要允許root才能執行。有興趣的小伙伴可以去除該命令試試。
sudo /usr/share/kibana/bin/kibana-keystore create --allow-root
sudo /usr/share/kibana/bin/kibana-keystore add elasticsearch.username --allow-root
sudo /usr/share/kibana/bin/kibana-keystore add elasticsearch.password --allow-root# 查看存儲的秘鑰名稱
./bin/kibana-keystore list# 重新授權,文件權限變動可以不操作
sudo chown -R kibana:kibana /etc/kibana/# 添加以下配置到kibana.yml中,告訴 Kibana 從密鑰庫讀取憑證
elasticsearch.username: ${elasticsearch.username}
elasticsearch.password: ${elasticsearch.password}
2. 開啟es安全加密通信
開啟前訪問鏈接是 http://localhost:9200,開啟安全加密后是 https://localhost:9200。保證數據在傳輸過程中安全性。
#1. 生成證書
# 直接回車,不輸入密碼,證書生成后的位置:/usr/share/elasticsearch/
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil ca
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12#2. 將證書移位置并賦權
sudo mkdir /etc/elasticsearch/certs/
sudo mv /usr/share/elasticsearch/*.p12 /etc/elasticsearch/certs/
sudo chown -R elasticsearch:elasticsearch /etc/elasticsearch/certs/elastic*.p12#3. 配置證書路徑到配置文件中,如下是elasticsearch.yml配置項
# 開啟安全訪問(用戶名密碼)
xpack.security.enabled: true
# 開啟加密通信(集群節點之間)
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
# [certs/elastic-certificates.p12] 該路徑采用相對路徑,也可以使用絕對路徑
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12# HTTP 安全設置(https,外部客戶端與集群通信)
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.http.ssl.truststore.path: certs/elastic-certificates.p12#4. 驗證測試
sudo curl -k -u elastic:密碼 https://localhost:9200
# 或者頁面訪問:https://localhost:9200
3. 開啟Kibana安全功能
TODO - 待完善
#1. 將es的證書復制到kibana目錄然后授權
sudo mkdir /etc/kibana/certs
sudo cp /etc/elasticsearch/certs/elastic-* /etc/kibana/certs
sudo chown -R kibana:kibana /etc/kibana/certs#2. 修改kibana配置文件后重啟
# 連接Elasticsearch的URL(使用HTTPS)
elasticsearch.hosts: ["https://localhost:9200"]
# 信任ES證書
elasticsearch.ssl.certificateAuthorities: ["/etc/kibana/certs/elastic-stack-ca.p12"]
elasticsearch.ssl.verificationMode: certificate #3. 驗證測試
#頁面訪問:http://ip:5601
七、注意事項和常見錯誤
- es中 常見的是文件授權問題,對elasticsearch沒有賦權,如下授權
- 查看日志地址: sudo tail -100f /var/log/logstash/logstash-plain.log
- 路徑或文件授權: sudo chown -R elasticsearch:logstash /etc/elasticsearch/
八、其它操作及命令
- 用戶登錄操作命令
#== 將edy用戶加入到elasticsearch組
sudo usermod -aG elasticsearch edy#== ubuntu修改root用戶登錄,將如下配置項修改為yes,再重啟ssh
# 編輯
sudo vim /etc/ssh/sshd_config
# 修改配置項
PermitRootLogin yes
# 重啟
systemctl restart ssh
- 卸載jdk其它版本
#== 卸載jdk其它版本
sudo apt-get purge openjdk-17-jdk*
sudo apt-get purge openjdk-17-jre*
#運行測試:java -version
- 查詢日志排錯命令
#== 查詢日志方便排錯
sudo journalctl -u elasticsearch -f
sudo journalctl -u kibana -f
sudo journalctl -u logstash -f
- 卸載logstash操作命令
#== 卸載 通過deb安裝的logstash
#先停止:
sudo systemctl stop logstash
#=apt安裝卸載:sudo apt remove --purge logstash(忽略)
#=deb安裝的卸載:
sudo dpkg -r logstash
sudo dpkg --purge logstash
#=手動刪除文件保證卸載干凈
sudo rm -rf /etc/logstash /var/lib/logstash /var/log/logstash /usr/share/logstash
#= 手動再次刪除用戶和組
sudo deluser logstash
sudo delgroup logstash
sudo apt autoremove
#=驗證是否卸載完成
dpkg -l | grep logstash
ls -l /etc/logstash
- 防火墻操作命令
# 查看狀態
sudo ufw status
# 啟用防火墻
sudo ufw enable
# 開發單個端口,如開啟端口22
sudo ufw allow 22/tcp
# 或直接使用服務名稱(如 ssh、http、https)
sudo ufw allow ssh
# 開放端口范圍(如 6000-6007)
sudo ufw allow 6000:6007/tcp
# 允許特定ip訪問
sudo ufw allow from 192.168.1.100 to any port 22
# 通過端口刪除規則
sudo ufw delete allow 22
# 重置防火墻