日志分析实践与应用
日志分析实践与应用
这个场景是,日志系统平时为了系统处理能力,我们使用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://scyanting.com/article/ghhgji.html