链路追踪日记1-日志的生成到查询(Skywalking、Logstash 、Elasticsearch)


  • 日志生成到查询*

1、日志生成
…。…在应用程序的执行过程中,根据预设的日志级别,和日志框架(logback)的配置,当满足日志记录条件时,日志信息会被生成。

2、日志捕获和增强
…。…logback通过配置文件的设置,将日志信息格式化并输出到指定目的地。logback支持mdc,这是一个允许在日志信息中插入动态上下文的信息的机制。但是logback本身并不知道traceId的生产和管理,需要外部组件的支持。如果导入了org.apache.skywalking.apm-toolkit-logback-1.x依赖,插件会在日志信息自动添加traceId等信息。
…。…SkyWalking Agent通过配置启动脚本的-javaagent参数被加载到应用程序的jvm里面,她会自动拦截应用程序的日志输出,并识别出应用场景里应该包含追踪信息的场景,然后从当前追踪上下文获取traceId等信息注入到日志信息。

3、日志传输和存储
…。…Elasticsearch本身不提供主动拉取日志的功能。Elasticsearch的日志会按照配置的索引清理和保留策略来管理日志。Elasticsearch会根据索引策略和分片机制,将日志分布在集群的多个节点,以实现高可用性和可扩展性。

1、方式一:使用远程日志服务器,比如logstash。服务器将日志写入文件,logstash通过配置的文件输入插件读取文件,根据配置的规则进行处理,并将处理后的日志发送到Elasticsearch

2、方式二:直接从应用服务器发送。使用Logback的ElasticsearchAppender,在Logback配置文件中使用ElasticsearchAppender插件,可以直接将日志发送到ElasticsearchAppender

3、方式三:使用Filebeat等轻量采集器,在日志生成和Elasticsearch之间部署一个轻量级的日志采集器。如Filebeat,Filebeat会监控Logback指定的日志文件位置。一旦有新日志生产,就会发送到Elasticsearch。java代码无法看出是否部署了Filebeat,因为Filebeat等采集器的部署通常是在系统级别或应用服务器级别进行。

4、原日志文件是否保留取决于日志管理策略和系统配置。

4、日志检索和查询
Kibana是Elasticsearch的官方可视化工具。


  • 日志生成到查询延伸出来的问题*

1、什么是日志框架
…。…1、 日志框架是一种软件开发的框架或库,用于生成、收集、处理和记录日志信息
…。…2、日志框架的功能
…。…。…日志记录开发者可以在代码关键位置插入日志。
…。…。…日志级别:支持不同级别的日志记录
…。…。…日志格式化:开发者可以自定义日志格式
…。…。…将日志输出到不同位置:比如控制台、远程服务器、文件、数据库等。
…。…。…日志轮转和归档,支持按时间、大小等进行轮转和归档。
…。…。…。…。…轮转是指将旧的日志文件进行备份和归档,并创建一个新的日志文件来继续记录新的日志信息的过程。主要是为了限制日志文件的大小,同时保留一定时间内的日志记录以后后续分析和审计。日志归档通常是指将旧的不在频繁访问的日志文件进行备份并存在安全的位置。
…。…。…异步日志记录,一些日志框架支持异步记录,即将日志和业务分开,避免日志影响业务效率。

2、服务有日志框架和没有日志框架的区别

…。…1、没有框架
日志门面和日志实现:日志门面(如SLF4J、JULI、Apache Commons Logging等)提供了一种统一的api来编写日志语句。但是并不是实现日志的记录功能。它们依赖于具体的日志实现(logback.log4j)来执行实际的日志操作。

没有日志实现会导致
…。…尝试通过日志门面记录日志,不会看到任何输出,因为日志门面不知道应该把日志发到哪里。
…。…错误和警告,某些情况下。当应用程序尝试记录日志但找不到日志实现时,可能会在控制台输出错误和警告信息。
…。…依赖冲突,如果项目其他库或模块引入了日志实现的依赖,那么主项目尽管没有添加,但其他部分的依赖可能会间接引入,由于没有配置,那么该依赖的默认行为可能不是开发想要的。
…。…可能只输出到控制台,取决于jvm默认行为
…。…性能影响,因为没有绑定日志实现,应用程序尝试记录日志的操作是无效的。会导致不必要的开销(尽管很小)。

…。…2、有框架
保存位置、格式。轮转等由配置文件决定。可以配置输出到控制台、文件、远程服务等。通常会被保存到文件系统。可以根据配置找到日志文件。
…。…查看方式、可以通过文本编辑器或者专门的日志查看工具(og Viewer、Tail)来查看日志。如果配置远程日志服务器(如Logstash、Splunk等),也可以通过web界面查看。
…。…日志详细程度,将由代码里使用的日志级别和logback.xml的日志级别共同决定。

3、日志框架部署(logback)
…。…logback-classic依赖包在spring-boot-logging有,不需要导包
…。…配置logback.xml文件
…。…开始使用

4、什么是远程日志服务器(Logstash)
远程日志服务器是一种用于收集、存储和管理来自远程系统或应用系统的日志数据的服务器。是一种功能特殊的应用程序。

…。…Logstash安装
…。…。…配置.conf文件,(需要确保Logstash可以访问到日志源)
…。…。…应用服务器将日志写入到文件,然后Logstash通过配置的文件输入插件读取问这些文件
…。…。…Logstash接到日志后,根据配置的pipeline处理日志
…。…。…日志输出,处理后的日志会被送到指定的目标,如如Elasticsearch、Kafka、文件

5、为什么不直接把日志发送到Elasticsearch
…。…对于小中型是可以的,但是大型复杂的分布式统统,直接发日志可能会遇到扩展性,可靠性和性能方面的问题。
…。…如果日志量大,需要实时处理和分析,Elasticsearch可能无法单独承担,它更侧重于保存和查询,而不是实时收集和处理。这种情况使用Logstash等类似的日志处理系统作为中间层可以更有效地处理大量日志。
…。…日志的多样性和格式,如果应用服务器生产的日志有多种格式和来源,那么使用Logstash可以更方便统一处理。
…。…可靠性和容错性,如果Elasticsearch故障,可能导致日志丢失或无法及时处理。使用Logstash可以暂存到磁盘。
…。…安全性和合规性,某些情况需要保密和完整,使用Logstash可以更容易实现加密和审计跟踪等。

6、Logstash处理文件,有什么要处理的?
…。…从各个来源收集日志
…。…解析格式、提取关键字、转换数据类型、应用条件判断。添加计算结果等、

7、skywalking部署
…。…下载和部署skywalking到服务器
…。…配置agent.config文件,位于 SkyWalking Agent 的 config 目录下
…。…在项目启动脚本deploy.sh里面使用-javaagenrt配置skywalking-agent.jar和相关参数
…。…在pom.xml引入依赖

        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
        </dependency>

…。…在logback.xml文件配置日志收集

8、@Slf4j的作用是 简化了日志打印代码

…。…如果不使用@Slf4j,打印日志需要

    // 手动声明日志对象  
    private static final Logger logger = LoggerFactory.getLogger(SomeClass.class);  
      public void someMethod() {  
        String info = "信息";  
        logger.error("发送短信失败,短信内容:{}", info);  
    }  

…。…使用之后,打印日志需要

   public void someMethod() {  
        String info = "信息";  
        log.error("发送短信失败,短信内容:{}", info);  
    } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值