一、系统环境
Linux(小红帽)、jdk1.8
二、下载安装包
1、下载filebeat
下载:https://www.elastic.co/cn/downloads/beats/filebeat
现在最新的是:filebeat-7.3.0-linux-x86_64.tar
2、下载kafka
下载地址:http://kafka.apache.org/downloads.html
我们下载第二种(已经被编译过的),将安装包存在在 /software/ 下
3、下载logstach
下载地址:https://www.elastic.co/cn/downloads/logstash
现在最新的是:logstash-7.3.0.tar
4、下载elasticsearch
下载地址:https://www.elastic.co/cn/downloads/elasticsearch
现在最新的是:elasticsearch-7.2.1-linux-x86_64.tar
三、安装filebeat
将安装包放在自己喜欢的目录即可
我放在/opt/collectlog/
1、解压
[root@omsdev /opt/collectlog]# tar -xvf filebeat-7.3.0-linux-x86_64.tar
2、配置
配置/opt/collectlog/filebeat-7.3.0-linux-x86_64/filebeat.yml文件,可以修改此文件,也可以自己新建一个.yml文件,比如我filebeat的输出端是kafka,则新建一个kafkabeat.yml将filebeat.yml中的内容复制过来进行修改即可;
本文没有新建,直接修改filebeat.yml,修改两处地方
第一处修改inputs(输入)
第二处修改outputs(输出)
到此为止filebeat安装配置完成
3、启动(等kafka安装配置启动完了在启动filebeat)
[root@omsdev /opt/collectlog/filebeat-7.3.0-linux-x86_64]# ./filebeat -e -c filebeat.yml -d "publish"
命令上的filebeat.yml是我们配置的文件,如果你是新建的配置文件则这里用新建的文件即可
四、安装kafka
将安装包放在自己喜欢的目录即可
我放在/opt/collectlog/
1、解压
[root@omsdev /opt/collectlog]# tar -xvf kafka_2.12-2.3.0.tar
2、配置
1)修改server.properties (/opt/collectlog/kafka_2.12-2.3.0/config)
#broker的全局唯一编号,不能重复
broker.id=0
#如果是虚拟机的话此处需要配置自己的IP和端口
listeners=PLAINTEXT://10.15.32.20:9092
#日志输出的地方
log.dirs=/tmp/kafka-logs
#kafka启动需要zookeeper,我们这用自带的
zookeeper.connect=10.15.32.20:2181
2)修改producer.properties
bootstrap.servers=10.15.32.20:9092
3)修改consumer.properties
bootstrap.servers=10.15.32.20:9092
还有好多配置参考这位的:https://blog.csdn.net/Poppy_Evan/article/details/79415460
3、启动服务
运行kafka需要使用Zookeeper,所以你需要先启动Zookeeper,如果你没有Zookeeper,你可以使用kafka自带打包和配置好的Zookeeper。
[root@omsdev /opt/collectlog/kafka_2.12-2.3.0]# bin/zookeeper-server-start.sh config/zookeeper.properties
现在启动kafka服务
[root@omsdev /opt/collectlog/kafka_2.12-2.3.0]# bin/kafka-server-start.sh config/server.properties &
4、创建一个主题(topic)
创建一个名为“test”(和你在filebeat一致)的Topic,只有一个分区和一个备份:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
主意:如果出现一下错误
WARN [Consumer clientId=consumer-1, groupId=console-consumer-77210] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
将localhost换为你的机器IP,也就是server.properties中配置的IPlisteners=PLAINTEXT://10.15.32.20:9092
创建好之后,可以通过运行以下命令,查看已创建的topic信息:
bin/kafka-topics.sh --list --zookeeper localhost:2181
5、发送消息
Kafka提供了一个命令行的工具,可以从输入文件或者命令行中读取消息并发送给Kafka集群。每一行是一条消息。
运行producer(生产者),然后在控制台输入几条消息到服务器。
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message
主意:如果出现一下错误
WARN [Consumer clientId=consumer-1, groupId=console-consumer-77210] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
将localhost换为你的机器IP,也就是server.properties中配置的IPlisteners=PLAINTEXT://10.15.32.20:9092
6、Kafka也提供了一个消费消息的命令行工具,将存储的信息输出出来。
> bin/kafka-console-consumer.sh --bootstrap-server localhsot:9092 --topic test --from-beginning
This is a message
This is another message
五、验证filebeat是否和kafka联通
经过上面的步骤kafka服务已经起来了,filebeat还没有启动;
1、准备filebeat输入的数据
新建.log文件到filebeat.yml配置的目录下内容随便,本文测试内容为: 2017-11-09T15:18:05+08:00|~|127.0.0.1|~|-|~|hy_xyz|~|200|~|0.002
2、启动filebeat
[root@omsdev /opt/collectlog/filebeat-7.3.0-linux-x86_64]# ./filebeat -e -c filebeat.yml -d "publish"
3、在kafka中查看,查看方式用kafka消费消息的命令行
[root@omsdev /opt/collectlog/kafka_2.12-2.3.0]# bin/kafka-console-consumer.sh --bootstrap-server 10.15.32.20:9092 --topic test --from-beginning
This is a message
This is another message
{"@timestamp":"2019-08-02T05:48:55.596Z","@metadata":{"beat":"filebeat","type":"_doc","version":"7.3.0","topic":"test"},"log":{"offset":0,"file":{"path":"/opt/collectlog/testlog/test.log"}},"message":"2017-11-09T15:18:05+08:00|~|127.0.0.1|~|-|~|hy_xyz|~|200|~|0.002","input":{"type":"log"},"agent":{"version":"7.3.0","type":"filebeat","ephemeral_id":"b8d0688f-0001-4020-8620-4d5dafcdcb82","hostname":"omsdev","id":"94cee931-8e7c-46d5-9696-7b928feb4368"},"ecs":{"version":"1.0.1"},"host":{"id":"c352ba6808ff408195ab53d9abf5e854","name":"omsdev","containerized":false,"hostname":"omsdev","architecture":"x86_64","os":{"version":"7 (Core)","family":"redhat","name":"CentOS Linux","kernel":"3.10.0-862.el7.x86_64","codename":"Core","platform":"centos"}}}
This is a message
This is another message
这两句是我已命令发送进去的数据,第三局json格式是解析处.log中的数据,其中message的值为原值
出现以上信息则证明filebeat和kafka通了
六、安装logstash
将安装包放在自己喜欢的目录即可
我放在/opt/collectlog/
1、解压
[root@omsdev /opt/collectlog]# tar -xvf logstash-7.3.0.tar
2、启动测试(-e启动)
[root@omsdev /opt/collectlog/logstash-7.3.0]# ./logstash -e 'input { stdin{} } output { stdout{} }'
-e
参数允许我们在命令行中直接输入配置,而不同通过-f
参数指定配置文件
启动完后输入hello world,回车
hello World
2018-09-13T01:45:28.703Z localhost hello World
ogstash会加上日期和主机名(IP)输出到终端。这就是Logstash最基本的工作模式,接受输入,然后将信息加工后放入到输出。
以上测试完成,直接kill掉就行(我们这里不能-e启动,而需要-f配置启动)
3、配置
在/opt/collectlog/logstash-7.3.0目录下新建文件first-pipeline.conf并编辑
#inputs
input{
kafka{
bootstrap_servers => "10.15.32.20:9092"
topics => "test"
group_id => "zxj"
}
}
# the filter
#outputs
output {
elasticsearch {
hosts => ["10.15.32.20:9200"]
index => "logstash-%{+YYYY.MM.dd}"
}
}
index => "logstash-%{+YYYY.MM.dd}" # es中保存的索引
过滤器以后补
4、启动logstash(-f配置启动)
bin/logstash -f first-pipeline.conf --config.reload.automatic --path.data=/home/hadoop/logstash
--path.data=/home/hadoop/logstash是指存放数据的路径
七、安装elasticsearch
将安装包放在自己喜欢的目录即可
我放在/opt/collectlog/
1、解压
[root@omsdev /opt/collectlog]# tar -xvf elasticsearch-7.2.1-linux-x86_64.tar
2、创建用户,elasticsearch不允许root用户启动
useradd ela
passwd ela
chown -R ela /opt/collectlog/elasticsearch-7.2.1
--切换用户
su ela
3、用新用户启动
[ela@omsdev /opt/collectlog/elasticsearch-7.2.1]# sh bin/elasticsearch
4、遇到的错误(修改配置用root用户)
1)http://ip:9200/ 无法访问
vim config/elasticsearch.yml
# 增加
network.host: 0.0.0.0
2) bootstrap checks failed
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
vi /etc/security/limits.d/90-nproc.conf
修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 4096
3)bootstrap checks failed
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
vi /etc/security/limits.conf
添加
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
vi /etc/sysctl.conf
添加
vm.max_map_count=655360
最后
sysctl -p
4)bootstrap checks failed
[1]the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
[2]system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
[3] the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
修改elasticsearch.yml配置
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
取消注释保留一个节点cluster.initial_master_nodes: ["node-1"]
最后用新建用户重启