基于logback、logstash、mongodb的统一日志收集
1、引入logstash日志格式的编码器依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.2</version>
</dependency>
2、编辑logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--该配置将日志记录到父工程的build目录下,并以 ${spring.application.name}.json 为文件名-->
<springProperty scope="context" name="springAppName"
source="spring.application.name" />
<!-- 日志在工程中的输出位置 -->
<property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}" />
<!-- 控制台的日志输出样式 -->
<property name="CONSOLE_LOG_PATTERN"
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!-- 生成发送给logstash的JSON格式的日志 -->
<appender name="logstash_remote" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:9610</destination>
<!-- 日志输出编码 -->
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"time": "%d{yyyy-MM-dd HH:mm:ss.SSS}",
"level": "%level",
"service": "${springAppName:-}",
"traceId": "%X{X-B3-TraceId:-}",
"spanId": "%X{X-B3-SpanId:-}",
"exportable": "%X{X-Span-Export:-}",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger{40}",
"message": "%message",
"stack_trace":"%exception{50}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="logstash_remote" />
</root>
</configuration>
3、安装logstash:https://www.elastic.co/cn/downloads/logstash
4、安装logstash-output-mongodb
使用yum方式安装的logstash,其安装路径为:/usr/share/logstash
,配置文件路径:/etc/logstash
#查看已经安装的logstash插件
./logstash-plugin list
#安装logstash-output-mongodb插件,默认安装最新版,已知3.1.7版本存在bug,无法将数据转发给mongodb
#使用--version指定版本,推荐使用3.1.6
./logstash-plugin install logstash-output-mongodb --version=3.1.6
#卸载已安装的插件
./logstash-plugin remove logstash-output-mongodb
#安装完成后需重启服务
5、安装mongodb:https://www.mongodb.com/try/download/community
建议安装mongodb V5.1.10版本,与logstash-output-mongodb V3.1.6适配
6、多管道特性的支持
所有的管道配置文件应当放到 /etc/logstash/conf.d/
目录下,且以 .conf 结尾
以下管道配置从9610端口接收数据,格式化为json,然后输出到mongodb,input和output为必须,filter可选
input {
tcp {
port => 9610
codec => json_lines
}
}
output{
mongodb {
codec => line {format => "%{message}"}
uri => "mongodb://[用户名:密码@]127.0.0.1:27017[/认证的数据库]"
database => "ms_document_center"
collection => "info"
}
file {
path => "/data/logstashStorage/documentCenter/%{hostip}-%{+YYYY.MM.dd}.log"
codec => line { format => "%{message}"}
}
}
7、启动logstash
#此系统命令将自动读取 /etc/logstash/pipeline.yaml文件,默认情况下将进一步读取 /etc/logstash/conf.d/ 目录下的管道配置
#但实际使用过程中会报错
systemctl start logstash
#直接运行logstash,程序将读取/usr/share/logstash/config/pipeline.yml配置文件,自动开启多管道
/usr/share/logstash/bin/logstash
#也可以使用-f选项指定配置文件启动单个管道
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/ms_document_center_info.conf
标签:收集,mongodb,etc,conf,output,日志,安装,logstash,统一
From: https://www.cnblogs.com/tanmujin/p/17440826.html