1. 程式人生 > >EFK教程 - EFK快速入門指南

EFK教程 - EFK快速入門指南

通過部署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的資料


後續文章

本文是《EFK教程》系列文章的第一篇,後續EFK文章將逐步釋出,包含角色分離、效能優化等許多幹貨,敬請關注