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