King's Studio

构建ELK日志搜索运维平台

字数统计: 1.5k阅读时长: 5 min
2021/01/04 Share

新年第一篇博客,也是新年的第一个工作日,今天上班阅读(摸🐟)了不少的技术文章,突然发现自己Java领域的技术路线图根本没有走完,技术栈还有很大的填补空间,想着今年是提升自己技术的重要时间点,如果止步于此,今后的职业发展会受到很大的限制,不能仅仅只满足于工作够用,况且互联网技术本身迭代更新的速度非常快(毕竟开源大佬边工作边开发新技术),互联网人需要不断的学习新技术才能保证自己不被时代淘汰。大数据相关的技术路线进度缓慢,还有Java后端部分的权限控制、单点登录校验等内容都是今年需要完成的学习任务,甚至于面试相关的基础知识都需要恶补,全新的2021年,希望在工作和学习中能够不断充实自己。

ELK简介

这部分内容是去年项目中因为开发过程经常需要查看后台日志,因此采用的日志收集方案,包括SpringCloud微服务的日志,以及Nginx的日志,实施使用已经有一段时间了,当时接到这个任务的时候也是我第一次接触这样的日志方案,是边学习边摸索着走的,我后来自己总结的时候才惊讶的发现Elasticsearch、Logstash、Kibana三个组件中有两个同样也是大数据中经常使用的,也算是同时学习了一波大数据组件。

Elasticsearch的单节点安装

之前有一篇对Elasticsearch进行过介绍,并且还详细讲述了使用Docker进行快速部署Elasticsearch,详见这篇《Elasticsearch的介绍与Docker部署并测试API》。由于项目中我们主要查看的是一个进行负载均衡部署的微服务的日志,因此我们使用普通安装包的方式进行Elasticsearch的安装,再去进行Logstash的配置。我们所使用的Elasticsearch是6.4.2版本,下载方式如下:

1
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.tar.gz

将下载完的压缩包放到任意文件夹下,并进行解压缩:

1
tar -xzvf elasticsearch-6.4.2.tar.gz

由于 Elasticsearch不能以 root用户启动,因此需要添加非 root用户:

1
2
3
groupadd es
useradd es -g es
chown -R es:es ./elasticsearch-6.4.2

然后切换es用户,进行启动:

1
2
cd bin
./elasticsearch

然后通过浏览器访问:http://localhost:9200/

es

看到如图效果,Elasticsearch安装完成。

Logstash的双节点配置

由于我们的业务模块是使用两台机器进行负载均衡部署的,我们的逻辑是分别在两台机器上配置Logstash,然后将两个节点的日志都写入到Elasticsearch中,再由Kibana进行展示,首先我们进行Logstash的安装。

1
2
3
4
#下载
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.4.2.tar.gz
#解压
tar -xzvf logstash-6.4.2.tar.gz

需要说明的一点是,我们所使用的三个组件的版本都是一致的,这确保了最后整个日志收集平台搭建好之后是能够正常使用的,如果你也是第一次搭建,最稳妥的办法是尽量保持三个组件的版本相同。

Logstash中最重要的部分是配置文件的编写,怎样编写配置文件能够达到想要的结果,Logstash的配置文件有很多种玩法,具体的就不过多描述,想要不同编写方式的同学可以自己进行查询,在这边我讲述一下我们项目中的方式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
file {
path => "/opt/mor-projects/business-mor-framework-0.0.1-SNAPSHOT.log"
start_position => "beginning"
stat_interval => "3"
type => "systemlog"
}
}

output {
if [type] == "systemlog" {
elasticsearch {
hosts => ["172.19.119.192:9200"]
index => "business-framework-log-%{+YYYY.MM.dd}"
}
}
}

我们的输入是由SpringCloud服务产生的.log日志文件,输出则是单节点的Elasticsearch,其实整体的方案还是非常简单的,后续如果有只查看单节点的SpringCloud服务的日志,还有不同的方法,可以自行探索。然后我们编写Logstash的启动脚本,方便今后的维护以及查看日志。

1
nohup bin/logstash -f config/logstash.conf > logs/logstash.log 2>&1 &

启动之后我们去到logs文件夹中查看输出的日志信息:

logstash

当看到红色框中的信息时,表示Logstash启动成功,另一台机器的配置同理。

Kibana的启动及使用

Kibana是一款开源的,用于数据分析展示的平台。经常跟ElasticSearch配合使用。简单的说就是为ElasticSearch提供前端的数据搜索及分析的展示界面,功能强大,各种图表样式丰富。

1
2
3
4
#下载
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-6.4.2-linux-x86_64.tar.gz
#解压
tar -xzvf kibana-6.4.2-linux-x86_64.tar.gz

启动之前需要对Kibana进行一些配置,我们进入到Kibana的配置文件夹,修改kibana.yml文件,告诉Kibana它要连接的是哪个Elasticsearch。

1
2
3
#进入配置文件夹
cd kibana-6.4.2-linux-x86_64/config/
vi kibana.yml

修改红框的Elasticsearch地址:

kibana

第一个红色框表示的是Kibana的默认启动端口,我们执行下面的命令进行启动:

1
2
#启动
./bin/kibana

然后在浏览器中输入端口号对应的地址:http://localhost:5601

看到如图所示的效果:

kibana2

要想达到上面的效果,首先要去系统管理中将之前写在Logstash配置文件中的文件索引添加,如图:

kibana3

Kibana会自动将你输入的索引检索出来,然后点击下一步,就能够在发现标签页查看到日志的实时加载情况。

原文作者:金奇

原文链接:https://www.rossontheway.com/2021/01/04/构建ELK日志搜索运维平台/

发表日期:January 4th 2021, 12:00:00 am

更新日期:January 6th 2021, 11:50:32 am

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可,除特别声明外,转载请注明出处!

CATALOG
  1. 1. ELK简介
  2. 2. Elasticsearch的单节点安装
  3. 3. Logstash的双节点配置
  4. 4. Kibana的启动及使用