點擊上方藍色字體,選擇「標星公衆號」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 是否參與主節點競選true 指定該節點是否存儲索引數據,默認爲true。本例沒配置,全部節點都存儲 node.data:
包括主節點
# 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
修改配置:
:type: log enabled: true paths: /data/home/app/domains/cpay_domain/logs/cpay-tms-gate.log : 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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。