SpringBoot整合ELK做日志
环境准备
提前准备一台CentOS7,我的配置为 2c4g50g,为了方便,我会直接关闭服务器的防火墙,执行以下代码:
systemctl stop firewalld systemctl disable firewalld
安装包准备
ELK安装包
本篇文章讲解用 elasticsearch-7.17.7,kibana-7.17.7,logstash-7.17.7 和 SpringBoot 搭建日志系统,可提前下载好安装包,可使用以下命令下载,没有wget可通过yum安装:
wget \ https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz \ https://artifacts.elastic.co/downloads/kibana/kibana-7.17.7-linux-x86_64.tar.gz \ https://artifacts.elastic.co/downloads/logstash/logstash-7.17.7-linux-x86_64.tar.gz
下载完成后如图:
如果需要安装 ik 分词器,可以使用以下命令下载:
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.7/elasticsearch-analysis-ik-7.17.7.zip
Java11安装包
因为要登陆Oracle账户进行下载,所以我这里没办法直接提供下载链接,需要去到下载界面:
https://www.oracle.com/java/technologies/downloads/#java11
点击这个进行下载:
点击同意协议:
登陆账户即可下载:
软件安装
安装java11
我准备将java11安装在 /opt/environment 目录下,所以我们执行以下命令创建目录:
mkdir -p /opt/environment
然后将 jdk-11.0.19_linux-x64_bin.tar.gz 解压到 /opt/environment 目录下,执行以下命令:
tar -zxvf jdk-11.0.19_linux-x64_bin.tar.gz -C /opt/environment/
然后我们 /opt/environment/jdk-11.0.19/ 目录查看(版本不同目录可能不同):
随后我们需要配置环境变量,将下面代码加到 /etc/profile 文件的末尾:
# Set java environment JAVA_HOME=/opt/environment/jdk-11.0.19 ES_JAVA_HOME=$JAVA_HOME LS_JAVA_HOME=$JAVA_HOME PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME ES_JAVA_HOME LS_JAVA_HOME PATH
其中 ES_JAVA_HOME 变量是ElasticSearch要求的, LS_JAVA_HOME 是Logstash要求的,但是要注意 JAVA_HOME=/opt/environment/jdk-11.0.19 的目录是jdk的更目录,如果不同注意修改。添加成功后查看 /etc/profile 文件末尾几行:
使用以下命令使配置生效并检查java是否安装成功:
source /etc/profile java -version
看到下面结果代表安装成功:
安装ElasticSearch
我准备将ElasticSearch安装在 /opt/server 文件夹下,所以我们创建这个文件夹:
mkdir -p /opt/server
然后我们解压 elasticsearch-7.17.7-linux-x86_64.tar.gz 文件到这个文件夹:
tar -zxvf elasticsearch-7.17.7-linux-x86_64.tar.gz -C /opt/server/
我们来到 /opt/server 目录可以查看到解压的结果:
因为es要求不能以root用户运行该应用,所以我们为es创建一个用户 elk,并将 elasticsearch-7.17.7 目录和下面所有文件的所有权转到用户elk上:
# 创建用户 useradd elk # 将所有权赋予给elk用户 chown elk:elk -R elasticsearch-7.17.7
随后我们需要改一些系统的配置文件,更详细的说明相见我的es安装教程,这里我们就直接执行以下代码配置:
echo "elk hard nofile 65536" >> /etc/security/limits.conf echo "elk soft nofile 65536" >> /etc/security/limits.conf echo "vm.max_map_count=655360" >> /etc/sysctl.conf sysctl -p
因为我们内存不多,所以还需要改一下 es 当中的 config/jvm.options 配置文件,在文件中加上以下三行代码(参数可以根据自己的内存大小自行修改):
-Xms256m -Xmx256m -Xmn128m
加上后如图:
然后我们需要修改 config/elasticsearch.yml 配置文件,需要修改的内容
# 集群的名字,根据自己爱好取一个好听的名字(需要取消注释) cluster.name: test-log # 这个节点的名称,可以自行修改(需要取消注释) node.name: node-1 # 本节点的IP地址,注意修改为自己的IP地址(需要取消注释) network.host: 192.168.3.233 # ES的端口(需要取消注释) http.port: 9200 # 填写IP地址即可(需要取消注释) discovery.seed_hosts: ["192.168.3.233"] # 都有哪些node,填写node的名字(需要取消注释) cluster.initial_master_nodes: ["node-1"]
然后我们就可以切换到 elk 用户启动elasticsearch:
# 切换到elk用户 su elk cd elasticsearch-7.17.7/ # 启动elasticsearch bin/elasticsearch
看到这个代表启动成功:
可以尝试访问服务器,可以看到访问成功:
安装成功后我直接 Ctrl + C 退出运行,然后执行以下命令将其后台运行:
nohup bin/elasticsearch >> /dev/null &
安装Kibana
我准备将Kibana安装在 /opt/server 文件夹下,我们已经创建了这个文件夹,所以直接解压文件(注意切换到root用户):
# 注意执行前使用 Ctrl + D 退出 elk 用户并使用root用户运行 # 来到安转包存放目录 cd /usr/local/src/ # 解压文件到指定文件夹 tar -zxvf kibana-7.17.7-linux-x86_64.tar.gz -C /opt/server/
同样来到 /opt/server 文件夹下,将 kibana-7.17.7-linux-x86_64 文件夹以及下面的文件的所有权授予给 elk:
cd /opt/server/ chown elk:elk -R kibana-7.17.7-linux-x86_64/
执行结果:
此时我们需要修改 config/kibana.yml 配置文件,修改的内容为:
# kibana地址,注意修改为自己的服务器地址(需要取消注释) server.host: "192.168.3.233" # elasticsearch地址,注意修改为自己的es服务器地址(需要取消注释) elasticsearch.hosts: ["http://192.168.3.233:9200"] # 国际化地址修改为中文(需要取消注释) i18n.locale: "zh-CN"
保存并退出后切换到elk用户并启动kibana
# 来到kibana目录 cd kibana-7.17.7-linux-x86_64/ # 切换到elk用户 su elk # 启动kibana bin/kibana
看到这个代表启动成功:
我们可以访问一下这个地址:
访问后我们可以点击左上角的三条杠然后点击开发工具,来到这个界面接下来会用到
同理我们退出运行后让kibanna进入后台运行
# 先使用 Ctrl + C 退出运行,然后让kibana后台运行 nohup bin/kibana >> /dev/null &