filebate收集日誌到es中

日誌系統

場景

  • 一般常見我們需要進行日誌分析場景是:直接在日誌文件中grep、awk就可以獲得自己想要的信息。但在規模較大的場景中,此方法效率低下,面臨問題包括日誌量太大如何歸檔、文本搜索太慢怎麼辦、如何多維度查詢。需要集中化的日誌管理,所有服務器上的日誌收集彙總。常見解決思路是建立集中式日誌收集系統,將所有節點上的日誌統一收集,管理,訪問。
  • 大型系統是一個分佈式部署的架構,不同的服務模塊部署在不同的服務器上,問題出現時,大部分情況需要根據問題暴露的關鍵信息,定位到具體的服務器和服務模塊,構建一套集中式日誌系統,可以提高定位問題的效率。
  • 對大量的日誌業務數據進行分析,如平臺PV、UV、IP、PageTOP等維度進行分析查詢等。另外安全審計、數據挖掘、行爲分析等都少不了日誌對其作爲支撐。

作用

  • 信息查找:通過檢索日誌信息,定位相應的bug,找出解決方案。
  • 服務診斷:通過對日誌信息進行統計、分析,瞭解服務器的負荷和服務運行狀態,找出耗時請求進行優化等等。
  • 數據分析:如果是格式化的log,可以做進一步的數據分析,統計、聚合出有意義的信息,比如根據請求中的商品id,找出TOP10用戶感興趣商品

架構

日誌系統三個基本組件:

  • 採集端:agent(採集日誌源數據,封裝數據源,將數據源中的數據發送給collector)
  • 聚合端:collector(按一定規則進行數據處理、接收多個agent的數據,並進行彙總後導入後端的store中)
  • 存儲端:store(日誌存儲系統,應該具有可擴 展性和可靠性,如HDFS ES等)

常見方案

ELF/EFK

在這裏插入圖片描述

graylog

在這裏插入圖片描述

流式分析

在這裏插入圖片描述

ELK方案

在這裏插入圖片描述

組件

  • Elasticsearch日誌存儲和搜索引擎,它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其存儲供以後使用(支持動態的從各種數據源蒐集數據,並對數據進行過濾、分析、豐富、統一格式等操作。)。
  • Kibana 也是一個開源和免費的工具,Kibana可以爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助您彙總、分析和搜索重要數據日誌。
  • Filebeat:和Logstash一樣屬於日誌收集處理工具,基於原先 Logstash-fowarder 的源碼改造出來的。與Logstash相比,filebeat更加輕量,佔用資源更少

流程

在這裏插入圖片描述

應用程序(AppServer)–>Logstash–>ElasticSearch–>Kibana–>瀏覽器(Browser)
Logstash收集AppServer產生的Log,並存放到ElasticSearch集羣中,而Kibana則從ElasticSearch集羣中查詢數據生成圖表,再返回給Browser。
考慮到聚合端(日誌處理、清洗等)負載問題和採集端傳輸效率,一般在日誌量比較大的時候在採集端和聚合端增加隊列,以用來實現日誌消峯。

ELK日誌流程可以有多種方案(不同組件可自由組合,根據自身業務配置),常見有以下:

  • Logstash(採集、處理)—> ElasticSearch (存儲)—>Kibana (展示)
  • Logstash(採集)—> Logstash(聚合、處理)—> ElasticSearch (存儲)—>Kibana (展示)
  • Filebeat(採集、處理)—> ElasticSearch (存儲)—>Kibana (展示)
  • Filebeat(採集)—> Logstash(聚合、處理)—> ElasticSearch (存儲)—>Kibana (展示)
  • Filebeat(採集)—> Kafka/Redis(消峯) —> Logstash(聚合、處理)—> ElasticSearch (存儲)—>Kibana (展示)

部署

服務器整體規劃

主機 角色
主機1 elasticsearch
主機2 kibana、zookeeper、kafka
主機3 logstash
主機4 nginx、filebeat

jdk配置

[root@localhost ~]# tar -zxf jdk-8u201-linux-x64.tar.gz -C /usr/local/
[root@localhost ~]# ls /usr/local/
bin  etc  games  include  jdk1.8.0_201  lib  lib64  libexec  sbin  share  src
[root@localhost ~]# vim /etc/profile  末尾追加內容
export JAVA_HOME=/usr/local/jdk1.8.0_201
export JRE_HOME=/usr/local/jdk1.8.0_201/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

elasticsearch部署

[root@localhost ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz
[root@localhost ~]# tar -zxf elasticsearch-6.3.2.tar.gz -C /usr/local/
[root@localhost ~]# ln -s /usr/local/elasticsearch-6.3.2/ /usr/local/es
[root@localhost ~]# chown -R es:es /usr/local/es/
mkdir -p /es/{data,log}
groupadd es
useradd es -g es -p es
chown -R es:es /es/data
chown -R es:es /es/log

修改系統參數

echo '* soft nofile 819200' >> /etc/security/limits.conf
echo '* hard nofile 819200' >> /etc/security/limits.conf
echo '* soft nproc 2048' >> /etc/security/limits.conf
echo '* hard nproc 4096' >> /etc/security/limits.conf
echo '* soft memlock unlimited' >> /etc/security/limits.conf
echo '* hard memlock unlimited' >> /etc/security/limits.conf
echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
sysctl -p
es參數設置
vim /usr/local/es/config/elasticsearch.yml 
cluster.name: bdqn
node.name: es
node.master: true
node.data: true
path.data: /es/data
path.logs: /es/log
network.host: 0.0.0.0
http.port: 9200
discovery.zen.minimum_master_nodes: 1
bootstrap.memory_lock: false
bootstrap.system_call_filter: false #這兩行寫在一起

配置文件中,除了上邊的修改項,其他的均爲註釋項。最後一項如果爲true,則限制es的某些系統調用,可能會導致es啓動失敗

seccomp(全稱securecomputing mode)是linuxkernel從2.6.23版本開始所支持的一種安全機制。在Linux系統裏,大量的系統調用(systemcall)直接暴露給用戶態程序。但是,並不是所有的系統調用都被需要,而且不安全的代碼濫用系統調用會對系統造成安全威脅。通過seccomp,我們限制程序使用某些系統調用,這樣可以減少系統的暴露面,同時是程序進入一種“安全”的狀態。

#根據機器配置,合理修改jvm參數

vim /usr/local/es/config/jvm.options 
-Xms1g
-Xmx1g
es控制
[root@es1 ~]# su es
[es@es1 root]$ /usr/local/es/bin/elasticsearch -d
[es@es1 root]$ curl 192.168.43.249:9200
{
  "name" : "es",
  "cluster_name" : "bdqn",
  "cluster_uuid" : "KvsP1lh5Re2cxdgfNbk_eA",
  "version" : {
    "number" : "6.3.2",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "053779d",
    "build_date" : "2018-07-20T05:20:23.451332Z",
    "build_snapshot" : false,
    "lucene_version" : "7.3.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

[root@es1 ~]# iptables -F

在這裏插入圖片描述

kibana部署

#  下載和安裝
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-linux-x86_64.tar.gz
tar zxvf kibana-6.3.2-linux-x86_64.tar.gz  -C  /usr/local/
ln -s /usr/local/kibana-6.3.2-linux-x86_64/ /usr/local/kibana

# 配置kibana
vim /usr/local/kibana/config/kibana.yml

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.43.249:9200"

#啓動kibana
/usr/local/kibana/bin/kibana

kafka部署

部署zookeeper
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
tar zxvf zookeeper-3.4.12.tar.gz -C /usr/local
cd /usr/local/zookeeper-3.4.12
cp conf/zoo_sample.cfg conf/zoo.cfg

# 編輯zoo.cfg文件
vim /usr/local/zookeeper-3.4.12/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/zkdata
dataLogDir=/data/zookeeper/zkdatalog
clientPort=2181

#創建目錄
mkdir -p /data/zookeeper/{zkdata,zkdatalog}

#配置ZK節點ID
echo 1  > /data/zookeeper/zkdata/myid
 
 #啓動
/usr/local/zookeeper-3.4.12/bin/zkServer.sh start

#停止
/usr/local/zookeeper-3.4.12/bin/zkServer.sh stop

#查看狀態
/usr/local/zookeeper-3.4.12/bin/zkServer.sh status
kafka部署
#下載最新的2.12-2.1版本
wget http://mirrors.hust.edu.cn/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz

#解壓應用至指定位置
tar zxvf kafka_2.12-2.1.0.tgz  -C /usr/local/
ln -s /usr/local/kafka_2.12-2.1.0/ /usr/local/kafka


# vim  /usr/local/kafka/config/server.properties
broker.id=2
listeners = PLAINTEXT://192.168.43.74:9092 #本機
num.network.threads=5
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/data/kafka/kfdata
delete.topic.enable=true #新增
num.partitions=2
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.flush.interval.messages=10000 #取消註釋
log.flush.interval.ms=1000 #取消註釋
log.retention.hours=72 
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.43.74:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
kafka管理
#啓動服務:
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties 
#停止服務:
/usr/local/kafka/bin/kafka-server-stop.sh
kafka隊列

創建topic

/usr/local/kafka/bin/kafka-topics.sh --create \
--zookeeper 192.168.43.74:2181 \
--replication-factor 1 --partitions 2 \
--topic elktest

查看kafka隊列
/usr/local/kafka/bin/kafka-topics.sh --zookeeper 192.168.43.74:2181 --topic "elktest" --describe

kafka通信驗證

生產消息
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.43.74:9092 --topic elktest
在命令提示符裏輸入hello,回車

消費消息
/usr/local/kafka_2.12-2.1.0/bin/kafka-console-consumer.sh --bootstrap-server 192.168.43.74:9092 --topic elktest --from-beginning
輸入命令後可以看到剛纔輸入的信息,具體情況如下圖
在這裏插入圖片描述
在這裏插入圖片描述
驗證之後可以退出兩個終端了

filebeat部署

工作原理

在任何環境下,應用程序都有停機的可能性。 Filebeat 讀取並轉發日誌行,如果中斷,則會記住所有事件恢復聯機狀態時所在位置。
Filebeat帶有內部模塊(auditd,Apache,Nginx,System和MySQL),可通過一個指定命令來簡化通用日誌格式的收集,解析和可視化。

FileBeat 不會讓你的管道超負荷。FileBeat 如果是向 Logstash 傳輸數據,當 Logstash 忙於處理數據,會通知 FileBeat 放慢讀取速度。一旦擁塞得到解決,FileBeat將恢復到原來的速度並繼續傳播。

Filebeat保持每個文件的狀態,並經常刷新註冊表文件中的磁盤狀態。狀態用於記住harvester正在讀取的最後偏移量,並確保發送所有日誌行。Filebeat將每個事件的傳遞狀態存儲在註冊表文件中。所以它能保證事件至少傳遞一次到配置的輸出,沒有數據丟失。

在這裏插入圖片描述
Filebeat 有兩個主要組件:

  • harvester:一個harvester負責讀取一個單個文件的內容。harvester逐行讀取每個文件,並把這些內容發送到輸出。每個文件啓動一個harvester。harvester負責打開和關閉這個文件,這就意味着在harvester運行時文件描述符保持打開狀態。在harvester正在讀取文件內容的時候,文件被刪除或者重命名了,那麼Filebeat會續讀這個文件。這就有一個問題了,就是隻要負責這個文件的harvester沒有關閉,那麼磁盤空間就不會釋放。默認情況下,Filebeat保存文件打開直到close_inactive到達。

  • Input:一個input負責管理harvesters,並找到所有要讀取的源。如果input類型是log,則input查找驅動器上與已定義的glob路徑匹配的所有文件,併爲每個文件啓動一個harvester。

安裝配置
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-linux-x86_64.tar.gz

tar zxvf filebeat-6.3.2-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/filebeat-6.3.2-linux-x86_64/ /usr/local/filebeat

啓動之前需要配置,現在先不做配置,下邊的啓動命令也先不執行

啓動
/usr/local/filebeat/filebeat -c  /usr/local/filebeat/filebeat.yml
傳輸方案
  • output.elasticsearch

如果你希望使用 filebeat 直接向 elasticsearch 輸出數據,需要配置 output.elasticsearch

output.elasticsearch:
  hosts: ["192.168.43.249:9200"]
  • output.logstash

如果使用filebeat向 logstash輸出數據,然後由 logstash 再向elasticsearch 輸出數據,需要配置 output.logstash。 logstash 和 filebeat 一起工作時,如果 logstash 忙於處理數據,會通知FileBeat放慢讀取速度。一旦擁塞得到解決,FileBeat 將恢復到原來的速度並繼續傳播。這樣,可以減少管道超負荷的情況。

output.logstash:
  hosts: ["192.168.199.5:5044"]  #logstaship
  • output.kafka

如果使用filebeat向kafka輸出數據,然後由 logstash 作爲消費者拉取kafka中的日誌,並再向elasticsearch 輸出數據,需要配置 output.logstash

output.kafka:
  enabled: true
  hosts: ["192.168.43.74:9092"]
  topic: elktest

logstash部署

工作原理

Logstash 有兩個必要元素:input 和 output ,一個可選元素:filter。 這三個元素,分別代表 Logstash 事件處理的三個階段:輸入 > 過濾器 > 輸出

在這裏插入圖片描述

  • 負責從數據源採集數據。
  • filter 將數據修改爲你指定的格式或內容。
  • output 將數據傳輸到目的地。

在實際應用場景中,通常輸入、輸出、過濾器不止一個。Logstash 的這三個元素都使用插件式管理方式,可以根據應用需要,靈活的選用各階段需要的插件,並組合使用。

配置文件
  • logstash.yml:logstash 的默認配置文件,配置如node.name、path.data、pipeline.workers、queue.type等,這其中的配置可以被命令行參數中的相關參數覆蓋
  • jvm.options:logstash 的 JVM 配置文件。
  • startup.options (Linux):包含系統安裝腳本在 /usr/share/logstash/bin 中使用的選項爲您的系統構建適當的啓動腳本。安裝 Logstash 軟件包時,系統安裝腳本將在安裝過程結束時執行,並使用 startup.options 中指定的設置來設置用戶,組,服務名稱和服務描述等選項。
  • pipelines.yml: 定義數據處理流程的文件
input 常用模塊

Logstash 支持各種輸入選擇 ,可以在同一時間從衆多常用來源捕捉事件。能夠以連續的流式傳輸方式,可從日誌、指標、Web 應用、數據存儲以及各種 AWS 服務採集數據。

  • file:從文件系統上的文件讀取
  • syslog:在衆所周知的端口514上偵聽系統日誌消息,並根據RFC3164格式進行解析
  • redis:從redis服務器讀取,使用redis通道和redis列表。 Redis經常用作集中式Logstash安裝中的“代理”,它將接收來自遠程Logstash“託運人”的Logstash事件排隊。
  • beats:處理由Filebeat發送的事件。
常用的filter模塊

過濾器是Logstash管道中的中間處理設備。可以將條件過濾器組合在一起,對事件執行操作。

  • grok:解析和結構任意文本。 Grok目前是Logstash中將非結構化日誌數據解析爲結構化和可查詢的最佳方法。
  • mutate:對事件字段執行一般轉換。您可以重命名,刪除,替換和修改事件中的字段。
  • drop:完全放棄一個事件,例如調試事件。
  • clone:製作一個事件的副本,可能會添加或刪除字段。
  • geoip:添加有關IP地址的地理位置的信息
常用output
  • elasticsearch:將事件數據發送給 Elasticsearch(推薦模式)。
  • file:將事件數據寫入文件或磁盤。
  • graphite:將事件數據發送給 graphite(一個流行的開源工具,存儲和繪製指標, http://graphite.readthedocs.io/en/latest/)。
  • statsd:將事件數據發送到 statsd (這是一種偵聽統計數據的服務,如計數器和定時器,通過UDP發送並將聚合發送到一個或多個可插入的後端服務)。
常用code插件
  • json:以JSON格式對數據進行編碼或解碼。
  • multiline:將多行文本事件(如java異常和堆棧跟蹤消息)合併爲單個事件。
傳輸方案
  • 使用beats傳輸至ES:
input {
  beats {
    port => 5044 # 此端口需要與 filebeat.yml 中的端口相同
  }
}


output {
  elasticsearch {
    hosts => "192.168.199.4:9200"
    manage_template => false
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" 
    document_type => "%{[@metadata][type]}" 
  }
}
  • 從Kafka讀取傳輸至ES:
input {
      kafka {
        bootstrap_servers => "192.168.199.6:9092"
        auto_offset_reset => "latest"
        consumer_threads => 5
        decorate_events => true
        topics => ["elktest"]
      }
}
          
output { 
    elasticsearch { 
        hosts => ["192.168.199.4:9200"]
        index => "elktest-%{+YYYY.MM.dd}"
        }
}            
安裝測試
# 下載安裝
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz
tar zxvf logstash-6.3.2.tar.gz  -C /usr/local/
ln -s /usr/local/logstash-6.3.2/ /usr/local/logstash


vim /usr/local/logstash/config/logstash.yml
#開啓配置文件自動加載
config.reload.automatic: true

#定義配置文件重載時間週期                       
config.reload.interval: 10    

#定義訪問主機名,一般爲域名或IP
http.host: "192.168.199.5"    

#配置文件目錄            
path.config: /usr/local/logstash/config/*.conf   #注意:和/之間有空格

#日誌輸出路徑
path.logs: /var/log/logstash

#測試(敲入命令後,輸入任意消息)  #目前還沒有conf文件,暫時不可以敲這個命令
/usr/local/logstash/bin/logstash -e  'input{stdin{}}output{stdout{}}'

使用

ELK方案一

實驗重點在於理解各組件協調流程,學習beats(filebeat)的使用

NginxLog ----> Filebeat —> Logstash —> ES —>Kibana

節點說明
主機名 地址 角色 作用 版本
es 192.168.43.249 Elasticsearch 日誌存儲 elasticsearch-6.3.2
logstash 192.168.43.147 Logstash 日誌處理 Logstatsh-6.3.2
zkk 192.168.199.43.74 Kibana 日誌展示 kibana-6.3.2
app1 192.168.43.253 Nginx、FileBeat 日誌生產、日誌採集 filebeat-6.3.2
實驗前提
  1. ES安裝配置並啓動
  2. Filebeat安裝完成
  3. Logstash安裝完成
  4. Kibana安裝配置完成
  5. 防火牆開放相關端口
  6. 禁用selinux
服務配置
  • filebeat配置
[root@es3 ~]# vim /usr/local/filebeat/filebeat.yml 
#=========================== Filebeat inputs =============================

#filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.
filebeat:
  prospectors:
    - type: log
      paths:
        - /usr/local/nginx/logs/access.log
      tags: ["nginx"]

  # Change to true to enable this input configuration.
  enabled: true

#----------------------------- Logstash output --------------------------------
output.logstash:
    hosts: ["192.168.43.147:5044"]

在logstas output上邊有一個elasticsearch output 需要註釋掉

#運行
/usr/local/filebeat/filebeat -c  /usr/local/filebeat/filebeat.yml
  • filebeat主機安裝nginx並啓動
過程略
  • logstash配置
[root@localhost ~]# vim /usr/local/logstash/config/nginx-access.conf
input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
        hosts => "192.168.43.249:9200"
        index => "nginx-%{+YYYY.MM.dd}"
  }
}

#運行
/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/nginx-access.conf

在這裏插入圖片描述

  • kibana展示
    在kibana主機上訪問本機5601端口
    firefox 192.168.43.74:5601
    在這裏插入圖片描述
    點擊左側菜單的discover 在新頁面的輸入框內輸入nginx-* 作爲索引樣式,然後點擊下一步
    在這裏插入圖片描述
    在這裏插入圖片描述
    添加完索引之後,點擊左側菜單的可視化,創建一個可視化圖表,在新頁面裏選擇vertical bar
    在這裏插入圖片描述
    選擇我們已經創建的索引樣式,即可看到數據,如果不明顯,去nginx那自己訪問自己幾次
    在這裏插入圖片描述

在這裏插入圖片描述
查看es上的索引列表進行驗證

[root@es1 ~]# curl 192.168.43.249:9200/_cat/indices?v
health status index            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana          kT2cHcPUQEuRZ4bNr4bhZQ   1   0          2            0     10.6kb         10.6kb
red    open   index            WgQXJcVDSf6BiVAogsKk5g   5   1          1            0      3.6kb          3.6kb
yellow open   nginx-2019.02.08 qKww-bo7SOqGSjEb3wAj8A   5   1         26            0    229.2kb        229.2kb
red    open   bdqntest         BnAC8m91TzKWGPsxwj23nA   5   1          0            0       781b           781b

在這裏插入圖片描述

實驗二

實驗重點在於理解各組件協調流程,理解加入消息隊列後的架構

NginxLog —> Filebeat —> Kafka —> Logstash —> ES —>Kibana

節點說明
主機名 地址 角色 作用 版本
es 192.168.43.249 Elasticsearch 日誌存儲 elasticsearch-6.3.2
logstash 192.168.43.147 Logstash 日誌處理 Logstatsh-6.3.2
zkk 192.168.199.43.74 Kibana、kafka、zookeeper 日誌展示 kibana-6.3.2
app1 192.168.43.253 Nginx、FileBeat 日誌生產、日誌採集 filebeat-6.3.2
實驗前提
1、 ES安裝配置並啓動
2、 Filebeat安裝完成
3、 Logstash安裝完成
4、 Kibana安裝配置完成
5、 防火牆開放相關端口
6、 禁用selinux
7、 Zookeeper運行啓動
8、 Kafka已配置運行
服務配置
  • kafka配置
#創建topic 並測試消費者正常 (前邊已經創建過)
/usr/local/kafka_2.12-2.1.0/bin/kafka-topics.sh --create \
--zookeeper 192.168.43.74:2181 \
--replication-factor 1 --partitions 2 \
--topic elktest1
  • filebeat配置
[root@es3 nginx-1.15.4]# vim /usr/local/filebeat/filebeat.yml 
在上邊實驗的基礎上,把logstash output註釋掉  在它下邊自己寫對kafka的output
output.kafka:
  enabled: true
  hosts: ["192.168.43.74:9092"]
  topic: "elktest1"

#運行filebeat
/usr/local/filebeat/filebeat -c  /usr/local/filebeat/filebeat.yml

  • logstash配置
[root@localhost ~]# vim /usr/local/logstash/config/nginx-access.conf
input{
  kafka{
    bootstrap_servers => "192.168.43.74:9092"
    topics => "elktest"
    consumer_threads => 1
    decorate_events => true
    auto_offset_reset => "latest"

  }
}

output {
   elasticsearch {
         hosts => ["192.168.43.249:9200"]
         index => "nginx-kafka-%{+YYYY-MM-dd}"
   }
}

#運行
/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/nginx-access.conf
  • kibana展示

kibana主機啓動kafka(如果之前啓動過,這不忽略)

 #啓動zookeeper
/usr/local/zookeeper-3.4.12/bin/zkServer.sh start
#啓動kafka
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties 

在kibana主機上訪問本機5601端口
firefox 192.168.43.74:5601
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發佈了16 篇原創文章 · 獲贊 6 · 訪問量 2858
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章