日志分析实践与应用

日志分析实践与应用

      这个场景是,日志系统平时为了系统处理能力,我们使用INFO级别或ERROR级别,当发现问题时,我们需要不停服务的动态的将日志级别变更为DEBUG以便在执行细节发现问题,下面列举了动态变更的操作,需要借助代码、定时和配置中心服务。

网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了红岗免费建站欢迎大家使用!

      在微服务的场景,日志是散落在各个服务集群节点中,不方便查看,所以我们需要通过集中收集到一处保存、查看和分析。

应用程序中日志的配置

logback.xml

  • 1.在configuration中配置include,引用defaults.xml、console-appender.xml和file-appender.xml基础配置,可以复用变量、默认配置和策略。
  • 2.定义一个stash的appender,配置目标主机和端口以及转码器用什么。通过配置将日志发送到统一日志管理平台进一步分析与保存。
  • 注:对于推荐使用logback-spring.xml不使用logback.xml,官方也没有给出推荐理由,经测试logback.xml配置依然可用,也可以在变更后自动重启,所以没换,只是注意configuration属性scan不能设置为true,由spring来扫描即可。

具体配置如下:



    
    
    
  
   
    
    
        %d{yyyy-MM-dd HH:mm:ss} [%level] - %m%n
    
  

   
  
     
    d:/logs/error.log
    
    
        %d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n
    
    
    
      
      ERROR
      
      ACCEPT
      
      DENY
    
    
    
      
      error.%d{yyyy-MM-dd}.log
      
      30
    
  

    
    
        localhost:4560
        
    

    
    
        ${fluentHost}
    

  
  
    
    
    
  

定时更新日志代码

/**
 * 日志级别更新定时2分钟一刷新
 */
@Scheduled(fixedRate=1000*60*2)
public void refresh() {
    String moduleKey = "com.ftsafe";
    //判断只有logback的日志实现才适用此方法
    if (log instanceof ch.qos.logback.classic.Logger) {
        Config applicationConfig = ConfigService.getAppConfig();
        String levelConfig = applicationConfig.getProperty("logger.level."+ moduleKey, null);
        ch.qos.logback.classic.Logger classicLog = (ch.qos.logback.classic.Logger) log;
        ch.qos.logback.classic.Logger logger = classicLog.getLoggerContext().getLogger(moduleKey);
        logger.setLevel(Level.toLevel(levelConfig));
        log.debug("logger modify level {}", levelConfig);
        log.info("logger modify level {}", levelConfig);
    }
    log.info("logger refresh invoked!");
    log.debug("logger refresh invoked!");
}

集中日志管理(win环境)

Elasticsearch

是一个搜索和分析引擎
解压

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.zip

启动

d:/baiduYun/java/elasticsearch-6.0.0/bin/elasticsearch.bat
Kibana

允许用户在 Elasticsearch 中使用图表和图表可视化数据
解压

https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-windows-x86_64.zip

启动

d:/baiduYun/java/kibana-6.0.0-windows-x86_64/bin/kibana.bat
logstash

是一个服务器端的数据处理管道,可以同时从多个源获取数据,将其转换为Elasticsearch之类的“stash”
解压

https://artifacts.elastic.co/downloads/logstash/Logstash-6.0.0.zip

配置logstash.conf配置文件内容

input {
    tcp {
        port => 4560
        host => localhost
    }
}
output {
    elasticsearch { hosts => ["localhost:9200"] }
    stdout { codec => rubydebug }
}

启动

d:/baiduYun/java/logstash-6.0.0/bin/logstash.bat -f d:\baiduYun\java\logstash-6.0.0\bin\logstash.conf

浏览日志

访问http://localhost:5601进入kibana界面,可以在Discover界面输入检索条件,查出希望检索到的内容。

附录:

spring logging

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html
defaults.xml






    
    
    
    
    

    
    
    
    
    
    
    

console-appender.xml






    
        
            ${CONSOLE_LOG_PATTERN}
        
    

file-appender.xml






    
        
            ${FILE_LOG_PATTERN}
        
        ${LOG_FILE}
        
            ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
            ${LOG_FILE_MAX_SIZE:-10MB}
            ${LOG_FILE_MAX_HISTORY:-0}
        
    

参考内容

  • https://www.jianshu.com/p/c9d9fe37256a
  • 《51CTO下载-SpringCloud微服务架构开发实战.pdf》

当前文章:日志分析实践与应用
标题路径:http://ybzwz.com/article/ghhgji.html