关键词:
一、使用LogStash
在项目中添加Gradle依赖,然后Sync项目:
"net.logstash.logback:logstash-logback-encoder:4.11",
或者使用Maven:
<!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>
然后添加配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextName>${HOSTNAME}</contextName>
<property name="LOG_PATH" value="/var/log" />
<springProperty scope="context" name="appName" source="spring.application.name" />
<springProperty scope="context" name="ip" source="spring.cloud.client.ipAddress" />
<property name="CONSOLE_LOG_PATTERN"
value="[%d{yyyy-MM-dd HH:mm:ss.SSS} ${ip} ${appName} %highlight(%-5level) %yellow(%X{X-B3-TraceId}),%green(%X{X-B3-SpanId}),%blue(%X{X-B3-ParentSpanId}) %yellow(%thread) %green(%logger) %msg%n"/>
<appender name="FILEERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>../${LOG_PATH}/${appName}/${appName}-error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>../${LOG_PATH}/${appName}/${appName}-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="FILEWARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>../${LOG_PATH}/${appName}/${appName}-warn.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>../${LOG_PATH}/${appName}/${appName}-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>warn</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="FILEINFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>../${LOG_PATH}/${appName}/${appName}-info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>../${LOG_PATH}/${appName}/${appName}-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="logstash" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>../${LOG_PATH}/${appName}/${appName}.json</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${appName}/${appName}-%d{yyyy-MM-dd}.json</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"ip": "${ip}",
"app": "${appName}",
"level": "%level",
"trace": "%X{X-B3-TraceId:-}",
"span": "%X{X-B3-SpanId:-}",
"parent": "%X{X-B3-ParentSpanId:-}",
"thread": "%thread",
"class": "%logger{40}",
"message": "%message",
"stack_trace": "%exception{10}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
</appender>
<logger name="org.springframework" level="INFO" />
<logger name="org.hibernate" level="INFO" />
<logger name="com.kingboy.repository" level="DEBUG" />
<root level="INFO">
<appender-ref ref="FILEERROR" />
<appender-ref ref="FILEWARN" />
<appender-ref ref="FILEINFO" />
<appender-ref ref="logstash" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
在上面的配置文件中:
- LOG_PATH主要配置日志输出目录,在后面使用LOG_PATH进行路径拼接
- 两个springProperty用于配置使用TCP Socket方式读取日志的IPv4地址和Port号
- CONSOLE_LOG_PATTERN用于配置日志格式
- FILEERROR用于配置日志器实现滚动输出
- rollingPolicy的XML配置块指定了如何切分文件的策略
LogStash需要安装一个插件:
bin/plugin install logstash-codec-json_lines
参考:https://github.com/logstash/logstash-logback-encoder
二、使用FileBeat
有些公司的日志架构可能是通过各种Beats收集然后通过LogStash过滤后写入Kafka再写入ElasticSearch中的,因此不需要整合logstash-logback-endcoder,那么你只需要整合一个配置类即可:
@Configuration
public class WebApplicationConfig extends WebMvcConfigurerAdapter {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
// 1. 需要定义一个convert转换消息的对象;
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
// 2. 添加FastJson的配置信息,比如:是否要格式化返回的json数据;
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.WriteNullListAsEmpty);
// 3. 处理中文乱码问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
// 4. 在convert中添加配置信息.
fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
// 5. 将convert添加到converters当中.
converters.add(fastJsonHttpMessageConverter);
}
}
logstash数据处理服务的输出插件output配置参数详解(代码片段)
Logstash数据处理服务的输出插件Output配置参数详解1.将日志数据存储到Elasticsearch集群output配置字段是将收集的日志数据存输出到生存储中,一般都是elasticsearch集群。常用字段配置:hostsES集群每个节点的地址信息。index:指定存储... 查看详情
logstash解析日志实例
配置Filebeat输出到LogstashLogstash中配置Filebeat输入使用GrokFilter插件解析日志使用Geoip插件丰富数据将数据索引到Elasticsearch多个输入输出插件配置介绍来自为知笔记(Wiz) 查看详情
elk-logstash时区问题
参考技术A使用版本:elk6.0配置文件:logstash.confg问题:如图14号的数据,结果采集到了15号,慢了8小时,希望得到的结果,是凌晨0点索引自动切换原因:原来Logstash用的UTC时间,logstash在按每天输出到elasticsearch时,因为时区使用utc,造... 查看详情
elk上手3logback接入logstash(代码片段)
ELK上手3logback接入logstash一、准备工作二、Logstash配置三、Logback设置1.pom.xml引用2.logback-spring.xml设置四、kibana查看日志1.设置索引2.查看日志一、准备工作已安装Elasticsearch已安装logstashJava开发环境二、Logstash配置在Logstash的config目录... 查看详情
日志分析系统elk之logstash(代码片段)
Logstash什么是ELKLogstash简介Logstash组成1、输入2、过滤器(可选)3、输出Logstash安装与配置通过命令行运行Logstash参数-e参数-f日志输出到文件日志上传到elasticsearchLogstash伪装为日志服务器grok过滤插件分割命令行的信息输出... 查看详情
docker安装elk收集springboot日志(方法1)
参考技术A1、logstash中安装json_lines插件并重启logstash2、在SpringBoot项目pom.xml文件中添加logstash-logback-encoder依赖3、logback.xml文件添加配置,让logback的日志输出到logstash4、启动springboot应用5、使用kibana查看日志信息 查看详情
centos7安装logstash(代码片段)
CentOS7安装LogstashLogstash工作原理安装Logstash下载解压修改配置文件验证配置文件设置数据源日志输出启动Logstash输出日志到ElasticsearchLogstash收集Nginx日志验证配置文件配置Nginx日志启动LogstashLogstash工作原理Logstash使用管道方式进行... 查看详情
logstash监听logback输出日志并存储到es(代码片段)
...https://blog.csdn.net/weixin_43944305/article/details/118469227然后部署logstash下载https://www.elastic.co/cn/downloads/past-releases#logstash解压tar-zxvflogstash-6.3.0.tar.gz-C~/app/mvlogstash-6.3.0logstash改下jvm配置,自己的小服务器吃不消/home/ubuntu/app/logstash/config/... 查看详情
logstashoutput(二)kafka
参考技术AKafka也是Logstash的常用输出之一,一般拿来作数据的中转。常规的Kafka输出配置文件如下所示:logstash-out-kafka的其他配置还包括:logstash-kafka插件输入和输出默认codec为json格式。在输入和输出的时候注意下编码格式。消息... 查看详情
elk日志分析平台之logstash数据采集(代码片段)
目录logstash简介数据采集三要素:输入,过滤和输出一Logstash安装与配置二Logstash的输入输出1命令行方式:标准输入到标准输出2conf文件方式:标准输入,输出到文件3conf文件方式:标准输入,输出到ES和... 查看详情
elk日志分析平台之logstash数据采集(代码片段)
目录logstash简介数据采集三要素:输入,过滤和输出一Logstash安装与配置二Logstash的输入输出1命令行方式:标准输入到标准输出2conf文件方式:标准输入,输出到文件3conf文件方式:标准输入,输出到ES和... 查看详情
logstashcodec详解
...如上面的例子中的timestamp、type等都不会带过来。有时候logstash采集的日志是JSON格式,那我们可以在input字段加入codec=>json来进行解析,这样就可以根据具体内容生成字段,方便分析和储存。如果想让logstash输出为json格式,可以... 查看详情
使用 filebeat 和 logstash 将 syslog 转换为 json
】使用filebeat和logstash将syslog转换为json【英文标题】:convertsyslogtojsonwithfilebeatandlogstash【发布时间】:2017-04-1211:39:38【问题描述】:filebeat是否有可能将日志作为syslog接收并将它们作为json输出到logstash,这样我就不需要解析每种... 查看详情
elk日志平台----解耦配置文件
...配置文件,配置输入输出,实例;第二个:shipper.conf配置logstash收集日志内容到redis里;第三个:indexer.conf配置logstash从redis里读取日志内容输出到Elasticsearch里。第二个跟第三个配置解耦收集日志ELK解耦logstash---------->redis---------... 查看详情
logstash安装和使用(代码片段)
下载地址https://artifacts.elastic.co/downloads/logstash/logstash-5.6.8.zip下载后解压,测试#将键盘内容输出到控制台logstash-e‘inputstdinoutputstdout‘ 从文件中读取配置,然后连接mysql然后输出到es新建mysqletc文件夹 inputjdbcjdbc_dr 查看详情
如何使用logstash(代码片段)
目录一、什么是Logstash二、如何安装三、快速使用四、Input输入插件五、codec编码插件六、filter过滤器插件七、output输出插件八、总结一、什么是LogstashLogstash是一个日志收集器,可以理解为一个管道,或者中间件。功能是从定义... 查看详情
logstash:多个配置文件(conf)(代码片段)
Logstash:多个配置文件(conf)对于多个配置的处理方法,有多个处理方法:多个pipeline一个pipleline处理多个配置文件一个pipeline含有一个逻辑的数据流,它从input接收数据,并把它们传入到队列里,经过worker的处理,最后输出到out... 查看详情
使用filebeat替换logstash
参考技术Alogstash功能虽然强大,但是基于ruby的配置语法、依赖jdk、消耗系统资源等弊端,使得考虑其他方式来替换logstash,filebeat则是一个完美的替代者配置解释:filebeat.prospectors:定义数据原型input_type:log,指定数据原型为log类... 查看详情