五台机器:
192.168.0.212 flume logstash nginx
192.168.0.213 kinaba
192.168.0.214 kafka zookeeper es
192.168.0.215 kafka zookeeper es
192.168.0.216 kafka zookeeper es
flume--kafka--logstash--es--kinaba
都得安装jdk(版本兼容问题要考虑)
--------------------------------------------------------------------------------------------------------
flume:
安装版本:apache-flume-1.7.0-bin
jdk版本:1.8.0_181
1.配置flume-env.sh,主要配置参数JAVA_HOME和JAVA_OPTS(这一步亲测过不起作用,还是以/etc/profile方式改java环境变量)
2.新建kafka-conf.properties(这个文件默认是没有的,这个文件名后面启动的时候会-f指定),上传至flume的apache-flume-1.7.0-bin/conf目录下,配置内容如下:
[root@psptwebpreweb11 conf]# cat kafka-conf.properties
#client
a1.channels=ch1
a1.sources=src1
a1.sinks=sk1
#define source monitor a logfile
a1.sources.src1.type=exec
a1.sources.src1.command=tail -F /data/jsp/log_producer/logs/producer.log
a1.sources.src1.channels=ch1
a1.channels.ch1.type=memory
a1.channels.ch1.capacity=10000
a1.channels.ch1.transactionCapacity=100
#define kafka receiver
a1.sinks.sk1.type=org.apache.flume.sink.kafka.KafkaSink
a1.sinks.sk1.brokerList=10.205.0.214:9092,10.205.0.215:9092,10.205.0.216:9092
a1.sinks.sk1.topic=my-replicated-topic
a1.sinks.sk1.serializer.class=kafka.serializer.StringEncoder
a1.sinks.sk1.channel=ch1
a1.sinks.sk1.batchSize=20
需要注意以下三个重要配置:
a1.sources.src1.command=tail -F /data/jsp/log_producer/logs/producer.log tail监听日志文件
a1.sinks.sk1.brokerList=ip1:9092,ip2:9092,ip3:9092 kafka集群配置
a1.sinks.sk1.topic=kafkatest flume向kafkatest主题push数据
(
touch /data/jsp/log_producer/logs/producer.log
for((i=0;i<=1000;i++));
do echo "kafka_test-"+$i>>/data/jsp/log_producer/logs/producer.log;
done
用这个命令生成日志文件配合测试kafka
)
启动agent的shell操作:
flume-ng agent -n a1 -c conf -f conf/kafka-conf.properties -Dflume.root.logger=DEBUG,console
上面命令虽然可以启动但是容易挂掉
亲测:nohup ./bin/flume-ng agent -n a1 -c conf -f conf/ng-kafka-conf.properties -Dflume.root.logger=DEBUG,console &
参数说明:
-n 指定agent名称(与配置文件中代理的名字相同) 即a1
-c 指定flume中配置文件的目录
-f 指定配置文件
-Dflume.root.logger=DEBUG,console 设置日志等级
jps查看启动进程名称application
--------------------------------------------------------------------------------------------------------
kafka:
安装版本:kafka_2.11-2.1.0
zookeeper(不建议用自带的zookeeper)
安装版本:zookeeper-3.4.13
在conf目录下cp zoo_sample.cfg zoo.cfg并且修改配置文件:
加入以下配置:
server.3=10.205.0.214:2888:3888
server.1=10.205.0.215:2888:3888
server.2=10.205.0.216:2888:3888
dataDir=/opt/zookeeper-3.4.13/data
上面3的配置每台机器都相同
dataDir这个配置路径下需要创建myid文件并且输入一个唯一标志必须和server后面的数字保持一致(每台机器不一样)命令:
echo 3 > /opt/zookeeper-3.4.13/data/myid
启动zk服务:
sh zkServer.sh start(每台机器挨个启动)
然后查看状态:sh zkServer.sh status
[root@psptwebpreweb09 bin]# sh zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: leader
表示安装正确(jps也可以看到进程)
kafka安装
更改配置文件server.properties:
broker.id=0
listeners=PLAINTEXT://10.205.0.214:9092
log.dirs=/tmp/kafka-logs
zookeeper.connect=10.205.0.214:2181,10.205.0.215:2181,10.205.0.216:2181
注意:
broker.id 每台机器不一样
listeners这个机器需要绑定本地的ip地址
其他配置一样
启动kafka进程:
./bin/kafka-server-start.sh -daemon config/server.properties 三台挨个启动
./kafka-topics.sh --create --zookeeper 10.205.0.214:2181,10.205.0.215:2181,191.10.205.0.216:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
创建一个topic(这个topic名称在flume配置文件里写入保持一致 这个参数:agent.sinks.sk1.topic=my-replicated-topic)
./bin/kafka-console-producer.sh --broker-list 10.205.0.214:9092 --topic my-replicated-topic
生产者测试
./bin/kafka-console-consumer.sh --bootstrap-server 10.205.0.215:9092 --topic ng-access --from-beginning
消费者测试
应该可看到flume的日志文件里的内容
--------------------------------------------------------------------------------------------------------
logstash
更改配置文件kafka-logstash-es.conf
input {
kafka {
bootstrap_servers => ["10.205.0.214:9092,10.205.0.215:9092,10.205.0.216:9092"]
group_id => "1"
topics => ["my-replicated-topic"]
consumer_threads => 5
decorate_events => true
codec => "json"
}
}
output {
elasticsearch {
hosts => ["10.205.0.214:9200","10.205.0.215:9200","10.205.0.216:9200"]
index => "logstash-%{[type]}-%{+YYYY.MM.dd}"
codec => "json"
}
}
启动方式:
nohup ./bin/logstash -f config/kafka-logstash-es.conf &
--------------------------------------------------------------------------------------------------------
es
安装版本:/opt/elasticsearch-6.7.0
不能用root用户启动es,所以创建一个普通用户useadd es
更改配置elasticsearch.yml
cluster.name:my-cluster (唯一)
node.name:node-1 (唯一)
path.data: /opt/elasticsearch-6.7.0/data
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
(这2个参数解决启动报错filter的问题)
network.host:10.205.0.214
discovery.zen.ping.unicast.hosts: ["10.205.0.214:9300","10.205.0.215:9300","10.205.0.216:9300"]
还有改如下配置解决启动报错句柄不够等问题:
[root@psptwebpreweb09 config]# tail -fn2 /etc/security/limits.conf
es hard nofile 65536
es soft nofile 65536
退出重新登录生效
[root@psptwebpreweb09 config]# tail -fn1 /etc/sysctl.conf
vm.max_map_count = 262144
sysctl -p生效
es后台启动方式 ./elasticsearch -d
jps查看启动进程
curl '10.205.0.214:9200/_cat/nodes?v' 查看集群节点状况
curl '10.205.0.215:9200/_cat/health?v' 查看集群健康状况
curl '10.205.0.214:9200/_cat/indices?v' 查看集群所有索引
curl -XGET 10.205.0.214:9200/_cat/shards?v
-----------------------------------------------------------------------------------
kibana安装
安装版本:kibana-6.7.0-linux-x86_64
配置文件kibana.yml:
server.port: 5601
server.host: "10.205.0.213"
elasticsearch.hosts: ["http://10.205.0.214:9200"]
kibana.index: ".kibana"
启动方式:
nohup ./bin/kibana &
查看进程:
ps aux | grep node
root 25413 83.4 3.3 1235868 131064 pts/0 Rl 19:30 0:04 ./bin/../node/bin/node --no-warnings --max-http-header-size=65536 ./bin/../src/cli
root 25450 0.0 0.0 103248 884 pts/0 S+ 19:30 0:00 grep node
浏览器访问地址:10.205.0.213:5601/app/kibana
######################################################
flume多监控点配置
[root@psptwebpreweb11 apache-flume-1.7.0-bin]# cat conf/ng-kafka-conf.properties
#client
a1.channels=ch1
a1.sources=src1
a1.sinks=sk1
#define source monitor a logfile
a1.sources.src1.type=exec
a1.sources.src1.command=tail -F /usr/local/nginx/logs/access.log
a1.sources.src1.channels=ch1
a1.channels.ch1.type=memory
a1.channels.ch1.capacity=10000
a1.channels.ch1.transactionCapacity=100
#define kafka receiver
a1.sinks.sk1.type=org.apache.flume.sink.kafka.KafkaSink
a1.sinks.sk1.brokerList=10.205.0.214:9092,10.205.0.215:9092,10.205.0.216:9092
a1.sinks.sk1.topic=ng-acc
a1.sinks.sk1.serializer.class=kafka.serializer.StringEncoder
a1.sinks.sk1.channel=ch1
a1.sinks.sk1.batchSize=20
#---------------------------------------------
#client
a1.channels=ch2
a1.sources=src2
a1.sinks=sk2
#define source monitor a logfile
a1.sources.src2.type=exec
a1.sources.src2.command=tail -F /usr/local/nginx/logs/error.log
a1.sources.src2.channels=ch2
a1.channels.ch2.type=memory
a1.channels.ch2.capacity=10000
a1.channels.ch2.transactionCapacity=100
#define kafka receiver
a1.sinks.sk2.type=org.apache.flume.sink.kafka.KafkaSink
a1.sinks.sk2.brokerList=10.205.0.214:9092,10.205.0.215:9092,10.205.0.216:9092
a1.sinks.sk2.topic=ng-err
a1.sinks.sk2.serializer.class=kafka.serializer.StringEncoder
a1.sinks.sk2.channel=ch2
a1.sinks.sk2.batchSize=20