FileBeat + Kafka Logstash+ ElasticSearch+Kibana 搭建日志管理平臺
管理平臺流程

環(huán)境準備
elasticsearch-6.0.0.tar.gz
filebeat-7.0.1-linux-x86_64.tar.gz
kibana-6.0.0-linux-x86_64.tar.gz
logstash-6.0.0.tar.gz
kafka_2.11-2.1.1.tgz
除了kafka以外,其它四個均可以在elastic官網(wǎng)中下載,具體的可以在下載地址選擇軟件和版本進行下載,本文檔都是基于6.0.0的版本操作的
Kafka可以在Apache中下載
本文檔均是基于CentOS Linux release 7.2.1511 (Core) 64位系統(tǒng)安裝部署的,查看版本和位數(shù)可以使用如下命令
cat /etc/centos-release:查看版本號
getconf LONG_BIT:查看位數(shù)
安裝及部署
因為是基于Java的,所以在部署之前,要先確保系統(tǒng)上安裝了Jdk,本系統(tǒng)安裝的Jdk版本為1.8
所有的文件都放在/usr/elk/下
Kibana部署
解壓文件
[root@localhost elk]# tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz修改配置,修改/conf/kibana.yml文件
# 設置elasticsearch地址elasticsearch.url: "http://localhost:9200"server.host: 0.0.0.0
elasticsearch部署
解壓文件
[root@localhost elk]# tar -zxvf elasticsearch-6.0.0.tar.gz啟動該項目的時候,不能使用root權限,所以要新建一個用戶來啟動
# 新建一個組[root@localhost elk]# groupadd elkgroup# 在該組下新增用戶 useradd 用戶名 -g 組名 -p 密碼[root@localhost elk]# useradd elkuser -g elkgroup -p 123456# 賦權限 chown -R 用戶名:組名 文件[root@localhost elk]# chown -R elsearch:elsearch elasticsearch-6.0.0# 切換用戶并且啟動elasticsearch[root@localhost elk]# su elkuser[elkuser@localhost?elasticsearch-6.0.0]$?./bin/elasticsearch
logstash部署
解壓文件
[root@localhost elk]# tar -zxvf logstash-6.0.0.tar.gz在conf目錄下新建一個配置文件logstash.conf
input{file{type=>"log"path=>"/usr/logs/*.log"??????start_position=>"beginning"}}output{stdout{codec=>rubydebug{}}elasticsearch{hosts=>"127.0.0.1"index=>"log-%{+YYYY.MM.dd}"}}
根據(jù)配置文件啟動
[root@localhost elk]# ./logstash -f ../config/logstash.conf復制代碼
Kafka部署
安裝glibc
[root@localhost elk]# yum -y install glibc.i686配置zookeeper
[root@localhost elk]# vi config/zookeeper.properties# 配置內(nèi)容dataDir=/data/programs/kafka_2.11-0.10.0.0/datadataLogDir=/data/programs/kafka_2.11-0.10.0.0/logsclientPort=2181maxClientCnxns=100tickTime=2000initLimit=10# 配置完成保存退出,然后根據(jù)配置啟動zookeeper[root@localhost?kafka_2.11-2.1.1]#?./bin/zookeeper-server-start.sh?config/zookeeper.properties
配置kafka文件
[root@localhost kafka_2.11-2.1.1]# vi config/server.properties# 配置內(nèi)容broker.id=0port=9092host.name=127.0.0.1num.network.threads=3num.io.threads=8socket.send.buffer.bytes=102400socket.receive.buffer.bytes=102400socket.request.max.bytes=104857600log.dirs=/data/logs/kafkanum.partitions=2num.recovery.threads.per.data.dir=1log.retention.check.interval.ms=300000zookeeper.connect=localhost:2181zookeeper.connection.timeout.ms=6000# 配置完成保存退出,然后根據(jù)配置啟動kafka[root@localhost?kafka_2.11-2.1.1]#?./bin/kafka-server-start.sh?config/server.properties
在啟動過程中,可能會提示內(nèi)存不足,
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)## There is insufficient memory for the Java Runtime Environment to continue.# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.# An error report file with more information is saved as:
因為默認kafka配置的為1G,所以修改啟動配置
將 /bin/kafka-server-start.sh的export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"修改為export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
然后重新啟動就可以了
fileBeat部署
修改filebeat.yml配置
[root@localhost filebeat-7.0.1-linux-x86_64]# vi filebeat.yml# 新增輸出到kafka配置,該配置是yml格式,所以配置的時候要符合yml規(guī)范#--------------------------- kafka output ----------------------------------output.kafka:enabled: truehosts: ["127.0.0.1:9092"]topic: test# 并且修改相關配置enabled: true# 獲取日志的路徑paths:- /home/elk/log/access.log# 日志標簽,在kibana中查看數(shù)據(jù)可以找到該標簽,并且可以根據(jù)該tag標簽過濾查找數(shù)據(jù)tags: ["nginx-accesslog"]# 啟動服務[root@localhost filebeat-7.0.1-linux-x86_64]# ./filebeat -e
問題及注意點
在啟動logstash的時候報了一個小問題,提示
Connection to node -1 could not be established. Broker may not be available.
該問題是由于開始我啟動kafka的時候配置的host.name=10.12.1.52,這個地址是服務器的地址,但是在logstash中配置的kafka地址為127.0.0.1導致的
注意點:
logstash的配置
kafka的隊列名要對應
清風許許https://juejin.cn/post/6844903845970051080

分享&在看
