当前位置: 首页 > news >正文

通过docker-compose部署elk日志系统,并使用springboot整合

ELK是一种强大的分布式日志管理解决方案,它由三个核心组件组成:

  1. Elasticsearch:作为分布式搜索和分析引擎,Elasticsearch能够快速地存储、搜索和分析大量的日志数据,帮助用户轻松地找到所需的信息。

  2. Logstash:作为数据处理管道,Logstash能够从各种来源收集日志数据,并进行过滤、转换和发送到Elasticsearch等目标存储中。

  3. Kibana:作为Web界面,Kibana能够帮助用户可视化和分析日志数据,创建仪表板和报表,以便更好地理解和监控业务中的日志信息。

ELK能够帮助业务实现日志数据的集中管理、快速搜索和分析,从而提高故障排查的效率,优化系统性能,以及发现潜在的安全威胁。通过ELK,业务可以更好地利用日志数据来支持决策和监控业务运营。

下面,本文会介绍ELK的安装以及使用

 搭建ELK

准备docker-compose.yml

version: '3'
services:elasticsearch:image: elasticsearch:6.4.0container_name: elasticsearchenvironment:- "cluster.name=elasticsearch" #设置集群名称为elasticsearch- "discovery.type=single-node" #以单一节点模式启动- "ES_JAVA_OPTS=-Xms2048m -Xmx2048m" #设置使用jvm内存大小volumes:- /mnt/data3/dockerfiles/elk2/elk_stanrd/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载- /mnt/data3/dockerfiles/elk2/elk_stanrd/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载ports:- 9200:9200- 9300:9300kibana:image: kibana:6.4.0container_name: kibanalinks:- elasticsearch:es #可以用es这个域名访问elasticsearch服务depends_on:- elasticsearch #kibana在elasticsearch启动之后再启动environment:- "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址ports:- 5601:5601logstash:image: logstash:6.4.0container_name: logstashvolumes:- /mnt/data3/dockerfiles/elk2/elk_stanrd/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件depends_on:- elasticsearch #kibana在elasticsearch启动之后再启动links:- elasticsearch:es #可以用es这个域名访问elasticsearch服务ports:- 4560:4560

logstash.conf

input {tcp {mode => "server"host => "0.0.0.0"port => 4560codec => json_lines}
}output {if "java" in [tags] {elasticsearch {hosts => "es:9200"index => "java-logs-%{+YYYY.MM.dd}"}}if "python" in [tags] {elasticsearch {hosts => "es:9200"index => "python-logs-%{+YYYY.MM.dd}"}}
}

启动 

docker-compose up -d

开启kibana的端口

centos开启防火墙

 访问

ip:{你的端口:5601}

看到这样的界面,代表运行成功

配置索引

点击management--->kibana--->index patterns

 

 这里我会选择这一个,点击create index pattern创建

springboot整合ELK

配置maven

需要加入

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

打印日志的时候可以使用lombok或其他框架,但是注意一下之前使用log攻击的bug,尽量跳过这些版本,注意,低版本的springboot默认的日志库有问题。

配置文件

logging:config: ./config/logback-spring.xml

日志配置文件模板

<configuration><!-- %m输出的信息, %p日志级别, %t线程名, %d日期, %c类的全名, %i索引 --><!-- appender是configuration的子节点,是负责写日志的组件 --><!-- ConsoleAppender把日志输出到控制台 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) (%file:%line\)- %m%n</pattern><!-- 控制台也要使用utf-8,不要使用gbk --><charset>UTF-8</charset></encoder></appender><!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 --><!-- 1.先按日期存日志,日期变了,将前一天的日志文件名重命名为xxx%日期%索引,新的日志仍然是sys.log --><!-- 2.如果日期没有变化,但是当前日志文件的大小超过1kb时,对当前日志进行分割 重名名 --><appender name="syslog" class="ch.qos.logback.core.rolling.RollingFileAppender"><File>log/ant-back.log</File><!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 --><!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 --><!-- 文件名:log/sys.2017-12-05.0.log --><fileNamePattern>log/ant-back.%d.%i.log</fileNamePattern><!-- 每产生一个日志文件,该日志文件的保存期限为120天 --><maxHistory>120</maxHistory><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><!-- maxFileSize:这是活动文件的大小,默认值是10MB,本篇设置为100MB --><maxFileSize>100MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy></rollingPolicy><encoder><!-- pattern节点,用来设置日志的输入格式 --><pattern>%d %p (%file:%line\)- %m%n</pattern><!-- 记录日志的编码 --><charset>UTF-8</charset></encoder></appender><!-- 控制台日志输出级别 --><!-- <root level="info"><appender-ref ref="STDOUT"/></root>--><!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 --><!-- com.example.ant为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG --><!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE  --><!--<logger name="com.example.ant" level="FATAL"><appender-ref ref="syslog"/></logger>--><!-- 为logstash输出的JSON格式的Appender --><appender name="logstash"class="net.logstash.logback.appender.LogstashTcpSocketAppender"><!--可以访问的logstash日志收集端口--><destination>ip:4560</destination><!-- 日志输出编码 --><encoderclass="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"><providers><timestamp><timeZone>UTC</timeZone></timestamp><pattern><pattern>{"tags": "java","thread": "%thread","logLevel": "%level","message": "%message","class": "%logger{40}","serviceName": "asr_hot_word","trace": "%X{X-B3-TraceId:-}","span": "%X{X-B3-SpanId:-}","exportable": "%X{X-Span-Export:-}","pid": "${PID:-}"}</pattern></pattern></providers></encoder></appender><!-- 日志输出级别 --><root level="INFO"><appender-ref ref="STDOUT"/><appender-ref ref="logstash" /></root></configuration>

配置好启动,点击discovery即可查看日志信息

http://www.lryc.cn/news/224904.html

相关文章:

  • 【NLP】特征提取: 广泛指南和 3 个操作教程 [Python、CNN、BERT]
  • 数据结构-单链表
  • 红队系列-IOT安全深入浅出
  • 亚数受邀参加“长三角G60科创走廊量子密码应用创新联盟(中心)”启动仪式
  • 直方图学习
  • Java / Android 多线程和 synchroized 锁
  • 基于51单片机的万年历-脉搏计仿真及源程序
  • 【ARFoundation学习笔记】点云与参考点
  • uni-app:js实现数组中的相关处理-数组复制
  • 8 STM32标准库函数 之 实时时钟(RTC)所有函数的介绍及使用
  • ARMday04(开发版简介、LED点灯)
  • 国际腾讯云:云服务器疑似被病毒入侵问题解决方案!!!
  • Perl语言用多线程爬取商品信息并做可视化处理
  • 认识计算机-JavaEE初阶
  • you-get - 使用代码下载视频
  • 【Proteus仿真】【51单片机】汽车尾灯控制设计
  • 浙大恩特客户资源管理系统任意文件上传漏洞复现
  • 史上第一款AOSP开发的IDE (支持Java/Kotlin/C++/Jni/Native/Shell/Python)
  • GCC + Vscode 搭建 nRF52xxx 开发环境
  • Linux应用开发基础知识——Framebuffer 应用编程(四)
  • 智安网络|数据库入门秘籍:通俗易懂,轻松掌握与实践
  • EXCEL中安装多个vsto插件,插件之间互相影响功能,怎么解决
  • Java枚举
  • 基于MATLAB的关节型六轴机械臂轨迹规划仿真
  • 双11狂欢最后一天
  • YOLOX: Exceeding YOLO Series in 2021(2021.8)
  • HBuilderX 运行Android App项目至雷电模拟器
  • Java进阶(JVM调优)——阿里云的Arthas的使用 安装和使用 死锁查找案例,重新加载案例,慢调用分析
  • 续:将基于Nasm汇编的打字小游戏,移植到DOSBox
  • 外部访问K8S集群内部的kafka集群服务