微服务系列:分布式日志 ELK 搭建指南

前面,我们从 服务网关微服务系列:服务网关 Spring Cloud Gateway 入门 一直学到了 分布式事务微服务系列:分布式事务 Spring Cloud Alibaba 之 Seata 实战篇,到今天,总算是要将我们的微服务系列结束掉了。不出意外的话,分布式日志这篇将是现阶段微服务系列的最后一篇了,以后可能会对这个系列进行补充。

话不多说,开始现阶段微服务系列的最后一篇的学习。

一、基本介绍

1. 什么是分布式日志

相信大家平时工作中,在生产环境中经常会遇到很多异常,报错信息,需要查看日志信息排查错误,并且这个项目是分布式应用,日志被分散在储存不同的设备上。如果你管理数十上百台服务器,还使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。所以我们使用集中化的日志管理,分布式日志就是对大规模日志数据进行采集、追踪、处理。

一般我们需要进行日志分析场景:直接在日志文件中grepawk就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。

2. ELK 分布式日志

实际上ELK是三款软件的简称,分别是ElasticsearchLogstashKibana组成。

Elasticsearch 基于java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Kibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为LogstashElasticSearch提供的日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。

Logstash 基于java,是一个开源的用于收集,分析和存储日志的工具。

下面是ELK的工作原理: elk

假如,我们的项目部署在了 3 台服务器上,一般情况下,3 台全部需要安装 Elasticsearch,作为主节点的服务器上安装 Kibana,其中一个节点服务器上安装 Logstash

接下来,我们就来搭建一下。

二、搭建 ELK

大家搭建过程中,一定要注意版本之间的对应,如果版本不对应,会出现各种启动报错。

版本说明:

  • CentOS 7.9
  • JDK 1.8
  • Elasticsearch-8.0.0
  • Logstash-8.0.0
  • Kibana-8.0.0

1. Elasticsearch

1.1 、简介

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。

1.2、安装配置

首先去官网下载:Download Elasticsearch | Elastic,选择 Linux 版本

image-20220221143822296

PS:官网的下载速度还是挺快的

本次我使用的是虚拟机中的 CentOS 7 ,首先将下载下来的 tar 包复制到虚拟机中的 /usr/local 下,

  • 解压
tar -zxvf elasticsearch-8.0.0-linux-x86_64.tar.gz
  • 修改配置
cd /usr/local/elasticsearch-8.0.0/config/
vim elasticsearch.yml
cluster.name: my-application
node.name: node-1
path.data: /home/esuser/data	# 数据文件存放目录
path.logs: /home/esuser/logs	# 日志文件存放目录
network.host: 0.0.0.0			# 对所有IP开放
http.port: 9200					# 端口号
discovery.seed_hosts: ["192.168.20.105"]
cluster.initial_master_nodes: ["node-1"]

注意:path.datapath.logs 目录需要自己手动创建出来 mkdir

注:这些配置默认是被注释的状态,修改之后打开注释即可

除此之外,因本次我们只是测试学习,所以我们可以把安全相关的配置给关掉,都从 true 改为了 false

# Enable security features
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: false
  keystore.path: certs/http.p12
# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
  enabled: false

修改完成后保存退出编辑

  • 创建 esuser 用户

因为ElasticSearch不支持Root用户直接操作,因此我们需要创建一个esuser用户

# 创建用户
useradd esuser
# 设置密码
passwd esuser
# 赋予用户权限
chown -R esuser:esuser /usr/local/elasticsearch-8.0.0
1.3、启动

切换用户成 esuser 用户进行操作

su esuser
cd /usr/local/elasticsearch-8.0.0/bin
./elasticsearch -d & tail -f /home/esuser/logs/my-application.log 	# 后台启动并查看启动日志

如果启动没有报错,宿主机浏览器访问地址:http://192.168.20.105:9200/

其中 192.168.20.105 是虚拟机的静态 ip ,访问成功如下图(注意防火墙)

image-20220221150331066

2. Logstash

2.1、简介

Logstash 是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到存储库中,本篇中我们的存储库当然就是ElasticSearch 了。

2.2、安装配置

官网下载地址:Download Logstash Free | Get Started Now | Elastic

image-20220221150759334

将下载下来的 tar 包复制到虚拟机中的 /usr/local 下,

  • 解压
tar -zxvf logstash-8.0.0-linux-x86_64.tar.gz
  • 新增配置文件
cd /usr/local/logstash-8.0.0/bin
touch logstash-elasticsearch.conf
vim logstash-elasticsearch.conf
input {
	stdin {}
}
output {
	elasticsearch {
		hosts => '192.168.20.105:9200'
	}
	stdout {
		codec => rubydebug
	}
}

注意里面 elasticsearch 的地址

2.3、启动

此时是在 root 用户下

cd /usr/local/logstash-8.0.0/bin
nohup ./logstash -f logstash-elasticsearch.conf &		# 后台启动

注:执行后台启动命令,查看 nohup.out 日志时发现有报错,但好像也启动成功了,不影响使用,不用 nohup 则不会报错。

使用 jps查看当前所有 java 进程

image-20220221152813960

发现启动成功了。

3. Kibana

3.1、简介

Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。

3.2、安装配置

官网下载地址:Download Kibana Free | Get Started Now | Elastic

image-20220221153019991

将下载下来的 tar 包复制到虚拟机中的 /usr/local 下,

  • 解压
tar -zxvf kibana-8.0.0-linux-x86_64.tar.gz
  • 修改配置
cd /usr/local/kibana-8.0.0/config/
vim kibana.yml
server.port: 5601			# 端口号
server.host: "0.0.0.0"		# 对所有ip开放访问
server.name: "my-kibana"
elasticsearch.hosts: ["http://192.168.20.105:9200"]		# es 地址
i18n.locale: "zh-CN"	# 汉化

注:这些配置默认是被注释的状态,修改之后打开注释即可

  • kibana 同样不能使用 root 用户启动,所以我们使用前面创建的 esuser 用户,先授权
chown -R esuser:esuser /usr/local/kibana-8.0.0
3.3、启动

切换到 esuser 用户

su esuser

后台启动

/usr/local/kibana-8.0.0/bin &

启动成功,浏览器访问地址:http://192.168.20.105:5601/

出现以下页面,说明启动成功

image-20220221155653678

我们点击 适用样例数据,点击添加数据

image-20220221155825927

点击 Discover

image-20220221155911850

就可以看到样例数据

image-20220221155950150

到这里,我们分布式日志所需要的软件都已经安装配置并启动成功

至于如何使用,感觉还需要一篇文章来写。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值