环境部署:
es1-192.168.120.128-Elasticsearch5.6/zookeeper2.11-1.1.0/kafka_2.11-1.1.0
es2-192.168.120.129-Elasticsearch5.6/zookeeper2.11-1.1.0/kafka_2.11-1.1.0
es3-192.168.120.130-Elasticsearch5.6/zookeeper2.11-1.1.0/kafka_2.11-1.1.0
logstash-192.168.120.131-Logstash5.6.9
kibana-192.168.120.132-kibana5.6.9
filebeat-192.168.120.133-Filebeat5.6.7
环境说明:需要关闭防火墙
[root@es-1 ~]# systemctl stop firewalld
[root@es-1 ~]# systemctl disable firewalld
软件包链接:
链接:https://pan.baidu.com/s/1sQ5fcfWXPMT1pHiSEgQ2Vg
提取码:durp
1、安装java
[root@es-1 ~]# yum install -y java-1.8.0
[root@es-1 ~]# java -version
2、下载安装kafka****(kafka_2.11-1.1.0****)
[root@es-1 ~]# cd /opt/elk/
[root@es-1 elk]# ls
kafka_2.11-1.1.0.tgz
[root@es-1 elk]# tar -xvf kafka_2.11-1.1.0.tgz
3、配置zookeeper
[root@es-1 ~]# mkdir /opt/elk/kafka/zookeeper/{data,logs} -p
[root@es-1 ~]# echo 1 > /opt/elk/kafka/zookeeper/data/myid #集群其他服务器需要改动
[root@es-1 ~]# cd /opt/elk/kafka_2.11-1.1.0/config/
[root@es-1 config]# vim zookeeper.properties
#客户端连接端口
maxClientCnxns=0
#zk存放数据的目录,zk 需要有一个叫做myid的文件也是放到(必须)这个目录下
dataDir=/opt/elk/kafka/zookeeper/data
dataLogDir=/opt/elk/kafka/zookeeper/logs
clientPort=2181
#最大客户端连接数
maxClientCnxns=20
#是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔
tickTime=2000
#此配置表示,允许follower(相对于Leaderer言的“客户端”)连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
initLimit=10
#此配置项表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
syncLimit=5
#server.myid=ip:followers_connect to the leader:leader_election # server 是固定的,myid 是需要手动分配,第一个端口是follower是链接到leader的端口,第二个是用来选举leader 用的port
server.1=192.168.120.128:2888:3888
server.2=192.168.120.129:2888:3888
server.3=192.168.120.130:2888:3888
4、配置kafka
[root@es-1 ~]# cd /opt/elk/kafka_2.11-1.1.0/config/
[root@es-1 config]# vim server.properties
#每个server需要单独配置broker id,如果不配置系统会自动配置。
broker.id=0 ##集群其他服务器需要改动
#消费者的访问端口,logstash或者elasticsearch
listeners=PLAINTEXT://192.168.120.128:9092 ##集群其他服务器需要改动
#接收和发送网络信息的线程数
num.network.threads=3
#服务器用于处理请求的线程数,其中可能包括磁盘I/O。
num.io.threads=8
#套接字服务器使用的发送缓冲区(SO_SNDBUF)
socket.send.buffer.bytes=102400
#套接字服务器使用的接收缓冲区(SO_RCVBUF)
socket.receive.buffer.bytes=102400
#套接字服务器将接受的请求的最大大小(防止OOM)。
socket.request.max.bytes=104857600
#以逗号分隔的目录列表,其中存储日志文件。
log.dirs=/usr/local/kafka/logs #此目录要先创建,不会自动创建。(如果不行就关闭此选项)
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
zookeeper.connect=192.168.120.128:2181,192.168.120.129:2181,192.168.120.130:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@es-1 ~]# mkdir -p /usr/local/kafka/logs/
5、配置集群其他节点
打包es1的/opt/elk目录
[root@es1 opt]# for i in {129,130}
> do
> scp /opt/elk.tar [email protected].$i:/opt/
> done
es2、es3解压/opt/elk.tar,修改zookeeper的myid,kafka的broker.id和listeners
6、启动kafka 集群(顺序是先启动zk ,然后再启动kafka )
①启动zk(如果启动失败,则有可能配置文件出错)
[root@es-1 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/zookeeper-server-start.sh zookeeper.properties >>/dev/null 2>&1 &
[root@es-2 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/zookeeper-server-start.sh zookeeper.properties >>/dev/null 2>&1 &
[root@es-3 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/zookeeper-server-start.sh zookeeper.properties >>/dev/null 2>&1 &
②验证是否正确
[root@es-1 ~]# yum -y install nc
\#使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。
[root@es-1 ~]# echo ruok|nc 127.0.0.1 2181
imok[root@es-1 ~]#
[root@es-1 ~]# echo conf | nc 127.0.0.1 2181
clientPort=2181
dataDir=/opt/elk/kafka/zookeeper/data/version-2
dataLogDir=/opt/elk/kafka/zookeeper/logs/version-2
tickTime=2000
maxClientCnxns=20
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=1
initLimit=10
syncLimit=5
electionAlg=3
electionPort=3888
quorumPort=2888
peerType=0
echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader
echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。
echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。
echo kill | nc 127.0.0.1 2181 ,关掉server
echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。
echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。
echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。
echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。
echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。
echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相
③启动kafka
[root@es-1 ~]#nohup /opt/elk/kafka_2.11-1.1.0/bin/kafka-server-start.sh /opt/elk/kafka_2.11-1.1.0/config/server.properties >>/dev/null 2>&1 &
[root@es-2 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/kafka-server-start.sh /opt/elk/kafka_2.11-1.1.0/config/server.properties >>/dev/null 2>&1 &
[root@es-3 ~]# nohup /opt/elk/kafka_2.11-1.1.0/bin/kafka-server-start.sh /opt/elk/kafka_2.11-1.1.0/config/server.properties >>/dev/null 2>&1 &
④检测kafka
[root@es-1 bin]# /opt/elk/kafka_2.11-1.1.0/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
Created topic "test".
[root@es-1 ~]# /opt/elk/kafka_2.11-1.1.0/bin/kafka-topics.sh --zookeeper 192.168.205.155:2181 --list
test
1、安装java
[root@es-1 ~]# yum install -y java-1.8.0
[root@es-1 ~]# java -version
2、导入Elasticsearch PGP密钥
[root@es-1 ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
3、建立rpm包的repo
[root@es-1 ~]# vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
4、安装elasticsearch
[root@es-1 ~]# yum -y install elasticsearch
5、编辑配置文件(省略号代表有其他内容,但是不用修改)
[root@es-1 ~]# vim /etc/elasticsearch/elasticsearch.yml
# ---------------------------------- Cluster -----------------------------------
…………
#cluster.name: my-application
cluster.name: ELK #起名三个节点要一致
…………
# ------------------------------------ Node ------------------------------------
…………
#node.name: node-1
node.name: es-1 #节点名:三个节点不一致
…………
# ---------------------------------- Network -----------------------------------
……
#network.host: 192.168.0.1
network.host: 192.168.120.128 #当前IP地址
#
# Set a custom port for HTTP:
#http.port: 9200 #端口号:默认9200
……
# --------------------------------- Discovery ----------------------------------
…………
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
discovery.zen.ping.unicast.hosts: ["192.168.120.128","192.168.120.129","192.168.120.130"]
#集群节点IP地址
…………
6、启动、添加开机自启
[root@es-1 ~]# systemctl daemon-reload #重载所有修改过的配置文件(刷新配置)
[root@es-1 ~]# systemctl start elasticsearch #开启服务
[root@es-1 ~]# systemctl enable elasticsearch #设置开机自启动
[root@es-1 ~]# systemctl status elasticsearch #检查状态
7、查看端口状态
[root@es-1 ~]# netstat -ntlt
tcp6 0 0 192.168.205.155:9200 :::* LISTEN
tcp6 0 0 192.168.205.155:9300 :::* LISTEN
#9200是默认端口
#9300是集群通信端口
8、其他节点配置(es2、es3)
和es-1步骤相同。不同之处为配置文件node.name:、network.host:
9、相关命令
检查Elasticsearch是否运行
[root@es-1 ~]# curl -X GET "192.168.120.128:9200/"
查询集群状态
[root@es-1 ~]# curl -XGET 'http://192.168.120.128:9200/_cat/nodes' #任选一台机器执行
#带*号的是自动选举出来的master
[root@es-1 ~]# curl -XGET 'http://192.168.120.128:9200/_cat/nodes?v'
[root@es-1 ~]# curl -XGET 'http://192.168.120.128:9200/_cluster/state/nodes?pretty'
{
"cluster_name" : "ELK", #名字
"nodes" : {
"fkzXpqmxTkCFdYOUqkWw4g" : { #ID值
"name" : "es-3", #node名字
"ephemeral_id" : "c0tVVqFvRUq9vBY0FAGW2Q", #id
"transport_address" : "192.168.205.157:9300", #集群通讯地址
"attributes" : { }
},
"4ZbLhzt6Q5GK4kyICnYWHg" : { #ID值
"name" : "es-2", #node名字
"ephemeral_id" : "E28qTcY_QxWHuZkENO9-gQ", #id
"transport_address" : "192.168.205.156:9300", #集群通讯地址
"attributes" : { }
},
"SVXe8qm9RACCRl1Zb1qs8w" : { #ID值
"name" : "es-1", #node名字
"ephemeral_id" : "w19b7MK_RO221SrwarV8Cg", #id
"transport_address" : "192.168.205.155:9300", #集群通讯地址
"attributes" : { }
}
}
}
查询集群中的master
[root@es-1 ~]# curl -XGET 'http://192.168.120.128:9200/_cluster/state/master_node?pretty'
[root@es-1 ~]# curl -XGET 'http://192.168.120.128:9200/_cat/master?v'
查询集群的健康状态
[root@es-1 ~]# curl -XGET 'http://192.168.120.128:9200/_cat/health?v'
[root@es-1 ~]# curl -XGET 'http://192.168.120.128:9200/_cluster/health?pretty'
10、相关文件路径
/etc/elasticsearch/elasticsearch.yml —主配置文件
/etc/elasticsearch/jvm.options —jvm参数配置文件
/etc/elasticsearch/log4j2.properties ----日志配置文件
/etc/sysconfig/elasticsearch —系统配置文件
/usr/share/elasticsearch/bin —二进制脚本文件
/var/lib/elasticsearch —在节点上分配的每个索引/分片的数据文件的位置。
/var/log/elasticsearch —日志文件位置
/usr/share/elasticsearch/plugins —插件目录
/etc/elasticsearch/scripts —脚本文件位置
1、安装java
[root@logstash ~]# yum install -y java-1.8.0
[root@logstash ~]# java -version
2、导入Elasticsearch PGP密钥
[root@ logstash ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
3、建立rpm包的repo
[root@ logstash ~]# vim /etc/yum.repos.d/logstash.repo
[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
4、安装logstash
[root@logstash ~]# yum -y install logstash
5、添加配置文件logstash.conf (只是简单配置看出效果,后续更新使用)
[root@logstash ~]# cd /etc/logstash/conf.d/
[root@logstash conf.d]# vim logstash.conf #新增配置文件logstash.conf,文件名可自己定义
input {
kafka {
bootstrap_servers => "192.168.120.128:9092,192.168.120.129:9092,192.168.120.130:9092"
topics => ["credit"] ##和filebeat配置文件对应的
# group_id => "test-consumer-group"
# codec => "plain"
# consumer_threads => 1
decorate_events => true
}
}
output {
elasticsearch {
hosts => ["192.168.120.128:9200","192.168.120.129:9200","192.168.120.130:9200"]
index => "logs-%{+YYYY.MM.dd}"
workers => 1
}
}
6、启动、添加开机自启
[root@logstash ~]# systemctl start logstash
[root@logstash ~]# systemctl enable logstash
[root@logstash ~]# systemctl status logstash
7、检测配置文件是否正确(出现OK正确)
[root@logstash ~]# /usr/share/logstash/bin/logstash -t --path.settings /etc/logstash/ --verbose
Sending Logstash's logs to /var/log/logstash which is now configured via log4j2.properties
Configuration OK
1、导入kabana 密钥
[root@ kibana ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2、建立rpm 包的repo
[root@ kibana ~]# vim /etc/yum.repos.d/kibana.repo
[kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
3、安装kibana
[root@kibana ~]# yum -y install kibana
4、修改配置文件/etc/kibana/kibana.yml
[root@kibana ~]# vim /etc/kibana/kibana.yml
# Kibana is served by a back end server. This setting specifies the port to use.
#server.port: 5601 ##默认端口
…………
#server.host: "localhost"
server.host: "192.168.120.132" #本机IP
…………
#elasticsearch.url: "http://localhost:9200"
elasticsearch.url: http://192.168.120.128:9200#es的地址
…………
5、启动、添加开机自启
[root@kibana ~]# systemctl start kibana
[root@kibana ~]# systemctl enable kibana
[root@kibana ~]# systemctl status kibana
6、添加nginx 反向代理
[root@kibana ~]# yum -y install epel-release
[root@kibana ~]# yum -y install nginx httpd-tools
7、更改nginx 配置文件(删除默认的配置文件,之后重新编写自己的配置文件)
[root@kibana ~]# vim /etc/nginx/nginx.conf
[root@kibana ~]# cd /etc/nginx/conf.d/
[root@kibana conf.d]# vim kibana.conf
server {
listen 80;
server_name kibana;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/kibana-user;
location / {
proxy_pass http://192.168.205.161:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
8、生成页面登录用户认证文件
[root@kibana ~]# htpasswd -cm /etc/nginx/kibana-user kibana
New password:
Re-type new password:
Adding password for user kibana
9、启动、开机自启动
[root@kibana ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@kibana ~]# systemctl start nginx
[root@kibana ~]# systemctl enable nginx
[root@kibana ~]# systemctl status nginx
10、浏览器登录kibana