ELKB环境搭建 - CentOS7.*
需要具备Java环境(1.8或11版本)推荐Java11
查看Elasticsearch与JVM版本兼容性:https://www.elastic.co/cn/support/matrix#matrix_jvm
安装JDK请参考:Linux第四章-Linux搭建Java环境
接下来我们将搭建一个两节点的ES集群:
IP地址 部署的服务 主机名
192.168.68.132 ES + Kibana node1
192.168.68.133 ES + Logstash node2
一、Elasticsearch 下载 解压
官网下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
- 下载完成后上传至服务器
/opt
目录;
mkdir /usr/local/environment && cd /usr/local/environment
wget -P /opt https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz
tar -zxvf /opt/elasticsearch-7.8.0-linux-x86_64.tar.gz -C /usr/local/environment/
二、服务器配置
mkdir -p /data/es/data
mkdir -p /data/es/logs
# 开放端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --zone=public --add-port=9300/tcp --permanent
firewall-cmd --reload
# 添加地址到 hosts 文件,可以解析node2主机
echo '192.168.68.132 node1' >> /etc/hosts
echo '192.168.68.133 node2' >> /etc/hosts
以上操作,两个服务器均需进行配置
三、修改 ES 配置文件
3.1、配置node1
1、备份配置文件
cp /usr/local/environment/elasticsearch-7.8.0/config/elasticsearch.yml /usr/local/environment/elasticsearch-7.8.0/config/elasticsearch.yml.bak
2、修改node1配置文件
vim /usr/local/environment/elasticsearch-7.8.0/config/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
--33--取消注释,指定数据存放路径
path.data: /data/es/data
--37--取消注释,指定日志存放路径
path.logs: /data/es/logs
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
#内部节点之间沟通端口(可不添加)
transport.tcp.port: 9300
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
# 这两个配置只能二选一
discovery.seed_hosts: ["node1", "node2"]
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
--73--取消注释,es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1", "node2"]
# 查看主配置文件
grep -v "^#" /usr/local/environment/elasticsearch-7.8.0/config/elasticsearch.yml
3.2、配置node2
1、备份配置文件
cp /usr/local/environment/elasticsearch-7.8.0/config/elasticsearch.yml /usr/local/environment/elasticsearch-7.8.0/config/elasticsearch.yml.bak
2、修改node1配置文件
vim /usr/local/environment/elasticsearch-7.8.0/config/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node2
--33--取消注释,指定数据存放路径
path.data: /data/es/data
--37--取消注释,指定日志存放路径
path.logs: /data/es/logs
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
#内部节点之间沟通端口(可不添加)
transport.tcp.port: 9300
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
# es7.x 之后新增的配置,写入候选主节点的设备地址,在开启服务后可以被选为主节点
# 这两个配置只能二选一
discovery.seed_hosts: ["node1", "node2"]
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
--73--取消注释,es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1", "node2"]
#查看主配置文件
grep -v "^#" /usr/local/environment/elasticsearch-7.8.0/config/elasticsearch.yml
四、新增 es 用户 并启动
因为有安全方面的考虑,es是不能在root账户下运行的,因此要新建用户
useradd es
passwd es
# 设置文件夹所属用户
chown -R es:es /usr/local/environment/elasticsearch-7.8.0
chown -R es:es /data/es
su es
# 启动ES
/usr/local/environment/elasticsearch-7.8.0/bin/elasticsearch -d
五、启动报错
有相关报错信息,请参考下面链接
【第一个错:】Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
这个错表示垃圾回收器版本过低,如何解决:
vim /usr/local/environment/elasticsearch-7.8.0/config/jvm.options
:set nu
将--36行-- 8-13:-XX:+UseConcMarkSweepGC 改为: 8-13:-XX:+UseG1GC
【第二个错:】[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
【第三个错:】[2]: max number of threads [3766] for user [es] is too low, increase to at least [4096]
上面两个报错解决方式:
vim /etc/security/limits.conf
添加如下内容:
* hard nofile 65536
* soft nofile 65536
* hard nproc 4096
【第四个错:】[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
请参考:https://blog.youkuaiyun.com/weixin_40816738/article/details/123434998
六、验证测试
6.1、本地客户端测试
访问:http://192.168.68.132:9200/

6.2、查看集群的健康状态
访问:http://192.168.68.132:9200/_cluster/health?pretty
6.3、查看集群所有节点
访问:http://192.168.68.132:9200/_cat/nodes/?v
6.4、查看集群状态信息
访问:http://192.168.68.132:9200/_cluster/state?pretty
Elasticsearch配置开机自启动
请参考:https://blog.youkuaiyun.com/weixin_44117045/article/details/131020168
============================
七、node1安装 kibana
使用
rpm
方式安装kibana
7.1、下载 rpm 包 并安装
将 kibana 的 rpm包下载到 /opt
目录下
wget -P /opt https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-x86_64.rpm
rpm -ivh /opt/kibana-7.8.0-x86_64.rpm
# 设置为开机自启
systemctl enable kibana
7.2、修改 Kibana 配置文件
vim /etc/kibana/kibana.yml
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--28--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.url: "http://192.168.24.20:9200"
--37--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"
7.3、启动、验证
# 启动 kibana
systemctl start kibana.service && systemctl status kibana.service
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
访问:http://192.168.68.132:5601/
八、node2安装 Logstash
Logstash只做三件事情:
(1)Input:输入源,一般配置为自己监听的主机及端口。DataSource向指定的ip及端口输出日志,Input 输入源监听到数据信息就可以进行收集。
(2)Filter:过滤功能,对收集到的信息进行过滤(额外处理),也可以省略这个配置(不做处理)
(3)Output:把收集到的信息发送给谁。在ELK技术栈中都是输出给Elasticsearch,后面数据检索和数据分析的过程就给Elasticsearch了。
Logstash也需要有Java环境
官方下载地址7.8.0:https://www.elastic.co/cn/downloads/past-releases/logstash-7-8-0
我们这里使用压缩包方式进行安装
8.1、下载并安装
wget -P /opt https://artifacts.elastic.co/downloads/logstash/logstash-7.8.0.tar.gz
tar -zxvf /opt/logstash-7.8.0.tar.gz -C /usr/local/environment/
8.2、验证是否安装成功
8.2.1、测试是否能正常启动
cd /usr/local/environment/logstash-7.8.0
bin/logstash -e 'input { stdin { } } output { stdout {} }'
等待启动成功后,我们输入 hello word
,如果看到有相同的输出,代表安装成功
8.2.2、测试是否能正常连接 Elasticsearch
cd /usr/local/environment/logstash-7.8.0
bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.68.132:9200"] } }'
看到如下输出,代表连接并启动成功
九、node2安装 Filebeat
官网下载:https://www.elastic.co/cn/downloads/past-releases/filebeat-7-8-0
9.1、下载并安装
wget -P /opt https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.8.0-linux-x86_64.tar.gz
tar -zxvf /opt/filebeat-7.8.0-linux-x86_64.tar.gz -C /usr/local/environment/
9.2、运行测试
cd /usr/local/environment/filebeat-7.8.0-linux-x86_64
# 运行并输出日志
./filebeat -e
等待30s看到如下输出代表启动运行成功
十、整合FileBeat + Logstash + ES
10.1、修改FileBeat配置
vim /usr/local/environment/filebeat-7.8.0-linux-x86_64/filebeat.yml
--13行-- 将Filebeat inputs块中的配置改为如下内容
# ============ Filebeat inputs ============
filebeat.inputs:
- type: log
enabled: true
# 表示要监听的文件,可以配置多个
paths:
#- /var/log/*.log
- /data/es/logs/my-elk-cluster.log
# 通过正则匹配行
multiline.type: pattern
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
--146行--中的配置全部注释,使用下面的输出到Logstash的配置
# ------------ Logstash Output ------------
output.logstash:
# 可配置多个 使用,分格
hosts: ["192.168.68.133:5044"]
10.2、修改Logstash配置
vim /usr/local/environment/logstash-7.8.0/config/logstash-sample.conf
# 改为如下配置:
input {
beats {
port => 5044
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["http://192.168.68.132:9200","http://192.168.68.133:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
10.3、启动Logstash及FileBeat
# 启动Logstash
cd /usr/local/environment/logstash-7.8.0
./bin/logstash -f config/logstash-sample.conf
# 启动FileBeat
cd /usr/local/environment/filebeat-7.8.0-linux-x86_64
./filebeat -e -c filebeat.yml