章
目
录
前言
本文详细介绍了在CentOS 7操作系统上搭建ELK以及在SpringBoot项目中整合ELK的步骤。以下内容来自掘金用户汪小成。
1、ELK概述
ELK代表Elasticsearch、Logstash和Kibana三个开源项目的首字母缩写。这三个项目共同构成了一个成熟且强大的实时日志集中处理方案。在这个方案中,Logstash用于日志收集,Elasticsearch则用于数据存储和索引,而Kibana则提供了一个直观的可视化界面,用于查看存储在Elasticsearch中的日志数据。
2、环境&版本
服务器系统版本、JDK版本、ELK版本信息如下:
环境 | 版本 | 端口号 |
---|---|---|
Centos | 7.9 | |
JDK | 1.8 | |
Elasticsearch | 7.2.1 | 39100 |
Logstash | 7.2.1 | 39102 |
Kibana | 7.2.1 | 39101 |
Elasticsearch
、Logstash
和Kibana
三个开源项目都需要在Java环境下运行,所以需要提前在服务器上安装JDK。
centos的环境搭建的JDK1.8。本文中没有讲述JDK的安装,有需要的朋友可以参考《Centos7 安装JDK1.8》文章。
3、Elasticsearch
3.1、下载Elasticsearch
$ wget –c https://mirrors.huaweicloud.com/elasticsearch/7.2.1/elasticsearch-7.2.1-x86_64.rpm
为了更快的下载速度,我选择在华为开源镜像站下载Elasticsearch。
3.2、安装Elasticsearch
$ rpm -ivh elasticsearch-7.2.1-x86_64.rpm
3.3、配置Elasticsearch
Elasticsearch配置文件位置:/etc/elasticsearch
。
进入配置文件所在文件夹:
$ cd /etc/elasticsearch
备份配置文件(非必要):
$ cp elasticsearch.yml elasticsearch.backup.yml
使用vim
打开elasticsearch.yml
配置文件,按下i
进入编辑模式。修改内容如下:
network.host: 0.0.0.0
http.port: 39100
discovery.seed_hosts: ["127.0.0.1:39100"]
配置项说明:
network.host
用于设置绑定的主机地址,可以是IP地址或主机名。http.port
用于设置监听的HTTP端口,出于一些特殊原因,我将elasticsearch的端口号由默认的9200
修改为39100
。discovery.seed_hosts
用于设置集群节点的种子主机地址,用于节点发现和加入集群。
3.4、启动Elasticsearch
# 启动Elasticsearch
$ sudo systemctl start elasticsearch
将Elasticsearch设置为开机启动(非必要):
# 将Elasticsearch设置为开机自启
$ sudo systemctl enable elasticsearch
查看Elasticsearch的运行状态:
$ sudo systemctl status elasticsearch
或者,使用如下命令检查Elasticsearch是否启动成功:
# 检查Elasticsearch是否启动成功
$ netstat -antp | grep 39100
待Elasticsearch启动成功后,可以使用curl命令来测试Elasticsearch是否正常运行。例如:
$ curl http://127.0.0.1:39100
如果返回类似以下内容,说明Elasticsearch已经成功运行:
{
"name" : "localhost.localdomain",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "NqlpN5iJQmeSV_TvHqPo6w",
"version" : {
"number" : "7.2.1",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "fe6cb20",
"build_date" : "2019-07-24T17:58:29.979462Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
最后,使用如下命令修改Centos防火墙配置开放端口号供外访问:
$ sudo firewall-cmd --zone=public --add-port=39100/tcp --permanent
重新加载防火墙规则以使更改生效:
$ sudo firewall-cmd --reload
4、Logstash
4.1、下载Logstash
在华为开源镜像站下载Logstash:
$ wget –c https://repo.huaweicloud.com/logstash/7.2.1/logstash-7.2.1.rpm
4.2、安装Logstash
$ rpm -ivh logstash-7.2.1.rpm
4.3、配置Logstash
在/etc/logstash/conf.d
文件夹下创建logstash.conf
配置文件,配置文件内容如下:
input {
tcp {
host => "0.0.0.0"
port => 39102
mode => "server"
codec => json_lines
}
}
output {
elasticsearch {
hosts => "localhost:39100"
index => "%{[appname]}-%{+YYYY.MM.dd}"
}
}
配置说明:
input
– 用于定义数据的输入源,即Logstash的数据来源。
tcp
– 用于指定Logstash监听指定的IP和端口,接收 TCP 连接传入的数据。
host
– 监听的主机IP地址,这里的0.0.0.0
表示监听所有可用的网络接口。
port
– 监听的端口号。我这里将端口号由默认的9600
改为了39102
。
mode
– 连接模式。
codec
– 数据编码解码方式,json_lines
表示接收到的数据将以JSON行的形式解析。
output
– 用于定义数据的输出目录。
elasticsearch
– 表示将数据输出到Elasticsearch集群。
hosts
– 用于设置Elasticsearch集群的主机地址和端口号。
index
– 用于指定Elasticsearch索引的名称。这里使用 %{[appname]}
表示索引名称从数据中的appname
字段获取。%{+YYYY.MM.dd}
表示在索引中包含日期信息。
4.4、启动Logstash
$ sudo systemctl start logstash
最后,使用如下命令修改Centos防火墙配置开放端口号供外访问:
$ sudo firewall-cmd --zone=public --add-port=39102/tcp --permanent
重新加载防火墙规则以使更改生效:
$ sudo firewall-cmd --reload
5、Kibana
5.1、下载Kibana
$ wget –c https://repo.huaweicloud.com/kibana/7.2.1/kibana-7.2.1-x86_64.rpm
5.2、安装Kibana
$ rpm -ivh kibana-7.2.1-x86_64.rpm
5.3、配置Kibana
进入/etc/kibana
文件夹,修改kibana.yml
配置文件中如下内容:
server.port: 39101
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:39100"]
i18n.locale: "zh-CN"
配置说明:
server.port
– 用于指定Kibana服务监听的端口号,这里我将端口号由默认的5601
改成了39101
。
server.host
– 用于指定Kibana服务监听的主机地址。”0.0.0.0″表示监听所有可用的网络接口,即可以从任意IP地址访问Kibana。
elasticsearch.hosts
– 用于设置Elasticsearch集群的主机地址和端口号。
i18n.locale
– 用于设置界面语言,这里将界面语言设置成了中文。
5.4、启动Kibana
$ sudo systemctl start kibana
最后,使用如下命令修改Centos防火墙配置开放端口号供外访问:
$ sudo firewall-cmd --zone=public --add-port=39101/tcp --permanent
重新加载防火墙规则以使更改生效:
$ sudo firewall-cmd --reload
6、SpringBoot集成ELK
Spring Boot应用输出日志到ELK的大体流程如下图所示:
说明:
Spring Boot应用产生日志数据,使用Logback
日志框架记录日志。
Logstash
作为日志收集器,接收Spring Boot应用发送的日志数据。
Logstash
解析和过滤日志数据,可能会对其进行格式化和处理。
处理后的日志数据被发送到Elasticsearch
,Elasticsearch
将日志数据存储在分布式索引中。
Kibana
连接到Elasticsearch
,可以查看存储在Elasticsearch
中的日志数据。
6.1、添加依赖
修改pom.xml
文件,添加如下配置:
dependency>
groupId>net.logstash.logbackgroupId>
artifactId>logstash-logback-encoderartifactId>
version>7.2version>
dependency>
6.2、修改Logback配置
修改Logback的配置文件:
+
+
+ 60.211.159.140:39102
+
+
+
+ {"appname":"spring-boot-elk"}
+
+
+
6.3、启动SpringBoot项目
这一步,我就不废话了。
6.4、在Kibana中查看日志
1、在浏览器地址样中输入服务器IP+Kibana端口号 –> 点击管理
–> 点击索引模式
–> 点击创建索引模式
。
2、输入索引模式名称 –> 点击下一步
。
3、设置时间筛选字段名称,我这里没有使用时间筛选。
4、点击Discover
图标就可以看到Spring Boot项目输出的日志了。
总结
以上就是作者分享的CentOS7搭建Spring Boot项目整合ELK环境全部内容详解,希望对你有帮助!