0


十九.SpringCloud极简入门-基于Docker整合ELK分布式日志解决方案

前言

在微服务架构中服务众多,每个微服务都会产生大量的日志数据,服务的调用错综复杂,如何才能快速定位到BUG?所以日志收集是微服务项目不可或缺的。为了方便日志分析,我们需要对微服务的日志数据进行存储,同时提供一个友好的可视化界面方便分析。存储到文件和数据库都不太合适因为数据量太大,也不好查阅。ELK是一个较为成熟的分布式日志解决方案。

什么是ELK

ELK不是一个框架,而是包含三款产品的组合:Elasticsearch、Logstash、Kibana : 下面是对这三个技术的解释
在这里插入图片描述

  • Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
  • logstash是一种分布式日志收集框架,开发语言是JRuby,当然是为了与Java平台对接,不过与Ruby语法兼容良好,非常简洁强大,经常与ElasticSearch,Kibana配置,组成著名的ELK技术栈,非常适合用来做日志数据的分析。作为日志收集软件,它可以收集日志到多种存储系统或临时中转系统,如ElasticSearch,MySQL,Redis,Kakfa,HDFS, Lucene,Solr等
  • Kibana是一个开源分析和可视化平台,旨在与Elasticsearch协同工作。您使用Kibana搜索,查看和与存储在Elasticsearch索引中的数据进行交互。您可以轻松执行高级数据分析,并在各种图表,表格和地图中可视化您的数据

简单理解就是:我们通过Logstash来收集数据,然后Logstash把数据存储到ElasticSearch中,在使用Kibana可视化工具和ElasticSearch交互,提供友好的界面来方便分析和统计数据。流程如下
在这里插入图片描述

ELK服务器安装

我们采用Docker来安装ELK服务器,所以需要先安装Docker,然后安装ELK

安装Docker

在准备好的linux机器上安装好Docker

# yum源指定[root@localhost ~]# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装docker[root@localhost ~]# sudo yum -y install docker-ce#启动dokcer[root@localhost ~]# sudo systemctl start docker

使用阿里云镜像加速

[root@localhost ~]# vi /etc/docker/daemon.json#加入如下内容{"registry-mirrors":["https://5pfmrxk8.mirror.aliyuncs.com"]}

重启Docker

[root@localhost ~]# systemctl restart docker

安装ELK服务器

这里使用ELK镜像:sebp/elk:6.8.22 ,该镜像中已经包含了ELK所需要的三个组件。

# 下载elk镜像[root@localhost ~]# docker pull sebp/elk:6.8.22# 启动ELK容器 ,指定最小内存和最大内存,并映射相关端口[root@localhost ~]# docker run --name elk --restart always -d -p 5601:5601 -p 9200:9200 -p 5044:5044 -e ES_MIN_MEM=128m -e ES_MAX_MEM=1024m -m 2048M sebp/elk:6.8.22# 关闭防火墙,我这里使用定时vm虚拟机,如果是云服务器记得开放端口[root@localhost ~]# systemctl stop firewalld

启动比较慢,需要等几分钟,访问测试:我的linux机器的ip是:192.168.119.129:5601
在这里插入图片描述
我们还需要对容器中的logstash进行配置,对数据输入和输出做配置

# 进入到ELK容器中[root@localhost ~]# docker exec -it elk /bin/bash#修改logstash配置
root@79823af789f6:/# vim /etc/logstash/conf.d/02-beats-input.conf

编辑文件

/etc/logstash/conf.d/02-beats-input.conf

删掉已有内容,把下面的内容粘贴进去

input{
    tcp{
        port => 5044
        codec=> json_lines
    }
}
output{
    elasticsearch{
        hosts => ["localhost:9200"]
    }
}

大概含义是:

  • input代表数据输入配置 , logstatsh的开放端口是 5044
  • output代表数据输出配置,输出到elasticsearch, hosts是es的地址localhost:9200

然后退出容器 : exit ,重启ELK容器

[root@localhost ~]# docker restart elk

到这里ELK服务器安装成功,接下来就是微服务把日志收集到ELK服务器了。

微服务集成ELK

接下来就是微服务把日志收集到ELK服务器了,实现原理就是通过logstash来收集logback日志框架打印的日志,然后发送到云服务器ELK中。首先我们需要导入 logstash 整合 logback 的依赖

<dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>5.2</version></dependency>

然后为微服务添加日志配置文件

logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?><configuration><includeresource="org/springframework/boot/logging/logback/base.xml"/><!--输出到控制台--><appendername="console"class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appendername="stash"class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--  logstash服务器地址--><destination>192.168.119.129:5044</destination><encoderclass="net.logstash.logback.encoder.LogstashEncoder"/></appender><rootlevel="info"additivity="false"><appender-refref="console"/><appender-refref="stash"/></root></configuration>

到这里配置完毕,启动程序进行访问,程序就会把日志自动发送到

192.168.119.129:5044

服务器中。然后我们可以直接通过kibana可视化工具进行分析。 这里我们点击:discover 创建 index pattern
在这里插入图片描述
按照timestamp 过滤
在这里插入图片描述

然后再次点击Discover 就可以看到日志数据
在这里插入图片描述

到这里文章就结束了,喜欢的话:点赞好评加收藏!!!

标签: ELK

本文转载自: https://blog.csdn.net/u014494148/article/details/124260528
版权归原作者 墨家巨子@俏如来 所有, 如有侵权,请联系我们删除。

“十九.SpringCloud极简入门-基于Docker整合ELK分布式日志解决方案”的评论:

还没有评论