架构图:
备注:图片因为格式都没有显示,本身是都有的,这里的IP 是随便写了个10.168.0.0代替所有需要用的IP。
参考文档
https://blog.csdn.net/weixin_41047933/article/details/82699823
https://www.cnblogs.com/chenjw-note/articles/10880637.html
https://www.cnblogs.com/tonglin0325/p/9044674.html
https://blog.csdn.net/weixin_41047933/article/details/82699823
https://blog.csdn.net/miss1181248983/article/details/89384990#commentBox
一:安装JDK(server,client)(jdk版本在1.8.0_131及以上版本)
- 将提前下载好的jdk-8u151-linux-x64.rpm 上传到/usr/local
- 配置JAVA环境变量 # vi + /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_141
JRE_HOME=/usr/java/jdk1.8.0_141/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
立即生效环境变量:
source /etc/profile
验证:
echo $JAVA_HOME
/usr/java/jdk1.8.0_141
以上部分为设备的基础配置,接下来我们开始安装ELK各个部件
注意:安装组件版本要一致!!!
二:先安装elasticsearch6.8.1,5台Centos7.2服务器。
1.下载elasticsearch6.8.1,并分别上传到5台服务器上。
我的版本为elasticsearch6.8.1,并放在 /opt 目录下。root用户个es用户添加操作访问elasticsearch的权限
chown -R es:es elasticsearch-6.8.1.rpm
2.我用的rpm包安装的,其他的安装方法各不相同(比如编译安装或者yum安装,因为每个安装里面的配置相关路径不同)
rpm -ivh elasticsearch-6.8.1.rpm
CentOS 7 rpm -i 时 警告warning: /var/tmp/rpm-tmp.z7O820: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY 解决方法
这是由于yum安装了旧版本的GPG keys造成的,解决办法就是 运行下面命令即可
rpm --import /etc/pki/rpm-gpg/RPM*
查询已安装的rpm源
rpm -qa | grep elasticsearch
elasticsearch-6.8.1-1.noarch
删除源
rpm -e elasticsearch
重新安装
rpm -ivh elasticsearch-6.8.1.rpm
查看rpm把elasticsearch安装到了哪里
注:一般/etc/elasticsearch的是配置文件, /opt/elasticsearch是刚才上传的rpm包,/usr/share/elasticsearch才是安装的目录.
-
建立elasticsearch账号因为root不能启动elasticsearch服务。
我建立的账号为es,输入命令:
useradd -r -m es
默认家目录是/home/es 。用户的切换命令为:su[空格]es 从root切换到普通用户es我把elasticsearch的数据目录和日志目录都放在 /data/es 目录下。在 /data/es 目录下建立data 文件夹和 log文件夹。(这里是自定义的根据你的配置文件可以修改)
修改vi /etc/sudoers 添加es创建相关目录
mkdir -pv /data/es/{data,log} - 核心步骤,编辑 vi /etc/elasticsearch/elasticsearch.yml 文件,一共要修改5处地方。
- 查找 “cluster.name”,把注释去掉。这是集群的名称,自定义一个即可,以我的为例,我将其定为 “es-cluster”。注意的是5台机的集群名称必须相同。
- 查找 “node.name”,把注释去掉。这是节点名,也是自定义即可,以我的为例,节点1为“es-1”,节点2为“es-2”, 节点3为“es-3” N多个节点依此操作。
- 查找 “path.data” 和 “path.log”。把注释去掉。这是定义数据目录和日志目录。把上面建立的数据目录路径和日志目录路径写上即可。
- 查找 “discovery.zen.ping.unicast.hosts”。把注释去掉。这是填写在这个集群内各个机器的ip或别名。我的因为在hosts已经配置了别名,所以我填写的是别名。
- 查找 “discovery.zen.minimum_master_nodes”。把注释去掉。这是定义有几台master机器,我自己是定义有3台机器作为master。
注意:每一个配置项,冒号后边一定要留个空格!
cluster.name: es-cluster #集群名称,只有es-cluster相同时,节点才能加入集群。请设置为具有描述性的名字。不建议在不同环境中使用相同的集群名。
node.name: es-1 #节点描述名称,默认情况下,Elasticsearch将使用随机生成的UUID的前7个字符作为节点id。设为服务器的主机名 node.name: ${HOSTNAME}
node.attr.rack: r1 #指定节点的部落属性,机架位置,比集群范围更大。
path.data: /var/lib/elasticsearch #Elasticsearch的数据文件存放目录 如果是默认位置,在将Elasticsearch升级到新版本时,很可能会把数据删除。(建议修改)
path.logs: /var/log/elasticsearch #日志目录。(建议修改)
bootstrap.memory_lock: true #启动后锁定内存,禁用swap交换,提高ES性能。
network.host: 10.168.0.0 #指定监听的地址
http.port: 9200 #监听的WEB端口
discovery.zen.ping.unicast.hosts: ["IP:9300"]: #默认网络配置中,Elasticsearch将绑定到回环地址,并扫描9300-9305端口,试图连接同一台服务器上的其他节点,可以自动发现并加入集群。- 10.168.0.0:9300 #此端口为TCP传输端口,用于集群内节点发现、节点间信息传输、ES Java API也是通过此端口传输数据,transport.tcp.port定义。9200为HTTP端口。
- host1.vtlab.io
discovery.zen.minimum_master_nodes: 2 #为防止数据丢失,discovery.zen.minimum_master_nodes设置至关重要,主节点的最小选举数。避免脑裂,应将此值设为(master_eligible_nodes / 2) + 1,换言之,如果有3个节点,(3/2)+1 or 2
修改相关权限
chown -R es:es /etc/elasticsearch/
chown -R es:es /usr/share/elasticsearch/
chgrp -R es /etc/elasticsearch/
chgrp -R es /etc/sysconfig/elasticsearch
数据和日志
chown -R es:es /data/es/
chgrp -R es /data/es/
修改es启动占用的内存空间(云主机一般不需要)
解释:默认情况下,es启动互检测内存2G,对云主机内存不足的情况有所限制,虚拟机更需要修改,需要修改占用的内存空间
修改es根目录下config目录的jvm.options
vi /etc/elasticsearch/jvm.options
4.启动elasticsearch服务
cd /usr/share/elasticsearch/
./bin/elasticsearch –d
ERROR: bootstrap checks failed
接着报:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
修改几个参数:
vi /etc/security/limits.conf
在末尾追加以下内容(es为启动用户,当然也可以指定为*)
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
* soft memlock unlimited
* hard memlock unlimited
继续再修改一个参数
vim /etc/security/limits.d/90-nproc.conf
将里面的1024改为2048(ES最少要求为2048)
* soft nproc 2048
ERROR: bootstrap checks failed
memory locking requested for elasticsearch process but memory is not locked
vim /etc/security/limits.conf
- soft memlock unlimited
- hard memlock unlimited
备注:* 代表Linux所有用户名称
保存、退出、重新登录才可生效
临时取消限制
ulimit -l unlimited
报错解决相关文档链接
https://blog.csdn.net/Hey_WonderfulWorld/article/details/73612929
重启服务器后重新启动elasticsearch服务,无报错。
检验:curl http://10.168.0.0:9200
5.查看集群
查看集群健康状态:
查看master
安装head
因为head插件是用node.js开发的,所以需要此环境。
tar -Jxf node-v10.16.0-linux-x64.tar.xz
mv node-v10.16.0-linux-x64/ /usr/local/node
vim /etc/profile
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules:$PATH
source /etc/profile
检验
node -v
安装head插件:
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
unzip master.zip && mv elasticsearch-head-master/ /usr/local/elasticsearch-head
cd /usr/local/elasticsearch-head
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g grunt-cli
cnpm install -g grunt
cnpm install grunt-contrib-clean
cnpm install grunt-contrib-concat
cnpm install grunt-contrib-watch
cnpm install grunt-contrib-connect
cnpm install grunt-contrib-copy
cnpm install grunt-contrib-jasmine #若报错就再执行一遍
修改head的连接地址 elasticsearch-head/_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
localhost改为自己的ip
vim /usr/local/elasticsearch-head/Gruntfile.js
#找到下面connect属性,新增 hostname: '0.0.0.0',
connect: {
server: {
options: {
hostname: '*', #不要忘了后面的逗号
port: 9100,
base: '.',
keepalive: true
}
}
}
修改服务器的监听地址elasticsearch-head/Gruntfile.js
connect: {
server: {
options: {
port: 9100,
base: '.',
keepalive: true
}
}
}
options中添加 hostname: '*'
后台启动grunt server
cd /usr/local/elasticsearch-head
nohup grunt server &
eval "cd /usr/local/elasticsearch-head/ ; nohup npm run start >/dev/null 2>&1 & "
打开浏览器访问10.168.0.0:9100,可以看到head页面
三.安装kibana
rmp -ivh kibana-6.8.1-x86_64.rpm
vim /etc/kibana/kibana.yml
server.port: 5601
server.host: 10.168.0.0
elasticsearch.url: ["http://10.168.0.0:9200","http://10.168.0.0:9200","http://10.168.0.0:9200","http://10.168.0.0:9200","http://10.168.0.0:9200"]
logging.dest: /data/kibana/log/kibana.log
创建日志文件:
[root@master-node ~]# mkdir /data/kibana/log
[root@master-node ~]# touch /data/kibana/log/kibana.log
启动kibana服务,并检查进程和监听端口:
先到相关目录里面
关闭需要先查端口之后kill 相关进程(这里注意不要直接杀node进程,因为es也有用到)
登陆页面
配置用户密码登陆
相关文章:https://blog.51cto.com/10950710/2334528?source=dra
Kibana配置索引
四.安装logstash
警告问题解决(这个警告之后日志采集会有用到所以要处理)
安装完之后,先不要启动服务,先配置logstash收集syslog日志:(这里的配置是查看是否可以收集日志,之后需要根据服务相关的日志格式采集而自定义配置)
基本格式模板
input { # 定义日志源
syslog {
type => "system-syslog" # 定义类型
port => 10514 # 定义监听端口
}
}
output { # 定义日志输出
stdout {
codec => rubydebug # 将日志输出到当前的终端上显示
}
}
检测配置文件是否有错
输出ok 代表没有问题
相关文档链接:http://www.51niux.com/?id=203
五:安装zookeeper
下载链接:http://archive.apache.org/dist/zookeeper/
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz
使用tar解压要安装的目录即可
这里以解压到/usr/local,实际安装根据自己的想安装的目录修改(注意如果修改,那后边的命令和配置文件中的路径都要相应修改)
tar xf apache-zookeeper-3.5.5-bin.tar.gz -C /usr/local/
cd /usr/local/ && mv apache-zookeeper-3.5.5-bin /usr/local/zookeeper
添加环境变量:
vi /etc/profile
export ZK_HOME=/usr/local/zookeeper
export PATH=$ZK_HOME/bin:$PATH
source /etc/profile
在主目录下创建data和logs两个目录用于存储数据和日志:
mkdir -p /data/zk/{data,logs}
在conf目录下新建zoo.cfg文件,写入以下内容保存:
以下分别在每台配置
vim /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
dataDir=/data/zk/data
dataLogDir=/data/zk/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=10.168.0.0:2888:3888
server.2=10.168.0.0:2888:3888
server.3=10.168.0.0:2888:3888
server.4=10.168.0.0:2888:3888
server.5=10.168.0.0:2888:3888
echo '1' > /data/zk/data/myid
echo '2' > /data/zk/data/myid
echo '3' > /data/zk/data/myid
echo '4' > /data/zk/data/myid
echo '5' > /data/zk/data/myid
启动zookeeper
查看状态
其他的几个配置都一样 之后启动 (注意zookeeper集群需要都启动之后才会自动去连接)
六:安装Kafka
tar -zxvf kafka_2.12-2.2.0 .tgz && mv kafka_2.12-2.2.0 .tgz /usr/local
mv kafka_2.12-2.2.0 kafka
配置kafka环境变量,首先打开profile文件
vi /etc/profile
export KAFKA_HOME=/usr/local/kafka
export PATH=${KAFKA_HOME}/bin:$PATH
source /etc/profile
修改文件配置
vi /usr/local/kafka/config/server.properties
broker.id=1 (集群配置不能是一样的)
listeners=PLAINTEXT://10.168.0.0:9092 (配置自己IP端口)
log.dirs=/data/kafka/logs
zookeeper.connect=10.168.0.0:2181,10.168.0.0:2181,10.168.0.0:2181,10.168.0.0:2181,10.168.0.0:2181 (集群IP端口)
之后同理修改其他几台机器
启动
cd /usr/local/kafka/
./bin/kafka-server-start.sh -daemon ./config/server.properties
安装kafka-manager(用作Kafka页面管理)
下载源码
使用Git或者直接从Releases中下载,这里我们下载 2.0.0.2 版本:https://github.com/yahoo/kafka-manager/releases
解压
wget https://github.com/yahoo/kafka-manager/archive/2.0.0.2.tar.gz
tar -zxvf 2.0.0.2.tar.gz –C /opt/
sbt编译
配置yum
curl https://bintray.com/sbt/rpm/rpm > /etc/yum.repos.d/bintray-sbt-rpm.repo
yum makecache
#安装sbt
yum -y install sbt
编辑项目(慢)
cd kafka-manager-2.0.0.2
./sbt clean dist
如果编译错误要重新编译,最好是能找到编译好的包。
拷贝编译后的压缩包并解压
cp target/universal/kafka-manager-2.0.0.2.zip /opt
unzip kafka-manager-2.0.0.2.zip
vi /usr/local/kafka-manager/conf/application.conf
#kafka-manager.zkhosts="localhost:2181" ##注释这一行,下面添加一行
kafka-manager.zkhosts="10.168.0.0:2181,10.168.0.0:2181,10.168.0.0:2181,10.168.0.0:2181,10.168.0.0:2181"
添加用户
basicAuthentication.enabled=true
basicAuthentication.username=admin
basicAuthentication.password=admin123
启动
nohup /usr/local/kafka-manager/bin/kafka-manager -Dconfig.file=/usr/local/kafka-manager/conf/application.conf -Dhttp.port=8899 >> /data/kafka-manager/main.log 2>&1
相关文档
https://blog.csdn.net/qq_23160237/article/details/89677647