助力产业智慧升级,云服务器首年88元起,更有千元代金券礼包免费领!
前沿
1.什么是ELK?
ELK是由Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体 不懂自行查阅 https://www.elastic.co/
2.服务器
3.软件环境
centOS7版本
由于Elasticsearch、Kibana均不能以root账号运行。
否则报错
一.环境配置
1.修改文件限制
vi /etc/security/limits.conf
增加的内容
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096
* soft memlock unlimited
* hard memlock unlimited
2.调整进程数
vi /etc/security/limits.d/20-nproc.conf
调整成以下配置
* soft nproc 4096
root soft nproc unlimited
3.调整虚拟内存&最大并发连接
vi /etc/sysctl.conf
增加的内容
vm.max_map_count=655360
fs.file-max=655360
4.重启系统后生效
reboot
5.开放端口
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --add-port=9300/tcp --permanent
重新加载防火墙规则
firewall-cmd --reload
6.创建ELK专用用户
创建用户
useradd elk
创建ELK APP目录
mkdir /ext/elasticsearch
创建ELK data目录
mkdir /ext/elasticsearch/data
创建ELK logs目录
mkdir /ext/elasticsearch/logs
赋权
chown -R elk:elk /ext/elasticsearch
二.jdk安装
选择最新版本,所以jdk也要是高版本
1.下载
https://download.oracle.com/otn/java/jdk/11.0.4+10/cf1bbcbf431a474eb9fc550051f4ee78/jdk-11.0.4_linux-x64_bin.tar.gz
2.创建文件夹
mkdir /ext/java
3.解压到 /ext/java
sudo tar zvxf jdk-11.0.4_linux-x64_bin.tar.gz -C /ext/java
4.进入java文件夹
cd /ext/java
5.编辑配置文件
vi /etc/profile
6.配置环境变量
export JAVA_HOME=/ext/java/jdk-11.0.4
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
7.使环境变量生效
source /etc/profile
8.检查是否配置成功
java -version
三.Elasticsearch 部署
1.下载
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz
2.解压到 /ext/elasticsearch
sudo tar zvxf elasticsearch-7.3.0-linux-x86_64.tar.gz -C /ext/elasticsearch
3.Elasticsearch节点配置
打开目录
cd /ext/elasticsearch/elasticsearch-7.3.0
修改配置
vi config/elasticsearch.yml
主节点配置(192.168.0.201)
#ES集群名称,同一个集群内的所有节点集群名称必须保持一致 cluster.name: ES-Cluster #ES集群内的节点名称,同一个集群内的节点名称要具备唯一性 node.name: ES-master-192.168.0.201 #允许节点是否可以成为一个master节点,ES是默认集群中的第一台机器成为master,如果这台机器停止就会重新选举 node.master: true #允许该节点存储索引数据(默认开启) node.data: false #path可以指定多个存储位置 path.data: /ext/elasticsearch/data #elasticsearch专门的日志存储位置,生产环境中建议elasticsearch配置文件与elasticsearch日志分开存储 path.logs: /ext/elasticsearch/logs #在ES运行起来后锁定ES所能使用的堆内存大小,锁定内存大小一般为可用内存的一半左右;锁定内存后就不会使用交换分区 #如果不打开此项,当系统物理内存空间不足,ES将使用交换分区,ES如果使用交换分区,那么ES的性能将会变得很差 bootstrap.memory_lock: true #es绑定地址,支持IPv4及IPv6,默认绑定127.0.0.1;es的HTTP端口和集群通信端口就会监听在此地址上 network.host: 192.168.0.201 #是否启用tcp无延迟,true为启用tcp不延迟,默认为false启用tcp延迟 network.tcp.no_delay: true #是否启用TCP保持活动状态,默认为true network.tcp.keep_alive: true #是否应该重复使用地址。默认true,在Windows机器上默认为false network.tcp.reuse_address: true #tcp发送缓冲区大小,默认不设置 network.tcp.send_buffer_size: 128mb #tcp接收缓冲区大小,默认不设置 network.tcp.receive_buffer_size: 128mb #设置集群节点通信的TCP端口,默认就是9300 transport.tcp.port: 9300 #设置是否压缩TCP传输时的数据,默认为false transport.tcp.compress: true #设置http请求内容的最大容量,默认是100mb http.max_content_length: 200mb #是否开启跨域访问 http.cors.enabled: true #开启跨域访问后的地址限制,表示无限制 http.cors.allow-origin: "" #定义ES对外调用的http端口,默认是9200 http.port: 9200 #Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点,由discovery.zen.ping.unicast.hosts:参数改变而来 discovery.seed_hosts: ["192.168.0.201:9300"] #Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点 cluster.initial_master_nodes: ["192.168.0.201:9300"] #Elasticsearch7新增参数,设置每个节点在选中的主节点的检查之间等待的时间。默认为1秒 cluster.fault_detection.leader_check.interval: 15s #Elasticsearch7新增参数,启动后30秒内,如果集群未形成,那么将会记录一条警告信息,警告信息未master not fount开始,默认为10秒 discovery.cluster_formation_warning_timeout: 30s #Elasticsearch7新增参数,节点发送请求加入集群后,在认为请求失败后,再次发送请求的等待时间,默认为60秒 cluster.join.timeout: 120s #Elasticsearch7新增参数,设置主节点等待每个集群状态完全更新后发布到所有节点的时间,默认为30秒 cluster.publish.timeout: 90s #集群内同时启动的数据任务个数,默认是2个 cluster.routing.allocation.cluster_concurrent_rebalance: 32 #添加或删除节点及负载均衡时并发恢复的线程个数,默认4个 cluster.routing.allocation.node_concurrent_recoveries: 32 #初始化数据恢复时,并发恢复线程的个数,默认4个 cluster.routing.allocation.node_initial_primaries_recoveries: 32
从节点配置(192.168.0.202)
#ES集群名称,同一个集群内的所有节点集群名称必须保持一致
cluster.name: ES-Cluster
#ES集群内的节点名称,同一个集群内的节点名称要具备唯一性
node.name: ES-Data-192.168.0.202
#允许节点是否可以成为一个master节点,ES是默认集群中的第一台机器成为master,如果这台机器停止就会重新选举
node.master: false
#允许该节点存储索引数据(默认开启)
node.data: true
#path可以指定多个存储位置
path.data: /ext/elasticsearch/data
#elasticsearch专门的日志存储位置,生产环境中建议elasticsearch配置文件与elasticsearch日志分开存储
path.logs: /ext/elasticsearch/logs
#在ES运行起来后锁定ES所能使用的堆内存大小,锁定内存大小一般为可用内存的一半左右;锁定内存后就不会使用交换分区
#如果不打开此项,当系统物理内存空间不足,ES将使用交换分区,ES如果使用交换分区,那么ES的性能将会变得很差
bootstrap.memory_lock: true
#es绑定地址,支持IPv4及IPv6,默认绑定127.0.0.1;es的HTTP端口和集群通信端口就会监听在此地址上
network.host: 192.168.0.202
#是否启用tcp无延迟,true为启用tcp不延迟,默认为false启用tcp延迟
network.tcp.no_delay: true
#是否启用TCP保持活动状态,默认为true
network.tcp.keep_alive: true
#是否应该重复使用地址。默认true,在Windows机器上默认为false
network.tcp.reuse_address: true
#tcp发送缓冲区大小,默认不设置
network.tcp.send_buffer_size: 128mb
#tcp接收缓冲区大小,默认不设置
network.tcp.receive_buffer_size: 128mb
#设置集群节点通信的TCP端口,默认就是9300
transport.tcp.port: 9300
#设置是否压缩TCP传输时的数据,默认为false
transport.tcp.compress: true
#设置http请求内容的最大容量,默认是100mb
http.max_content_length: 200mb
#是否开启跨域访问
http.cors.enabled: true
#开启跨域访问后的地址限制,*表示无限制
http.cors.allow-origin: "*"
#定义ES对外调用的http端口,默认是9200
http.port: 9200
#Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点,由discovery.zen.ping.unicast.hosts:参数改变而来
discovery.seed_hosts: ["192.168.0.201:9300"]
#Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点
cluster.initial_master_nodes: ["192.168.0.201:9300"]
#Elasticsearch7新增参数,设置每个节点在选中的主节点的检查之间等待的时间。默认为1秒
cluster.fault_detection.leader_check.interval: 15s
#Elasticsearch7新增参数,启动后30秒内,如果集群未形成,那么将会记录一条警告信息,警告信息未master not fount开始,默认为10秒
discovery.cluster_formation_warning_timeout: 30s
#Elasticsearch7新增参数,节点发送请求加入集群后,在认为请求失败后,再次发送请求的等待时间,默认为60秒
cluster.join.timeout: 120s
#Elasticsearch7新增参数,设置主节点等待每个集群状态完全更新后发布到所有节点的时间,默认为30秒
cluster.publish.timeout: 90s
#集群内同时启动的数据任务个数,默认是2个
cluster.routing.allocation.cluster_concurrent_rebalance: 32
#添加或删除节点及负载均衡时并发恢复的线程个数,默认4个
cluster.routing.allocation.node_concurrent_recoveries: 32
#初始化数据恢复时,并发恢复线程的个数,默认4个
cluster.routing.allocation.node_initial_primaries_recoveries: 32
注意:主从集群名要一致
cluster.name: es
否则会报错
4.配置jvm.options
打开目录
cd /ext/elasticsearch/elasticsearch-7.3.0
修改配置
vi config/jvm.options
把
-Xms1g
-Xmx1g
改小
-Xms512m
-Xmx512m
5.切换用户
切换之前先用root授权
赋权
chown -R elk:elk /ext/elasticsearch
否则启动报没有权限
su elk
一定要切换用户否则启动报错
6.Elasticsearch启动
进入elasticsearch根目录
cd /ext/elasticsearch/elasticsearch-7.3.0
启动
./bin/elasticsearch
./bin/elasticsearch -d 后台启动
7.检查
浏览器访问
http://192.168.0.201:9200/
出现下面信息说明部署成功
四.redis部署
1.下载
http://download.redis.io/releases/redis-5.0.5.tar.gz
2.创建文件夹
mkdir /ext/elk/
3.解压到 /ext/elk
sudo tar zvxf redis-5.0.5.tar.gz -C /ext/elk
4.安装依赖
sudo yum install -y gcc gcc-c++ make jemalloc-devel epel-release
或者离线下载安装
rpm -Uvh cpp-4.8.5-36.el7_6.2.x86_64.rpm epel-release-7-11.noarch.rpm gcc-4.8.5-36.el7_6.2.x86_64.rpm gcc-c++-4.8.5-36.el7_6.2.x86_64.rpm glibc-2.17-260.el7_6.6.x86_64.rpm glibc-common-2.17-260.el7_6.6.x86_64.rpm glibc-devel-2.17-260.el7_6.6.x86_64.rpm glibc-headers-2.17-260.el7_6.6.x86_64.rpm kernel-headers-3.10.0-957.27.2.el7.x86_64.rpm libgcc-4.8.5-36.el7_6.2.x86_64.rpm libgomp-4.8.5-36.el7_6.2.x86_64.rpm libmpc-1.0.1-3.el7.x86_64.rpm libstdc++-devel-4.8.5-36.el7_6.2.x86_64.rpm mpfr-3.1.1-4.el7.x86_64.rpm libstdc++-4.8.5-36.el7_6.2.x86_64.rpm
否则报错
5.编译&安装
进入目录
cd /ext/elk/redis-5.0.5
编译&安装
sudo make & make install
6. 修改redis.conf配置文件
进入
cd /ext/elk/redis-5.0.5
编辑
vi redis.conf
protected-mode no # 关闭保护模式
daemonize yes # 守护进程模式开启
bind 127.0.0.1 修改为 # bind 127.0.0.1 # 远程访问需要把bind注释掉
7.开发端口
firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload
8.启动
进入
cd /ext/elk/redis-5.0.5/src/
./redis-server /ext/elk/redis-5.0.5/redis.conf
# 9.检测
通过第三方可视化工具连接测试
五.Logstash部署
1.下载
https://artifacts.elastic.co/downloads/logstash/logstash-7.3.0.tar.gz
2.创建文件夹
mkdir /ext/elk/logstash
mkdir /ext/elk/logstash/data
mkdir /ext/elk/logstash/logs
3.解压到 /ext/elk
sudo tar zvxf logstash-7.3.0.tar.gz -C /ext/elk
4.移动
mv logstash-7.3.0/ logstash
5.修改logstash.yml配置
进入
cd /ext/elk/logstash/logstash-7.3.0
编辑配置文件
vi config/logstash.yml
增加以下内容
path.data: /ext/elk/logstash/data
path.logs: /ext/elk/logstash/logs
其他默认
6.修改input-output.conf配置
进入
cd /ext/elk/logstash/logstash-7.3.0
编辑配置文件
vi config/input-output.conf
增加以下内容
input {
redis {
data_type => "list"
key => "logstash"
host => "192.168.0.203"
port => 6379
threads => 5
codec => "json"
}
}
filter {
}
output {
elasticsearch {
hosts => ["192.168.0.201:9200","192.168.0.202:9200"]
index => "logstash-%{type}-%{+YYYY.MM.dd}"
document_type => "%{type}"
}
stdout {
}
}
7.修改jvm.options配置
进入
cd /ext/elk/logstash/logstash-7.3.0
编辑配置文件
vi config/jvm.options
把
-Xms1g
-Xmx1g
改小
-Xms512m
-Xmx512m
8.启动
进入
cd /ext/elk/logstash/logstash-7.3.0
执行
./bin/logstash -f config/input-output.conf
后台启动
nohup ./bin/logstash -f config/input-output.conf &
tail -f nohup.out 可查看启动日志
出现下面信息说明启动成功
六.Kibana 部署
1.下载
https://artifacts.elastic.co/downloads/kibana/kibana-7.3.0-linux-x86_64.tar.gz
2.创建文件夹
mkdir /ext/elk/kibana
3.解压到 /ext/elk
sudo tar zvxf kibana-7.3.0-linux-x86_64.tar.gz -C /ext/elk
重命名
mv kibana-7.3.0-linux-x86_64 kibana
4.开放端口
firewall-cmd --add-port=5601/tcp --permanent
firewall-cmd --reload
5.修改kibana.yml配置
进入
cd /ext/elk/kibana
修改文件
vi config/kibana.yml
增加以下内容
server.port: 5601
server.host: "0.0.0.0" #必须为0.0.0.0 否则浏览器无法访问到
elasticsearch.hosts: ["http://192.168.0.201:9200","http://192.168.0.202:9200"]

6.创建用户
创建用户
useradd elk
赋权
chown -R elk:elk /ext/elk
不能使用root ,否则报错
7. 启动
进入
cd /ext/elk/kibana
切换用户
su elk
./bin/kibana
8.问题
UnhandledPromiseRejectionWarning: Error: Request Timeout after 30000ms
解决:
去掉# 时间改大90000
评论区