Docker搭建 lek日志框架

本文探讨了原生ELK架构在日志处理中的局限,并提出通过限速器优化Logstash、引入分布式配置和使用消息队列来改进。实验显示,改进后系统CPU占用大幅下降,日志处理速度提升,数据完整无丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言: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日志已经进来了
在这里插入图片描述

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

  T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值