![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iclZ3bj1CdyFGdz1Cdld2LctmZl9CXn1WavwVbvNmLldmbh12bhlGe6Z2Lc9CX6MHc0RHaiojIsJye.png)
通過部署elasticsearch(三節點)+filebeat+kibana快速入門EFK,并搭建起可用的demo環境測試效果
作者:“發颠的小狼”,歡迎轉載與投稿
目錄
▪ 用途
▪ 實驗架構
▪ EFK軟體安裝
▪ elasticsearch配置
▪ filebeat配置
▪ kibana配置
▪ 啟動服務
▪ kibana界面配置
▪ 測試
▪ 後續文章
用途
▷ 通過filebeat實時收集nginx通路日志、傳輸至elasticsearch叢集
▷ filebeat将收集的日志傳輸至elasticsearch叢集
▷ 通過kibana展示日志
實驗架構
▷ 伺服器配置
▷ 架構圖
EFK軟體安裝
版本說明
▷ elasticsearch 7.3.2
▷ filebeat 7.3.2
▷ kibana 7.3.2
注意事項
▷ 三個元件版本必須一緻
▷ elasticsearch必須3台以上且總數量為單數
安裝路徑
▷ /opt/elasticsearch
▷ /opt/filebeat
▷ /opt/kibana
elasticsearch安裝:3台es均執行相同的安裝步驟
mkdir -p /opt/software && cd /opt/software
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz
tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz
mv elasticsearch-7.3.2 /opt/elasticsearch
useradd elasticsearch -d /opt/elasticsearch -s /sbin/nologin
mkdir -p /opt/logs/elasticsearch
chown elasticsearch.elasticsearch /opt/elasticsearch -R
chown elasticsearch.elasticsearch /opt/logs/elasticsearch -R
# 限制一個程序可以擁有的VMA(虛拟記憶體區域)的數量要超過262144,不然elasticsearch會報max virtual memory areas vm.max_map_count [65535] is too low, increase to at least [262144]
echo "vm.max_map_count = 655350" >> /etc/sysctl.conf
sysctl -p
filebeat安裝
mkdir -p /opt/software && cd /opt/software
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.2-linux-x86_64.tar.gz
mkdir -p /opt/logs/filebeat/
tar -zxvf filebeat-7.3.2-linux-x86_64.tar.gz
mv filebeat-7.3.2-linux-x86_64 /opt/filebeat
kibana安裝
mkdir -p /opt/software && cd /opt/software
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.2-linux-x86_64.tar.gz
tar -zxvf kibana-7.3.2-linux-x86_64.tar.gz
mv kibana-7.3.2-linux-x86_64 /opt/kibana
useradd kibana -d /opt/kibana -s /sbin/nologin
chown kibana.kibana /opt/kibana -R
nginx安裝(用于生成日志,被filebeat收集)
# 隻在192.168.1.11安裝
yum install -y nginx
/usr/sbin/nginx -c /etc/nginx/nginx.conf
elasticsearch配置
▷ 192.168.1.31 /opt/elasticsearch/config/elasticsearch.yml
# 叢集名字
cluster.name: my-application
# 節點名字
node.name: 192.168.1.31
# 日志位置
path.logs: /opt/logs/elasticsearch
# 本節點通路IP
network.host: 192.168.1.31
# 本節點通路
http.port: 9200
# 節點運輸端口
transport.port: 9300
# 叢集中其他主機的清單
discovery.seed_hosts: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]
# 首次啟動全新的Elasticsearch叢集時,在第一次選舉中便對其票數進行計數的master節點的集合
cluster.initial_master_nodes: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]
# 啟用跨域資源共享
http.cors.enabled: true
http.cors.allow-origin: "*"
# 隻要有2台資料或主節點已加入叢集,就可以恢複
gateway.recover_after_nodes: 2
▷ 192.168.1.32 /opt/elasticsearch/config/elasticsearch.yml
# 叢集名字
cluster.name: my-application
# 節點名字
node.name: 192.168.1.32
# 日志位置
path.logs: /opt/logs/elasticsearch
# 本節點通路IP
network.host: 192.168.1.32
# 本節點通路
http.port: 9200
# 節點運輸端口
transport.port: 9300
# 叢集中其他主機的清單
discovery.seed_hosts: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]
# 首次啟動全新的Elasticsearch叢集時,在第一次選舉中便對其票數進行計數的master節點的集合
cluster.initial_master_nodes: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]
# 啟用跨域資源共享
http.cors.enabled: true
http.cors.allow-origin: "*"
# 隻要有2台資料或主節點已加入叢集,就可以恢複
gateway.recover_after_nodes: 2
▷ 192.168.1.33 /opt/elasticsearch/config/elasticsearch.yml
# 叢集名字
cluster.name: my-application
# 節點名字
node.name: 192.168.1.33
# 日志位置
path.logs: /opt/logs/elasticsearch
# 本節點通路IP
network.host: 192.168.1.33
# 本節點通路
http.port: 9200
# 節點運輸端口
transport.port: 9300
# 叢集中其他主機的清單
discovery.seed_hosts: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]
# 首次啟動全新的Elasticsearch叢集時,在第一次選舉中便對其票數進行計數的master節點的集合
cluster.initial_master_nodes: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]
# 啟用跨域資源共享
http.cors.enabled: true
http.cors.allow-origin: "*"
# 隻要有2台資料或主節點已加入叢集,就可以恢複
gateway.recover_after_nodes: 2
filebeat配置
192.168.1.11 /opt/filebeat/filebeat.yml
# 檔案輸入
filebeat.inputs:
# 檔案輸入類型
- type: log
# 開啟加載
enabled: true
# 檔案位置
paths:
- /var/log/nginx/access.log
# 自定義參數
fields:
type: nginx_access # 類型是nginx_access,和上面fields.type是一緻的
# 輸出至elasticsearch
output.elasticsearch:
# elasticsearch叢集
hosts: ["http://192.168.1.31:9200",
"http://192.168.1.32:9200",
"http://192.168.1.33:9200"]
# 索引配置
indices:
# 索引名
- index: "nginx_access_%{+yyy.MM}"
# 當類型是nginx_access時使用此索引
when.equals:
fields.type: "nginx_access"
# 關閉自帶模闆
setup.template.enabled: false
# 開啟日志記錄
logging.to_files: true
# 日志等級
logging.level: info
# 日志檔案
logging.files:
# 日志位置
path: /opt/logs/filebeat/
# 日志名字
name: filebeat
# 日志輪轉期限,必須要2~1024
keepfiles: 7
# 日志輪轉權限
permissions: 0600
kibana配置
192.168.1.21 /opt/kibana/config/kibana.yml
# 本節點通路端口
server.port: 5601
# 本節點IP
server.host: "192.168.1.21"
# 本節點名字
server.name: "192.168.1.21"
# elasticsearch叢集IP
elasticsearch.hosts: ["http://192.168.1.31:9200",
"http://192.168.1.32:9200",
"http://192.168.1.33:9200"]
啟動服務
# elasticsearch啟動(3台es均啟動)
sudo -u elasticsearch /opt/elasticsearch/bin/elasticsearch
# filebeat啟動
/opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml -d "publish"
# kibana啟動
sudo -u kibana /opt/kibana/bin/kibana -c /opt/kibana/config/kibana.yml
上面的啟動方法是位于前台運作。systemd配置方法,會在《EFK教程》系列後續文章中提供,敬請關注!
kibana界面配置
1️⃣ 使用浏覽器通路192.168.1.21:5601,看到以下界面表示啟動成功
2️⃣ 點"Try our sample data"
3️⃣ "Help us improve the Elastic Stack by providing usage statistics for basic features. We will not share this data outside of Elastic"點"no”
4️⃣ "Add Data to kibana"點"Add data"
5️⃣ 進入視圖
測試
通路nginx,生成日志
curl -I "http://192.168.1.11"
在kibana上檢視資料
1️⃣ 建立索引模闆
2️⃣ 輸入你要建立的索引模闆的名字
3️⃣ 檢視之前CURL的資料