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

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 十九.SpringCloud极简入门-基于Docker整合ELK分布式日志解决方案,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

前言

在微服务架构中服务众多,每个微服务都会产生大量的日志数据,服务的调用错综复杂,如何才能快速定位到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>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
   		 <!--  logstash服务器地址-->
        <destination>192.168.119.129:5044</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>


    <root  level="info" additivity="false">
        <appender-ref ref="console"/>
        <appender-ref ref="stash"/>
    </root>

</configuration>

到这里配置完毕,启动程序进行访问,程序就会把日志自动发送到 192.168.119.129:5044 服务器中。然后我们可以直接通过kibana可视化工具进行分析。 这里我们点击:discover 创建 index pattern
在这里插入图片描述
按照timestamp 过滤
在这里插入图片描述

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/149192.html

(1)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!