ELK+FileBeat+Kafka分佈式系統搭建圖文教程


點擊上方藍色字體,選擇「標星公衆號」javascript

優質文章,第一時間送達php

工做流程



filebeat收集須要提取的日誌文件,將日誌文件轉存到kafka集羣中,logstash處理kafka日誌,格式化處理,並將日誌輸出到elasticsearch中,前臺頁面經過kibana展現日誌。css

使用kafka集羣作緩存層,而不是直接將filebeat收集到的日誌信息寫入logstash,讓總體結構更健壯,減小網絡環境,致使數據丟失。filebeat負責將收集到的數據寫入kafka,logstash取出數據並處理。前端


硬件條件支持


一共使用了4臺服務器:

每臺服務器都須要安裝jdk,配置環境變量。

修改全局配置文件,做用於全部用戶:java



sudo vi /etc/profileexport JAVA_HOME=JDK安裝路徑export PATH=$JAVA_HOME/bin:$PATH


系統調優


vim /etc/sysctl.conffs.file-max=65536vm.max_map_count = 262144
vim /etc/security/limits.conf* soft nofile 65535* hard nofile 131072* soft nproc 2048* hard nproc 4096


使用的軟件版本

應用安裝


kafka、zookeeper集羣搭建

在10.16.10.11三、10.16.10.11四、10.16.8.187服務器中搭建kafka集羣,關閉防火牆node

關閉防火牆命令:nginx



systemctl stop firewalld


查看防火牆狀態:web



systemctl status firewalld


zookeeper搭建

本次直接使用kafka自帶的zookeeper,不須要單獨下載zookeeper面試

解壓安裝包到/usr/local/kafka目錄下shell


vim config/zookeeper.properties


修改配置內容:


clientPort=2181maxClientCnxns=100tickTime=2000initLimit=10syncLimit=5dataDir=/usr/local/kafka/zookeeper/datadataLogDir=/usr/local/kafka/zookeeper/logserver.1=10.16.10.113:12888:13888server.2=10.16.10.114:12888:13888server.3=10.16.8.187:12888:13888


注意:dataDir、dataLogDir文件目錄須要手動建立。

三臺服務器配置內容一致,須要在dataDir目錄下建立myid文件,文件的內容必須與zookeeper.properties中的編號保持一致。

kafka搭建


vim config/server.properties


修改配置內容:


broker.id=1prot = 9092host.name = 10.16.10.113num.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600log.dirs=/usr/local/kafka-logsnum.partitions=16num.recovery.threads.per.data.dir=1offsets.topic.replication.factor=1transaction.state.log.replication.factor=1transaction.state.log.min.isr=1log.retention.hours=168log.segment.bytes=1073741824log.retention.check.interval.ms=300000zookeeper.connect=10.16.10.113:2181,10.16.10.114:2181,10.16.8.187:2181zookeeper.connection.timeout.ms=6000group.initial.rebalance.delay.ms=0


注意:每臺服務器除broker.id 和 host.name 兩個屬性須要修改以外,其餘屬性保持一致。

驗證

啓動zookeeper


nohup sh zookeeper-server-start ../config/zookeeper.properties &


啓動kafka



nohup sh kafka-server-start ../config/server.properties &


建立topic


/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper 10.16.10.113:2181,10.16.10.114:2181,10.16.8.187:2181 --replication-factor 1 --partitions 2 --topic testtopic


查看topic


/usr/local/kafka/bin/kafka-topics.sh --zookeeper 10.16.10.113:2181,10.16.10.114:2181,10.16.8.187:2181 --list


寫入消息:

命令:



/usr/local/kafka/bin/kafka-console-producer.sh --broker-list 10.16.10.113:9092 --topic testtopic


消費消息:

命令:



/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.16.10.113:9092 --from-beginning --topic testtopic


能正常的寫入消息、消費消息,kafka集羣完成。


ELK 搭建


在10.16.10.11三、10.16.10.11四、10.16.3.165搭建elasticsearch,,注意關閉防火牆,修改系統的配置,注意es的啓動必須是非root用戶啓動。

安裝elasticsearch

解壓文件到/usr/local/目錄下,以10.16.3.165爲主節點master


vim elasticsearch/config/elasticsearch.yml


修改配置:


###配置解釋# cluster.name 集羣名稱# node.name 節點主機名# node.master 是否參與主節點競選# node.data:true 指定該節點是否存儲索引數據,默認爲true。本例沒配置,全部節點都存儲


包括主節點


# discovery.zen.ping.unicast.hosts 配置上elasticsearch 集羣除本機外其餘機器# cluster.initial_master_nodes 引導啓動集羣的機器IP或者主機名# http.port http端口,kibana中會用到 。# transport.tcp.port 設置節點間交互的tcp端口,默認是9300。cluster.name: elkmasternode.name: 10.16.3.165node.master: truepath.logs: /usr/local/data/log/network.host: 10.16.3.165http.port: 9200discovery.zen.ping.unicast.hosts: ["10.16.10.113","10.16.10.114"]cluster.initial_master_nodes: ["10.16.3.165"]


注意:其餘兩臺服務器,做爲solver,須要修改cluster.name、node.name、network.host爲自身的配置node.naster: false。最後兩個屬性根據服務器內容進行修改。

安裝kibana

在10.16.3.165服務器上安裝kibana

解壓文件到/usr/local/目錄下


vim kibana/config/kibana.yml


修改配置:



# i18n.locale: "zh-CN" web界面中文# server.port 監聽端口server.port: 5601server.host: "10.16.3.165"elasticsearch.hosts: ["http://10.16.3.165:9200"]i18n.locale: "zh-CN"


驗證

啓動以前切換爲非root用戶。

啓動elasticsearch:

命令:


nohup sh elasticsearch &# 正確的用法是下面/bin/elasticsearch -d


啓動kibana

命令:


nohup sh kibana &


三臺服務器訪問地址ip:9200,出現如圖結果說明elasticsearch啓動成功

10.16.3.165訪問10.16.3.165:5601,出現以下結果說明kibana啓動成功

filebeat安裝

在10.16.3.166服務器搭建filebeat服務

解壓文件到/usr/local/目錄下


vim filebeat/filebeat.yml


修改配置:


filebeat.inputs:- type: log enabled: true paths: - /data/home/app/domains/cpay_domain/logs/cpay-tms-gate.log output.kafka: enable: true hosts: ["10.16.8.187:9092"] topic: es-tmslogs compression: gzipmax_message_bytes: 100000


注意:paths表示須要提取的日誌的路徑,將日誌輸出到kafka中,建立topic

啓動filebeat:

命令:


./filebeat -e -c filebeat.yml


logstash安裝

在10.16.3.165服務器搭建logstash服務

解壓文件到/usr/local/目錄下,建立用於本次處理的配置文件logstashfortms.conf


vim logstash/config/logstashfortms.conf


配置內容:


input{ kafka{ bootstrap_servers => "10.16.10.113:9092,10.16.10.114:9092,10.16.8.187:9092" topics => ["es-tmslogs"] codec => json }}output{ elasticsearch { hosts => ["10.16.3.165:9200"] index => "logstash-%{+YYYY.MM.dd}" }}


啓動logstash:

命令:


nohup sh logstash -f ../config/logesforcpay.conf &


kibana頁面操做

安裝完成之後訪問10.16.3.165:5601頁面,選擇紅框中的按鈕


進入索引建立模式

建立索引以後,點擊紅框內按鈕,便可展現日誌的信息,服務搭建完成。


喜歡本文的朋友們,歡迎長按下圖關注訂閱號成猿之路,收看更多精彩內容!


推薦閱讀:

我知道你 「在看


本文分享自微信公衆號 - 成猿之路(softwareload)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索