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

你可能感兴趣的:(Linux,系统日志,Elasticsearch)