前言:ELK架构是解决日志分布式采集与分析问题中具有代表性的解决方案。但原生ELK架构存在Logstash对CPU资源占用较大、无法动态更新日志相关配置和日志数据传输过程中数据易丢失等问题。为满足现实中大型分布式服务的日志采集与分析需求,对原生ELK架构作如下改进:在收集过程中增加限速器以减少CPU占用率;增加分布式注册中心实现相关配置动态更新;增加消息队列使得消息传输过程更健全。实验结果表明,改进后的ELK日志采集及分析系统与原生ELK相比,CPU占用率减少了近60%,日志速度提高了3倍,且消息丢失率为零。日志框架
docker 镜像
准备一下三个镜像

elasticsearch:7.4.2

   docker pull  elasticsearch:7.4.2          

kibana:7.4.2

   docker pull  kibana:7.4.2          

logstash:7.4.2

   docker pull  elastic/logstash:7.4.2          

elasticsearch和kibana的启动命令见上一篇

logstash启动

docker run -d --name logstash -p 5044:5044 logstash:7.4.2

进入容器 logstash

docker  exec -it logstash sh

进入cd pipeline/下编辑vi logstash.conf 文件
在这里插入图片描述


input {
    # tcp方法进行输入
    tcp {
        port => 5044    # 暴露的端口
        codec => "json"    # 以JSON的方式进行传输
    }
}

# 对日志进行处理
filter {
    ruby {
       code => "event.set('timestamp', (event.get('@timestamp').time.localtime + 8*60*60).strftime('%Y-%m-%d %H:%M:%S'))"    # 格式化时间
    }
}

output {
    # 配置ES
    elasticsearch {
        hosts => "ip:9201"
        index => "%{[appname]}-%{+YYYY.MM.dd}"
    }
    stdout {
        # 以debug的方式运行,会在控制台打印日志信息,可以不要stdout这一段
        codec => rubydebug { }
    }
}

在进入cd config/vi logstash.yml文件

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://ip:9201" ]

修改完保存重启容器

更新步骤

在项目种配置 打印日志的 xml文件和引入jar包 依赖

      <!-- logstash elk 日志-->
		<dependency>
			<groupId>net.logstash.logback</groupId>
			<artifactId>logstash-logback-encoder</artifactId>
			<version>4.11</version>
		</dependency>

写入xml 文件
在这里插入图片描述
xml配置文件多种规则 我这就是简单例子 请参考

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <contextName>logback</contextName>

    <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>logstash的IP:5044</destination>
        <!-- encoder必须配置,有多种可选 -->

        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    <root level="info">
        <appender-ref ref="stash" />
    </root>
</configuration>

启动kibana 查看
在这里插入图片描述2
在这里插入图片描述
3
在这里插入图片描述
4

在这里插入图片描述
点击
在这里插入图片描述
ok日志已经进来了
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐