目錄
? 用途
? 實驗架構(gòu)
? EFK軟件安裝
? elasticsearch配置
? filebeat配置
? kibana配置
? 啟動服務(wù)
? kibana界面配置
? 測試
? 后續(xù)文章
用途
? 通過filebeat實時收集nginx訪問日志、傳輸至elasticsearch集群
? filebeat將收集的日志傳輸至elasticsearch集群
? 通過kibana展示日志
實驗架構(gòu)
? 服務(wù)器配置
? 架構(gòu)圖
EFK軟件安裝
版本說明
? elasticsearch 7.3.2
? filebeat 7.3.2
? kibana 7.3.2
注意事項
? 三個組件版本必須一致
? elasticsearch必須3臺以上且總數(shù)量為單數(shù)
安裝路徑
? /opt/elasticsearch
? /opt/filebeat
? /opt/kibana
elasticsearch安裝:3臺es均執(zhí)行相同的安裝步驟
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(虛擬內(nèi)存區(qū)域)的數(shù)量要超過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
# 節(jié)點名字
node.name: 192.168.1.31
# 日志位置
path.logs: /opt/logs/elasticsearch
# 本節(jié)點訪問IP
network.host: 192.168.1.31
# 本節(jié)點訪問
http.port: 9200
# 節(jié)點運輸端口
transport.port: 9300
# 集群中其他主機的列表
discovery.seed_hosts: [192.168.1.31, 192.168.1.32, 192.168.1.33]
# 首次啟動全新的Elasticsearch集群時,在第一次選舉中便對其票數(shù)進行計數(shù)的master節(jié)點的集合
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臺數(shù)據(jù)或主節(jié)點已加入集群,就可以恢復(fù)
gateway.recover_after_nodes: 2
? 192.168.1.32 /opt/elasticsearch/config/elasticsearch.yml
# 集群名字
cluster.name: my-application
# 節(jié)點名字
node.name: 192.168.1.32
# 日志位置
path.logs: /opt/logs/elasticsearch
# 本節(jié)點訪問IP
network.host: 192.168.1.32
# 本節(jié)點訪問
http.port: 9200
# 節(jié)點運輸端口
transport.port: 9300
# 集群中其他主機的列表
discovery.seed_hosts: [192.168.1.31, 192.168.1.32, 192.168.1.33]
# 首次啟動全新的Elasticsearch集群時,在第一次選舉中便對其票數(shù)進行計數(shù)的master節(jié)點的集合
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臺數(shù)據(jù)或主節(jié)點已加入集群,就可以恢復(fù)
gateway.recover_after_nodes: 2
? 192.168.1.33 /opt/elasticsearch/config/elasticsearch.yml
# 集群名字
cluster.name: my-application
# 節(jié)點名字
node.name: 192.168.1.33
# 日志位置
path.logs: /opt/logs/elasticsearch
# 本節(jié)點訪問IP
network.host: 192.168.1.33
# 本節(jié)點訪問
http.port: 9200
# 節(jié)點運輸端口
transport.port: 9300
# 集群中其他主機的列表
discovery.seed_hosts: [192.168.1.31, 192.168.1.32, 192.168.1.33]
# 首次啟動全新的Elasticsearch集群時,在第一次選舉中便對其票數(shù)進行計數(shù)的master節(jié)點的集合
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臺數(shù)據(jù)或主節(jié)點已加入集群,就可以恢復(fù)
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
# 自定義參數(shù)
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
# 關(guān)閉自帶模板
setup.template.enabled: false
# 開啟日志記錄
logging.to_files: true
# 日志等級
logging.level: info
# 日志文件
logging.files:
# 日志位置
path: /opt/logs/filebeat/
# 日志名字
name: filebeat
# 日志輪轉(zhuǎn)期限,必須要2~1024
keepfiles: 7
# 日志輪轉(zhuǎn)權(quán)限
permissions: 0600
kibana配置
192.168.1.21 /opt/kibana/config/kibana.yml
# 本節(jié)點訪問端口
server.port: 5601
# 本節(jié)點IP
server.host: 192.168.1.21
# 本節(jié)點名字
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]
啟動服務(wù)
# 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教程》系列后續(xù)文章中提供,敬請關(guān)注!
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上查看數(shù)據(jù)
1 創(chuàng)建索引模板
2 輸入你要創(chuàng)建的索引模板的名字
3 查看之前CURL的數(shù)據(jù)
后續(xù)文章
本文是《EFK教程》系列文章的第一篇,后續(xù)EFK文章將逐步發(fā)布,包含角色分離、性能優(yōu)化等許多干貨,敬請關(guān)注!
更多關(guān)于云服務(wù)器,域名注冊,虛擬主機的問題,請訪問西部數(shù)碼官網(wǎng):www.ps-sw.cn