網(wǎng)站標(biāo)題欄做多大線上營銷推廣方案模板
目錄
前言
一、環(huán)境部署
二、部署ELFK
1、ELFK ElasticSearch 集群部署
1.1 配置本地hosts文件
1.2?安裝 elasticsearch-rpm 包并加載系統(tǒng)服務(wù)
1.3?修改 elasticsearch 主配置文件
1.4 創(chuàng)建數(shù)據(jù)存放路徑并授權(quán)
1.5 啟動elasticsearch是否成功開啟
1.6 查看節(jié)點(diǎn)信息
2、ELFK Logstash 部署
2.1 安裝 logstash
2.2?測試 logstash
3、ELFK Kiabana 部署
3.1 安裝 Kiabana
3.2 設(shè)置 Kibana 的主配置文件并啟動服務(wù)
4、ELFK filebeat 部署
4.1?安裝 filebeat + httpd
4.2 設(shè)置 filebeat 的主配置文件
三、部署Zoopkeeper + Kafak 集群
1、部署 Zoopkeeper 集群
1.1 部署 Zoopkeeper 集群
1.2 設(shè)置主配置文件
1.3 創(chuàng)建數(shù)據(jù)目錄和日志目錄
1.4 創(chuàng)建myid文件
1.5 配置 Zookeeper 啟動腳本并設(shè)置開機(jī)自啟
1.6 分別啟動 Zookeeper
2、部署 Kafak?集群
2.1 設(shè)置主配置文件
2.2 創(chuàng)建數(shù)據(jù)目錄和日志目錄
2.3 創(chuàng)建myid文件
2.4 配置 Zookeeper 啟動腳本并設(shè)置開機(jī)自啟
2.5 分別啟動 Zookeeper
四、測試
1、定義 logstash 的配置文件
2、查看所有的索引
3、登錄 Kibana 添加索引?
前言
feilbeat + 緩存/消息隊(duì)列+ Logstash + Elasticsearch + Kibana 模式
這是一種加健壯高效的架構(gòu),適合處理海量復(fù)雜的日志數(shù)據(jù)。
在這種模式下,filebeat和iogstach之間加入緩存或消息隊(duì)列組件,如redis、kafka或RabbitMQ等。
這樣可以降低對目志源主機(jī)的影響 ,提高目志傳輸?shù)姆€(wěn)定性和可靠性,以及實(shí)現(xiàn)負(fù)載均衡和高可用
- Logstash:從Kafka集群中消費(fèi)日志數(shù)據(jù),進(jìn)行必要的數(shù)據(jù)解析、過濾、轉(zhuǎn)換等預(yù)處理操作,然后將結(jié)構(gòu)化后的數(shù)據(jù)發(fā)送到Elasticsearch
- Elasticsearch:存儲經(jīng)過處理的日志數(shù)據(jù),提供全文搜索、聚合分析等功能,便于后期進(jìn)行日志分析和故障排查
- Kibana:作為前端展示工具,基于Elasticsearch的數(shù)據(jù)創(chuàng)建可視化圖表和儀表盤,為用戶提供友好的日志分析界面
- Filebeat/Fluentd:負(fù)責(zé)從各服務(wù)器節(jié)點(diǎn)上實(shí)時收集日志數(shù)據(jù),Filebeat輕量級,適合大規(guī)模部署,Fluentd功能強(qiáng)大,支持豐富的插件和靈活的過濾規(guī)則
- ZooKeeper:在某些場景下,ZooKeeper可以用于管理Kafka集群的元數(shù)據(jù),例如Broker注冊、Topic的分區(qū)分配等,確保Kafka集群的穩(wěn)定性和一致性。同時,對于Logstash或Kafka Connect這類組件,也可以通過ZooKeeper獲取集群配置信息
- Kafka:作為一個分布式消息隊(duì)列系統(tǒng),承擔(dān)起數(shù)據(jù)緩沖和中轉(zhuǎn)的角色。日志數(shù)據(jù)先發(fā)送到Kafka集群,一方面可以緩解Logstash或Filebeat的壓力,另一方面支持多消費(fèi)者模型,允許數(shù)據(jù)被多個下游系統(tǒng)并行消費(fèi)。此外,Kafka的高吞吐量和持久化特性使得系統(tǒng)在面臨大量日志輸入時仍能保持穩(wěn)定
數(shù)據(jù)流向:應(yīng)用程序日志 ---> Filebeat ---> Kafka ---> Logstash ---> Elasticsearch ---> Kibana?
一、環(huán)境部署
(1)關(guān)閉所有設(shè)備的防火墻和核心防護(hù)
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
(2)修改所有設(shè)備的主機(jī)名
[root@localhost ~]#hostnamectl set-hostname logstash
[root@localhost ~]#bash[root@localhost ~]#hostnamectl set-hostname es_node1
[root@localhost ~]#bash[root@localhost ~]#hostnamectl set-hostname es_node2
[root@localhost ~]#bash[root@localhost ~]#hostnamectl set-hostname logstash
[root@localhost ~]#bash[root@localhost ~]#hostnamectl set-hostname filebeat
[root@localhost ~]#bash[root@localhost ~]#hostnamectl set-hostname zk-kfk01
[root@localhost ~]#bash[root@localhost ~]#hostnamectl set-hostname zk-kfk02
[root@localhost ~]#bash[root@localhost ~]#hostnamectl set-hostname zk-kfk03
[root@localhost ~]#bash
(3)所有設(shè)備都需部署java環(huán)境,安裝oraclejdk
java -version #不建議使用openjdk,所以三臺設(shè)備都需安裝oraclejdk
# rpm安裝oraclejdk#yum install或rpm -ivh安裝oraclejdk
cd /opt #將rpm軟件包傳至/opt目錄下
rpm -ivh jdk-8u291-linux-x64.rpm#將openjdk更換至oraclejdk
vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 #輸出定義java的工作目錄
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar #輸出指定java所需的類文件
export PATH=$JAVA_HOME/bin:$PATH #輸出重新定義環(huán)境變量,$PATH一定要放在$JAVA_HOME的后面,讓系統(tǒng)先讀取到工作目錄中的版本信息source /etc/profile.d/jdk.sh #執(zhí)行配置文件
java -version
----------------------------------------------------------------------------------------
# 二進(jìn)制包安裝oraclejdkcd /opt #將二進(jìn)制包傳至/opt目錄下
tar zxvf jdk-8u291-linux-x64.tar.gz -C /usr/local
ln -s /usr/local/jdk1.8.0_291/ /usr/local/jdkvim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHsource /etc/profile.d/jdk.sh
java -version
二、部署ELFK
1、ELFK ElasticSearch 集群部署
1.1 配置本地hosts文件
es_node節(jié)點(diǎn)1和es_node節(jié)點(diǎn)2都要配置本地的/etc/hosts文件
echo "172.16.12.12 es_node1" >> /etc/hosts
echo "172.16.12.13 es_node2" >> /etc/hosts
?1.2?安裝 elasticsearch-rpm 包并加載系統(tǒng)服務(wù)
#安裝elasticsearch-rpm 包
cd /opt #上傳elasticsearch-5.5.0.rpm到/opt目錄下
rpm -ivh elasticsearch-5.5.0.rpm#加載系統(tǒng)服務(wù)
systemctl daemon-reload
systemctl enable elasticsearch.service
?1.3?修改 elasticsearch 主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注釋,指定集群名字
cluster.name: my-elk-cluster
--23--取消注釋,指定節(jié)點(diǎn)名字:Node1節(jié)點(diǎn)為node1,Node2節(jié)點(diǎn)為node2
node.name: node1
--33--取消注釋,指定數(shù)據(jù)存放路徑
path.data: /data/elk_data
--37--取消注釋,指定日志存放路徑
path.logs: /var/log/elasticsearch/
--43--取消注釋,改為在啟動的時候不鎖定內(nèi)存
bootstrap.memory_lock: false
--55--取消注釋,設(shè)置監(jiān)聽地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注釋,ES 服務(wù)的默認(rèn)監(jiān)聽端口為9200
http.port: 9200
--68--取消注釋,集群發(fā)現(xiàn)通過單播實(shí)現(xiàn),指定要發(fā)現(xiàn)的節(jié)點(diǎn) node1、node2
discovery.zen.ping.unicast.hosts: ["es_node1", "es_node2"]
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
#過濾到能生效的語句,檢查修改的是否正確
1.4 創(chuàng)建數(shù)據(jù)存放路徑并授權(quán)
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/
1.5 啟動elasticsearch是否成功開啟
systemctl start elasticsearch.service
ss -antp | grep 9200
綜上,兩個es_node節(jié)點(diǎn)都部署安裝完elasticsearch
1.6 查看節(jié)點(diǎn)信息
瀏覽器訪問:http://172.16.12.12:9200 ?、 http://172.16.12.13:9200 來查看節(jié)點(diǎn) es_node1、es_node2 的信息
瀏覽器訪問:http://172.16.12.12:9200/_cluster/health?pretty ?、 http://172.16.12.12:9200/_cluster/health?pretty 來查看群集的健康情況,可以看到 status 值為 green(綠色), 表示節(jié)點(diǎn)健康運(yùn)行
綠色:健康,數(shù)據(jù)和副本,全都沒有問題
紅色:數(shù)據(jù)都不完整
黃色:數(shù)據(jù)完整,但副本有問題?
2、ELFK Logstash 部署
需要安裝部署在logstash節(jié)點(diǎn)服務(wù)器上
2.1 安裝 logstash
[root@logstash ~]#cd /opt #上傳軟件包 logstash-5.5.1.rpm 到/opt目錄下
[root@logstash opt]#rpm -ivh logstash-5.5.1.rpm? ? ? ? ? ?
[root@logstash opt]#systemctl enable --now logstash.service
[root@logstash opt]#ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
2.2?測試 logstash
Logstash 命令常用選項(xiàng):
常用選項(xiàng) | 說明 |
---|---|
-f | 通過這個選項(xiàng)可以指定 Logstash 的配置文件,根據(jù)配置文件配置 Logstash 的輸入和輸出流 |
-e | 從命令行中獲取,輸入、輸出后面跟著字符串,該字符串可以被當(dāng)作 Logstash 的配置(如果是空,則默認(rèn)使用 stdin 作為輸入,stdout 作為輸出) |
-t | 測試配置文件是否正確,然后退出 |
定義輸入和輸出流:
(1)輸入采用標(biāo)準(zhǔn)輸入,輸出采用標(biāo)準(zhǔn)輸出(類似管道)
#輸入采用標(biāo)準(zhǔn)輸入,輸出采用標(biāo)準(zhǔn)輸出(類似管道)
[root@logstash opt]#logstash -e 'input { stdin{} } output { stdout{} }'......
www.baidu.com #鍵入內(nèi)容(標(biāo)準(zhǔn)輸入)
2024-04-11T05:50:42.684Z logstash www.baidu.com #輸出結(jié)果(標(biāo)準(zhǔn)輸出)
www.google.com #鍵入內(nèi)容(標(biāo)準(zhǔn)輸入)
2024-04-11T05:51:07.295Z logstash www.google.com #輸出結(jié)果(標(biāo)準(zhǔn)輸出)//執(zhí)行 ctrl+c 退出
(2)?使用 rubydebug 輸出詳細(xì)格式顯示,codec 為一種編解碼器
#使用 rubydebug 輸出詳細(xì)格式顯示,codec 為一種編解碼器
[root@logstash opt]#logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'......
www.baidu.com #鍵入內(nèi)容(標(biāo)準(zhǔn)輸入)
{"@timestamp" => 2024-04-11T05:54:11.432Z, #輸出結(jié)果(處理后的結(jié)果)"@version" => "1","host" => "logstash","message" => "www.baidu.com"
}//執(zhí)行 ctrl+c 退出
(3)?使用 Logstash 將信息寫入 Elasticsearch 中
#使用 Logstash 將信息寫入 Elasticsearch 中
[root@logstash opt]#logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["172.16.12.13:9200"] } }'輸入 輸出 對接......
www.baidu.com #鍵入內(nèi)容(標(biāo)準(zhǔn)輸入)
www.sina.com.cn #鍵入內(nèi)容(標(biāo)準(zhǔn)輸入)
www.google.com #鍵入內(nèi)容(標(biāo)準(zhǔn)輸入)//執(zhí)行 ctrl+c 退出
3、ELFK Kiabana 部署
安裝部署在es_node1節(jié)點(diǎn)上
3.1 安裝 Kiabana
[root@es_node1 ~]#cd /opt #上傳軟件包 kibana-5.5.1-x86_64.rpm 到/opt目錄
[root@es_node1 opt]#rpm -ivh kibana-5.5.1-x86_64.rpm
3.2 設(shè)置 Kibana 的主配置文件并啟動服務(wù)
[root@es_node1 opt]#vim /etc/kibana/kibana.yml
--2--取消注釋,Kiabana 服務(wù)的默認(rèn)監(jiān)聽端口為5601
server.port: 5601
--7--取消注釋,設(shè)置 Kiabana 的監(jiān)聽地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--21--取消注釋,設(shè)置和 Elasticsearch 建立連接的地址和端口
elasticsearch.url: "http://192.168.10.13:9200"?
--30--取消注釋,設(shè)置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"[root@es_node1 opt]#systemctl enable --now kibana.service
[root@es_node1 opt]#netstat -natp | grep 5601 #查看5601端口進(jìn)程
4、ELFK filebeat 部署
?4.1?安裝 filebeat + httpd
[root@filebeat ~]#cd /opt #上傳軟件包 filebeat-6.6.1-x86_64.rpm 到/opt目錄
[root@filebeat opt]#rpm -ivh filebeat-6.6.1-x86_64.rpm
[root@filebeat opt]#yum install -y httpd
[root@filebeat opt]#systemctl start httpd
4.2 設(shè)置 filebeat 的主配置文件
[root@filebeat opt]#vim /etc/filebeat/filebeat.yml
filebeat.prospectors:
- type: log # 指定 log 類型,從日志文件中讀取消息enabled: truepaths:- /var/log/httpd/access_log #指定監(jiān)控的日志文件tags: ["access"]- type: logenabled: truepaths:- /var/log/httpd/error_logtags: ["error"]......
--------------Elasticsearch output-------------------(全部注釋掉)#添加輸出到 Kafka 的配置
----------------kafak output---------------------
output.kafka:enabled: truehosts: ["172.16.12.16:9092","172.16.12.17:9092","172.16.12.18:9092"] #指定 Kafka 集群配置topic: "httpd" #指定 Kafka 的 topic#啟動filebeat
[root@filebeat opt]#systemctl start filebeat.service
[root@filebeat opt]#filebeat -e -c /etc/filebeat/filebeat.yml#-e: 這是一個參數(shù),表示以交互式模式(interactive mode)啟動 Filebeat。在交互式模式下,Filebeat 會將日志輸出打印到控制臺,方便用戶查看實(shí)時日志信息
#-c filebeat.yml: 這也是一個參數(shù),指定了 Filebeat 的配置文件。通過指定這個配置文件,Filebeat 將會加載其中定義的配置選項(xiàng)和設(shè)置
三、部署Zoopkeeper + Kafak 集群
1、部署 Zoopkeeper 集群
1.1 部署 Zoopkeeper 集群
三臺zookeeper+kafka節(jié)點(diǎn)服務(wù)器都要安裝zookeeper
#下載安裝包
官方下載地址:https://archive.apache.org/dist/zookeeper/
下載apache-zookeeper-3.5.7-bin.tar.gz到本地的/opt目錄下,進(jìn)行二進(jìn)制包解壓,無需安裝,能直接使用
cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
mv apache-zookeeper-3.5.7-bin /usr/local/zookeeper-3.5.7
1.2 設(shè)置主配置文件
三臺節(jié)點(diǎn)服務(wù)器都要修改各自的配置文件
由于三臺節(jié)點(diǎn)服務(wù)器配置文件需要修改的內(nèi)容一樣,修改完zk-kfk01服務(wù)器的主配置文件后,將其直接scp遠(yuǎn)程拷貝到另外兩臺節(jié)點(diǎn)服務(wù)器:zk-kfk02和zk-kfk03
[root@zk-kfk01 opt]#cd /usr/local/zookeeper-3.5.7/conf/
[root@zk-kfk01 conf]#cp zoo_sample.cfg zoo.cfg
[root@zk-kfk01 conf]#vim zoo.cfg #修改主配置文件tickTime=2000
#通信心跳時間,Zookeeper服務(wù)器與客戶端心跳時間,單位毫秒
initLimit=10
#Leader和Follower初始連接時能容忍的最多心跳數(shù)(tickTime的數(shù)量),這里表示為10*2s
syncLimit=5
#Leader和Follower之間同步通信的超時時間,這里表示如果超過5*2s,Leader認(rèn)為Follwer死掉,并從服務(wù)器列表中刪除Follwer
dataDir=/usr/local/zookeeper-3.5.7/data
#修改,指定保存Zookeeper中的數(shù)據(jù)的目錄,目錄需要單獨(dú)創(chuàng)建
dataLogDir=/usr/local/zookeeper-3.5.7/logs
#添加,指定存放日志的目錄,目錄需要單獨(dú)創(chuàng)建
clientPort=2181 #客戶端連:接端口
server.1=172.16.12.16:3188:3288
server.2=172.16.12.17:3188:3288
server.3=172.16.12.18:3188:3288#解釋
server.A=B:C:D
# A是一個數(shù)字,表示這個是第幾號服務(wù)器。集群模式下需要在zoo.cfg中dataDir指定的目錄下創(chuàng)建一個文件myid,這個文件里面有一個數(shù)據(jù)就是A的值,Zookeeper啟動時讀取此文件,拿到里面的數(shù)據(jù)與zoo.cfg里面的配置信息比較從而判斷到底是哪個server。
# B是這個服務(wù)器的地址。
# C是這個服務(wù)器Follower與集群中的Leader服務(wù)器交換信息的端口。
# D是萬一集群中的Leader服務(wù)器掛了,需要一個端口來重新進(jìn)行選舉,選出一個新的Leader,而這個端口就是用來執(zhí)行選舉時服務(wù)器相互通信的端口。
#拷貝配置好的 Zookeeper 配置文件到其他節(jié)點(diǎn)服務(wù)器上
[root@zk-kfk01 conf]# scp zoo.cfg 172.16.12.17:/usr/local/zookeeper-3.5.7/conf/
[root@zk-kfk01 conf]# scp zoo.cfg 172.16.12.18:/usr/local/zookeeper-3.5.7/conf/
1.3 創(chuàng)建數(shù)據(jù)目錄和日志目錄
在每個節(jié)點(diǎn)上創(chuàng)建數(shù)據(jù)目錄和日志目錄
mkdir /usr/local/zookeeper-3.5.7/data
mkdir /usr/local/zookeeper-3.5.7/logs
1.4 創(chuàng)建myid文件
在每個節(jié)點(diǎn)的dataDir指定的目錄下創(chuàng)建一個 myid 的文件
[root@zk-kfk01 ~]# echo 1 > /usr/local/zookeeper-3.5.7/data/myid
[root@zk-kfk02 ~]# echo 2 > /usr/local/zookeeper-3.5.7/data/myid
[root@zk-kfk03 ~]# echo 3 > /usr/local/zookeeper-3.5.7/data/myid
1.5 配置 Zookeeper 啟動腳本并設(shè)置開機(jī)自啟
配置 Zookeeper 啟動腳本:
[root@zk-kfk01 ~]#vim /etc/init.d/zookeeper
#!/bin/bash
#chkconfig:2345 20 90
#description:Zookeeper Service Control Script
ZK_HOME='/usr/local/zookeeper-3.5.7'
case $1 in
start)echo "---------- zookeeper 啟動 ------------"$ZK_HOME/bin/zkServer.sh start
;;
stop)echo "---------- zookeeper 停止 ------------"$ZK_HOME/bin/zkServer.sh stop
;;
restart)echo "---------- zookeeper 重啟 ------------"$ZK_HOME/bin/zkServer.sh restart
;;
status)echo "---------- zookeeper 狀態(tài) ------------"$ZK_HOME/bin/zkServer.sh status
;;
*)echo "Usage: $0 {start|stop|restart|status}"
esac
#拷貝寫好的zookeeper啟動腳本到其他兩臺節(jié)點(diǎn)服務(wù)器
[root@zk-kfk01 ~]# scp /etc/init.d/zookeeper 172.16.12.17:/etc/init.d/zookeeper
[root@zk-kfk01 ~]# scp /etc/init.d/zookeeper 172.16.12.18:/etc/init.d/zookeeper
設(shè)置開機(jī)自啟:
chmod +x /etc/init.d/zookeeper
chkconfig --add zookeeper
# 將 "zookeeper" 服務(wù)添加到系統(tǒng)的服務(wù)管理列表中,并且配置它在系統(tǒng)啟動時自動運(yùn)行
# 前提創(chuàng)建一個名為 "zookeeper" 的服務(wù)腳本(通常是放在 /etc/init.d/ 目錄下)
1.6 分別啟動 Zookeeper
zk-kfk01服務(wù)器、zk-kfk02服務(wù)器、zk-kfk03服務(wù)器依次分別啟動
#分別啟動 Zookeeper
service zookeeper start#查看當(dāng)前狀態(tài)
service zookeeper status
2、部署 Kafak?集群
?三臺節(jié)點(diǎn)服務(wù)器都要安裝zookeeper
#下載安裝包
官方下載地址:https://archive.apache.org/dist/zookeeper/
下載apache-zookeeper-3.5.7-bin.tar.gz到本地的/opt目錄下,進(jìn)行二進(jìn)制包解壓,無需安裝,能直接使用
cd /opt
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
mv apache-zookeeper-3.5.7-bin /usr/local/zookeeper-3.5.7
2.1 設(shè)置主配置文件
三臺節(jié)點(diǎn)服務(wù)器都要修改各自的配置文件
由于三臺節(jié)點(diǎn)服務(wù)器配置文件需要修改的內(nèi)容一樣,修改完zk-kfk01服務(wù)器的主配置文件后,將其直接scp遠(yuǎn)程拷貝到另外兩臺節(jié)點(diǎn)服務(wù)器:zk-kfk02和zk-kfk03
[root@zk-kfk01 opt]#cd /usr/local/zookeeper-3.5.7/conf/
[root@zk-kfk01 conf]#cp zoo_sample.cfg zoo.cfg
[root@zk-kfk01 conf]#vim zoo.cfg #修改主配置文件tickTime=2000
#通信心跳時間,Zookeeper服務(wù)器與客戶端心跳時間,單位毫秒
initLimit=10
#Leader和Follower初始連接時能容忍的最多心跳數(shù)(tickTime的數(shù)量),這里表示為10*2s
syncLimit=5
#Leader和Follower之間同步通信的超時時間,這里表示如果超過5*2s,Leader認(rèn)為Follwer死掉,并從服務(wù)器列表中刪除Follwer
dataDir=/usr/local/zookeeper-3.5.7/data
#修改,指定保存Zookeeper中的數(shù)據(jù)的目錄,目錄需要單獨(dú)創(chuàng)建
dataLogDir=/usr/local/zookeeper-3.5.7/logs
#添加,指定存放日志的目錄,目錄需要單獨(dú)創(chuàng)建
clientPort=2181 #客戶端連:接端口
server.1=172.16.12.16:3188:3288
server.2=172.16.12.17:3188:3288
server.3=172.16.12.18:3188:3288#解釋
server.A=B:C:D
# A是一個數(shù)字,表示這個是第幾號服務(wù)器。集群模式下需要在zoo.cfg中dataDir指定的目錄下創(chuàng)建一個文件myid,這個文件里面有一個數(shù)據(jù)就是A的值,Zookeeper啟動時讀取此文件,拿到里面的數(shù)據(jù)與zoo.cfg里面的配置信息比較從而判斷到底是哪個server。
# B是這個服務(wù)器的地址。
# C是這個服務(wù)器Follower與集群中的Leader服務(wù)器交換信息的端口。
# D是萬一集群中的Leader服務(wù)器掛了,需要一個端口來重新進(jìn)行選舉,選出一個新的Leader,而這個端口就是用來執(zhí)行選舉時服務(wù)器相互通信的端口。
#拷貝配置好的 Zookeeper 配置文件到其他節(jié)點(diǎn)服務(wù)器上
[root@zk-kfk01 conf]# scp zoo.cfg 172.16.12.17:/usr/local/zookeeper-3.5.7/conf/
[root@zk-kfk01 conf]# scp zoo.cfg 172.16.12.18:/usr/local/zookeeper-3.5.7/conf/
2.2 創(chuàng)建數(shù)據(jù)目錄和日志目錄
在每個節(jié)點(diǎn)上創(chuàng)建數(shù)據(jù)目錄和日志目錄
mkdir /usr/local/zookeeper-3.5.7/data
mkdir /usr/local/zookeeper-3.5.7/logs
2.3 創(chuàng)建myid文件
在每個節(jié)點(diǎn)的dataDir指定的目錄下創(chuàng)建一個 myid 的文件
[root@zk-kfk01 ~]# echo 1 > /usr/local/zookeeper-3.5.7/data/myid
[root@zk-kfk02 ~]# echo 2 > /usr/local/zookeeper-3.5.7/data/myid
[root@zk-kfk03 ~]# echo 3 > /usr/local/zookeeper-3.5.7/data/myid
2.4 配置 Zookeeper 啟動腳本并設(shè)置開機(jī)自啟
配置 Zookeeper 啟動腳本:
[root@zk-kfk01 ~]#vim /etc/init.d/zookeeper
#!/bin/bash
#chkconfig:2345 20 90
#description:Zookeeper Service Control Script
ZK_HOME='/usr/local/zookeeper-3.5.7'
case $1 in
start)echo "---------- zookeeper 啟動 ------------"$ZK_HOME/bin/zkServer.sh start
;;
stop)echo "---------- zookeeper 停止 ------------"$ZK_HOME/bin/zkServer.sh stop
;;
restart)echo "---------- zookeeper 重啟 ------------"$ZK_HOME/bin/zkServer.sh restart
;;
status)echo "---------- zookeeper 狀態(tài) ------------"$ZK_HOME/bin/zkServer.sh status
;;
*)echo "Usage: $0 {start|stop|restart|status}"
esac
#拷貝寫好的zookeeper啟動腳本到其他兩臺節(jié)點(diǎn)服務(wù)器
[root@zk-kfk01 ~]# scp /etc/init.d/zookeeper 172.16.12.17:/etc/init.d/zookeeper
[root@zk-kfk01 ~]# scp /etc/init.d/zookeeper 172.16.12.18:/etc/init.d/zookeeper
設(shè)置開機(jī)自啟:
chmod +x /etc/init.d/zookeeper
chkconfig --add zookeeper
# 將 "zookeeper" 服務(wù)添加到系統(tǒng)的服務(wù)管理列表中,并且配置它在系統(tǒng)啟動時自動運(yùn)行
# 前提創(chuàng)建一個名為 "zookeeper" 的服務(wù)腳本(通常是放在 /etc/init.d/ 目錄下)
2.5 分別啟動 Zookeeper
zk-kfk01服務(wù)器、zk-kfk02服務(wù)器、zk-kfk03服務(wù)器依次分別啟動
#分別啟動 Zookeeper
service zookeeper start#查看當(dāng)前狀態(tài)
service zookeeper status
四、測試
1、定義 logstash 的配置文件
Logstash 配置文件基本由三部分組成:input、output 以及 filter(可選,根據(jù)需要選擇使用)
- input:表示從數(shù)據(jù)源采集數(shù)據(jù),常見的數(shù)據(jù)源如Kafka、日志文件等
- filter:表示數(shù)據(jù)處理層,包括對數(shù)據(jù)進(jìn)行格式化處理、數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)過濾等,支持正則表達(dá)式
- output:表示將Logstash收集的數(shù)據(jù)經(jīng)由過濾器處理之后輸出到Elasticsearch。
#格式:
input {...}
filter {...}
output {...}
#在每個部分中,也可以指定多個訪問方式。例如,若要指定兩個日志來源文件,則格式如下:
input {file { path =>"/var/log/messages" type =>"syslog"}file { path =>"/var/log/httpd/access.log" type =>"apache"}
}
設(shè)置 Logstash 配置文件,數(shù)據(jù)來源是kafak集群,logstash加工完數(shù)據(jù)后并將其輸出到 elasticsearch 中
[root@logstash ~]# cd /etc/logstash/conf.d/
[root@logstash conf.d]# vim kafka.conf
input {kafka {bootstrap_servers => "172.16.12.16:9092,172.16.12.17:9092,172.16.12.18:9092"
# kafka集群地址topics => "httpd" # 拉取的kafka的指定topictype => "httpd_kafka" # 指定 type 字段codec => "json" # 解析json格式的日志數(shù)據(jù)auto_offset_reset => "latest" # 拉取最近數(shù)據(jù),earliest為從頭開始拉取decorate_events => true # 傳遞給elasticsearch的數(shù)據(jù)額外增加kafka的屬性數(shù)據(jù)}
}output {if "access" in [tags] {elasticsearch {hosts => ["172.16.12.12:9200"]index => "httpd_access-%{+YYYY.MM.dd}"}}if "error" in [tags] {elasticsearch {hosts => ["172.16.12.12:9200"]index => "httpd_error-%{+YYYY.MM.dd}"}}stdout { codec => rubydebug }
}
[root@logstash conf.d]# logstash -f kafka.conf
# 啟動 logstash;或者 filebeat -e -c filebeat.yml &
2、查看所有的索引
客戶端瀏覽器先訪問apache服務(wù)器,否則無法有httpd_access索引
http://172.16.12.15/
生產(chǎn)黑屏操作es時查看所有的索引:
[root@es_node1 ~]# curl -X GET "localhost:9200/_cat/indices?v"
3、登錄 Kibana 添加索引?
瀏覽器訪問 http://172.16.12.12:5601,添加索引“httpd*”,查看圖表信息及日志信息
(1)添加索引“httpd_access-*”和“httpd_error-*”
(2)?查看圖表信息及日志信息