微服务系列:分布式日志 ELK 搭建指南
前面,我们从 服务网关:微服务系列:服务网关 Spring Cloud Gateway 入门 一直学到了 分布式事务:微服务系列:分布式事务 Spring Cloud Alibaba 之 Seata 实战篇,到今天,总算是要将我们的微服务系列结束掉了。不出意外的话,分布式日志这篇将是现阶段微服务系列的最后一篇了,以后可能会对这个系列进行补充。
话不多说,开始现阶段微服务系列的最后一篇的学习。
一、基本介绍
1. 什么是分布式日志
相信大家平时工作中,在生产环境中经常会遇到很多异常,报错信息,需要查看日志信息排查错误,并且这个项目是分布式应用,日志被分散在储存不同的设备上。如果你管理数十上百台服务器,还使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。所以我们使用集中化的日志管理,分布式日志就是对大规模日志数据进行采集、追踪、处理。
一般我们需要进行日志分析场景:直接在日志文件中grep
、awk
就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。
2. ELK 分布式日志
实际上ELK
是三款软件的简称,分别是Elasticsearch
、 Logstash
、Kibana
组成。
Elasticsearch 基于java
,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful
风格接口,多数据源,自动搜索负载等。
Kibana 基于nodejs
,也是一个开源和免费的工具,Kibana
可以为Logstash
和ElasticSearch
提供的日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。
Logstash 基于java
,是一个开源的用于收集,分析和存储日志的工具。
下面是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
版本
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.data
和 path.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: falsekeystore.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 ,访问成功如下图(注意防火墙)
2. Logstash
2.1、简介
Logstash
是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到存储库中,本篇中我们的存储库当然就是ElasticSearch
了。
2.2、安装配置
官网下载地址:Download Logstash Free | Get Started Now | Elastic
将下载下来的 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 进程
发现启动成功了。
3. Kibana
3.1、简介
Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。
3.2、安装配置
官网下载地址:Download Kibana Free | Get Started Now | Elastic
将下载下来的 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/
出现以下页面,说明启动成功
我们点击 适用样例数据
,点击添加数据
点击 Discover
就可以看到样例数据
到这里,我们分布式日志所需要的软件都已经安装配置并启动成功
至于如何使用,感觉还需要一篇文章来写。
微服务系列:分布式日志 ELK 搭建指南相关推荐
- 微服务中统一日志-ELK
微服务中统一日志-ELK 一.简介 1.介绍 2.流程 3.要求 4.下载地址 二.安装Elasticsearch 1.创建文件存放目录 2.进入目录 3.下载 4.解压 5.修改配置 5.1.介绍 ...
- 微服务系列:Nacos的搭建演武版(单机+集群+监控)
一.前言 Docker版:Docker初识:Nacos服务的搭建(单机版+集群版) 官网版:Nacos官方文档 二.安装说明: 系统:centos 7 mysql:8 nacos:2.0.3 安装包下 ...
- 微服务系列:分布式文件存储之 MinIO 入门指南
经过前面多篇文章我们学习了服务网关.服务调用.服务注册.服务监控等微服务系列的的相关知识,今天开始我们来学习一下分布式文件的相关知识. 首先我们从学习 MinIO 对象存储服务开始,后面还会学习下其他 ...
- 微服务开发利器:ELK进行日志采集以及统一处理
微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等. 我们将重点介绍微服务架构中的日志收 ...
- 分布式与微服务系列 - Dubbo
一.前言 本内容仅用于个人学习笔记,如有侵扰,联系删除 视频教程:尚硅谷Dubbo教程(dubbo经典之作) 二.基础知识 1.分布式基础理论 1.1.什么是分布式系统? <分布式系统原理与范型 ...
- 分布式与微服务系列(三)、SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者、消费者)
SpringBoot+Zookeeper集群+Nginx反向代理+Dubbo分布式托管(提供者.消费者) 一.软件架构和微服务需求 1.1.微服务需求 1.2.框架选择 1.3.集群分布(下面为此图实 ...
- 微服务中的日志管理 — ELK
通过使用微服务,我们能够解决许多在单体应用中暴露的问题,并且它允许我们创建稳定的分布式应用程序,并对代码,团队规模,维护,发布周期,云计算等进行所需要的控制.但同时微服务也引入了一些挑战,例如分布式日 ...
- .NET Core微服务系列基础文章索引(目录导航Final版)
一.为啥要总结和收集这个系列? 今年从原来的Team里面被抽出来加入了新的Team,开始做Java微服务的开发工作,接触了Spring Boot, Spring Cloud等技术栈,对微服务这种架构有 ...
- 微服务和分布式的区别
分布式架构是分布式计算技术的应用和工具,目前成熟的技术包括J2EE, CORBA和.NET(DCOM),这些技术牵扯的内容非常广,相关的书籍也非常多,也没有涉及这些技术的细节,只是从各种分布式系统平台 ...
- HM-SpringCloud微服务系列11.1【多级缓存的意义JVM进程缓存】
HM-SpringCloud微服务系列11:多级缓存-高级篇 1. 什么是多级缓存 多级缓存是亿级流量的缓存方案 浏览器访问静态资源时,优先读取浏览器本地缓存 访问非静态资源(ajax查询数据)时,访 ...
最新文章
- MySQL 学习笔记(9)— 事务控制语句、事务属性以及并发和隔离级别
- 栈相关经典题:每日温度
- Ubuntu下编译内核
- Linux信号量之内核信号量
- jQuery对象与DOM对象的区别
- 想跟着微软赛跑会累死你
- 为什么不应该用Stream forEach替换for循环的3个原因
- php mysql倒计时_php 倒计时程序
- JEECG 引领J2EE新开发模式插件式开发 - 公开课2013-12-12
- 自适应 响应式展示型企业通用网站源码 织梦dedecms模板
- jsp显示服务器路径下的图片,jsp 从服务器获取图片路径
- 优先队列的优先级设置法
- 如何使用C#操作WinAPI
- 分析表analyze table my_table compute statistics;
- Cisco Packet Tracer思科模拟器中OSPF动态路由配置
- 华为鸿蒙deveco studio编译时提示Browserslist: caniuse-lite is outdated的解决办法
- fmx android stylebook 白边
- 【React源码】(十八)React 算法之调和算法
- 通过IP地址连接两台电脑
- 商业网站建设和运营的四度:Approachability、Usability、 Accessibility 和 Profitability...
热门文章
- matlab中小波去燥原理,用matlab进行小波去噪的程序
- 周立功烧写器(ZLG SMARTPRO5000U-Plus)烧写验证
- 虚拟机 桥接模式和NAT模式下的ip地址、更改kali虚拟机的网络适配器
- Excel批量随机生成姓名
- 基于ESP-IDF环境的ESP32-C3开发之No such file or directory
- 开箱即用——用模板快速上线一个HR 服务中心
- android 渐变歌词,Android UI之自定义——最简单的仿QQ音乐歌词颜色渐变
- 计算机操作员管理规定,系统安全运行管理制度及保障措施
- 金蝶EAS 后台事务监控
- vue音乐播放器demo,主要是模仿慕课音乐播放器教程制作的一个小demo