EL(F)K集羣日誌蒐集-Flume,Kakfa,ZK,ES,Kibana部署文檔

ELK解釋:ELK就是ElasticSearch + LogStash + Kibana的縮寫統稱。應用於互聯網 部署集羣的日誌蒐集與管理。

因公司需要,本公司用 flume替換了logstash, 這篇文章也可以叫做 EFK。 原理大同小異。

下面詳細說明各個部件的安裝部署和集成:

 

 

物理機部署分配

3臺物理機上部署 Zookeeper 3個,Flume 3個,Kafka 3個 (假定3臺物理機IP地址分別爲: IP1, IP2, IP3)

3臺物理界上部署 ES 3個, Kibana 1個 (假定3臺物理機IP地址分別爲: IP4, IP5, IP6)

另外,請修改各服務器的文件句柄數限制,比如從默認的 1024 修改爲 65535(建議值)!!

1. Zookeeper

配置3臺 版本:3.4.8

 

1 下載

zookeeper-3.4.8.tar.gz

 

2. 解壓

3. zookeeper目錄的conf目錄下創建zoo.cfg

# 心跳基本時間單位,毫秒級
tickTime=2000
# tickTime的個數,表示在leader選舉結束後,followers與leader同步需要的時間
initLimit=10
# tickTime的個數,表示與leader同步完畢之後,進入正常請求轉發或ping等消息交互時的超時時間。
syncLimit=5
# 快照等數據存儲目錄
dataDir=/home/app/program/zookeeper-3.4.8/data
# zookeeper服務端口
clientPort=2181
# 客戶端最大連接數。
maxClientCnxns=1024
# 數據目錄快照自動清理時保留快照的數量。默認是保留3個。
autopurge.snapRetainCount=3
# 數據目錄快照自動清理間隔。單位小時,默認0,表示不開啓清理功能。
autopurge.purgeInterval=1
# 集羣配置 集羣中機器的IP地址:集羣機器之間通信端口:集羣leader選舉端口
server.1=IP1:2888:3888
server.2=IP2:2888:3888
server.3=IP3:2888:3888

4.修改port,dataDir,和集羣節點的ip的配置信息

5.同樣安裝配置另外兩個節點

6.在每臺機器的zookeeper所配置的data目錄下,建立myid文件。使用myid爲當前機器分配一個編號。

  • IP1服務器上:
echo '1' > myid
  • IP2服務器上:
echo '2' > myid
  • IP3服務器上:
echo '3' > myid

6.每個節點分別執行 bin/zkServer.sh start 啓動

2. Kafka

1. 下載

kafka2.11.zip 
2. 解壓

3. 修改config/server.properties 注意修改其中的IP地址  粗體字尤其要注意修改

    必須修改的項:
        broker.id=51                                                             // 集羣中每個節點的id,要求唯一
        listeners=PLAINTEXT://IP:9092               // 格式:  PLAINTEXT://主機名(或地址):端口
        log.dirs=/data2/appdata/kafka-logs                      // 日誌(消息)保存地址, 要求配置在剩餘容量比較大的磁盤上
        zookeeper.connect=IP1:2181,IP2:2181,IP3:2181        // zookeeper集羣地址
        log.retention.hours=168                                          // 日誌保留時間,請修改爲 168小時(7天)

4. 同樣安裝配置另外兩個節點
5. 每個節點啓動Kakfa
bin/kafka-server-start.sh -daemon config/server.properties

6. 創建Flume用Kafka Topic

bin/kafka-topics.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --topic flume_kafka_channel_topic --create --partitions 1 --replication-factor 3

 

 

3. Kafka manager(Kafka Web管理工具)

Kafka manager 配置一臺即可, IP1, IP2, IP3中 任意一臺機器

1. 下載
kafka-manager-1.3.1.6.zip

2. 解壓
3. 配置修改 (無) 默認啓動在 9000 端口,請注意開放此端口
4. 啓動kafka manager
    進入解壓縮目錄,啓動

    nohup ./bin/kafka-manager &

使用 http://{IP}:9000 進入Kafka manager界面,找到 菜單 Cluster - Add Cluster, 添加 kafka所在的 zookeeper集羣。save後,即可查看kafka信息。

4. Flume

1. 下載

apache-flume-1.6.0.zip

2. 解壓

3. 修改config/flume-conf.properties

首先修改 flume的 channel 配置爲 kafka_channel
agent1.sources = source1
agent1.sinks = elasticsearch
agent1.channels = kafka_channel                                    // 修改flume的channel
agent1.sources.source1.type = avro
agent1.sources.source1.bind = 0.0.0.0
agent1.sources.source1.port = 44444

agent1.sources.source1.channels = kafka_channel      // 修改source的channel
agent1.sinks.elasticsearch.channel = kafka_channel   // 修改sink使用的channel

然後增加  kafka_channel 的配置項
agent1.channels.kafka_channel.type=org.apache.flume.channel.kafka.KafkaChannel                        // 增加此配置項
agent1.channels.kafka_channel.capacity=10000                                                                                     // 增加此配置項
agent1.channels.kafka_channel.transactionCapacity=1000                                                                    // 增加此配置項
agent1.channels.kafka_channel.brokerList=IP1:9092,IP2:9092,IP3:9092                         // 增加此配置項              修改爲3個kafka的 ip地址和端口,逗號分隔
agent1.channels.kafka_channel.topic=flume_kafka_channel_topic                                                                 // 增加此配置項
agent1.channels.kafka_channel.zookeeperConnect=IP1:2181,IP2:2181,IP3:2181     // 增加此配置項, 修改爲zookeeper集羣的 ip地址和端口,逗號分隔

以下爲elasticsearch這個sink的配置項
agent1.sinks.elasticsearch.type = com.frontier45.flume.sink.elasticsearch2.ElasticSearchSink
agent1.sinks.elasticsearch.hostNames = IP4:9300,IP5:9300,IP6:9300                              // ES集羣地址
agent1.sinks.elasticsearch.indexName = jumore_dev_log
agent1.sinks.elasticsearch.batchSize = 500
agent1.sinks.elasticsearch.indexType = messages
agent1.sinks.elasticsearch.clusterName = es-local
agent1.sinks.elasticsearch.ttl=7d                                                                                       // 保留7天
agent1.sinks.elasticsearch.serializer = com.frontier45.flume.sink.elasticsearch2.ElasticSearchDynamicSerializer
agent1.sinks.elasticsearch.indexNameBuilder = com.frontier45.flume.sink.elasticsearch2.SimpleIndexNameBuilder

4. 以下jar包放至Flume的lib目錄下
elasticsearch-sink2-1.0.jar

  20170421注:elasticsearch-sink2-1.0.jar已進行修改,現在svn上的jar包是修改過的新jar包

  修改內容:修改爲提交到elasticsearch的消息失敗時,爲性能考慮,捨棄這條消息
zookeeper-3.4.6.jar

5. 同樣安裝配置另外兩個節點

6. 各個節點啓動Flume

nohup bin/flume-ng agent --conf ./conf/ -f conf/flume-conf.properties -n agent1 &

4. ElasticSearch

請在IP4, IP5, IP6 3臺服務器上各配置一個ES

配置文件中:要求 cluster.name : es-local

其他參考其他集羣上的ES的要求進行配置,此處略。

5. Kibana

Kibana 配置一臺即可,IP4, IP5, IP6 中 任意一臺機器

1. 下載
kibana-4.5.4-linux-x64.tar.gz 
2. 解壓
3. 修改config/kibana.yml
    必須修改的項:(配置爲 提供查詢服務的其中一臺 ElasticSearch地址即可)
        elasticsearch.url: "http://IP4:9200"
4. 啓動kibana
    bin/kibana

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章