filebeat采集日志到logstash,由logstash发送的es
- 下载并配置filebeat
- 下载
- 配置
- logback.xml
- logstash配置
下载并配置filebeat
下载
参考
配置
filebeat.inputs:
- type: filestreamenabled: truepaths:# 日志文件目录- D:\modellog\elkdemo\*\*.logparsers:# 多行日志合并(例如java的异常堆栈信息)- multiline:type: pattern# 匹配以[开头的pattern: '^\['negate: truematch: after# 自定义日志格式
processors:
- dissect:tokenizer: '[%{timestamp}] -%{parentTraceId} -%{traceId} -%{host} -%{port} -%{appName} -%{pid} -[%{level}] -[%{thread}] -%{class} -%{line} - %{message}'field: "message"# 输出到logstash
output.logstash:enabled: truehosts: ["192.168.0.100:21069"]
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 彩色日志 --><!-- 彩色日志依赖的渲染类 --><conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/><conversionRule conversionWord="wex"converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/><conversionRule conversionWord="wEx"converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/><define name="hostAddress" class="top.mingempty.commons.definer.IPLogDefiner"/><springProperty scope="context" name="appName" source="spring.application.name"/><springProperty scope="context" name="port" source="server.port"/><!--彩色日志格式以及包名输出缩进对齐--><property name="CONSOLE_LOG_PATTERN"value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr([${LOG_LEVEL_PATTERN:-%5p}]) %clr(${PID:- }){magenta} %clr(-){faint} %clr([%t]){faint} %clr(%logger){cyan} %clr(:){magenta} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/><property name="FILE_LOG_PATTERN"value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] -${hostAddress} -${port} -${appName} -${PID:-} -[%-5level] -[%thread] -%logger -%-3L - %msg%n"/><contextName>fanxlxs</contextName><!--文件夹在当前项目磁盘根目录--><property name="LOG_PATH" value="/modellog"/><!--设置系统日志目录--><property name="APPDIR" value="/filebeat"/><!-- 日志记录器,日期滚动记录ERROR 级别--><appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名,日期必须加,如果单天需要生成多个日志,则需要添加%i--><FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</FileNamePattern><!-- <!–历史日志文件保留天数,不包含当日日志,且需结合cleanHistoryOnStart字段使用–><!–可以按“文件数量、小时、天、月、年”等策略实现文件保留 –><MaxHistory>3</MaxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart>--><!-- 单天单个日志最大size --><maxFileSize>10MB</maxFileSize><!-- <!–仅针对当天的日志进行总size控制,日志名中的“i”保留最后数值 –><totalSizeCap>10MB</totalSizeCap>--></rollingPolicy><!-- 追加方式记录日志 --><append>true</append><!-- 日志文件的格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${FILE_LOG_PATTERN}</pattern><charset>utf-8</charset></encoder><!-- 此日志文件记录error级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>error</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 日志记录器,日期滚动记录WARN 级别--><appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名,日期必须加,如果单天需要生成多个日志,则需要添加%i--><FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</FileNamePattern><!-- <!–历史日志文件保留天数,不包含当日日志,且需结合cleanHistoryOnStart字段使用–><!–可以按“文件数量、小时、天、月、年”等策略实现文件保留 –><MaxHistory>3</MaxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart>--><!-- 单天单个日志最大size --><maxFileSize>10MB</maxFileSize><!-- <!–仅针对当天的日志进行总size控制,日志名中的“i”保留最后数值 –><totalSizeCap>10MB</totalSizeCap>--></rollingPolicy><!-- 追加方式记录日志 --><append>true</append><!-- 日志文件的格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${FILE_LOG_PATTERN}</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录warn级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>warn</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 日志记录器,日期滚动记录INFO 级别--><appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名,日期必须加,如果单天需要生成多个日志,则需要添加%i--><FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</FileNamePattern><!-- <!–历史日志文件保留天数,不包含当日日志,且需结合cleanHistoryOnStart字段使用–><!–可以按“文件数量、小时、天、月、年”等策略实现文件保留 –><MaxHistory>3</MaxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart>--><!-- 单天单个日志最大size --><maxFileSize>10MB</maxFileSize><!-- <!–仅针对当天的日志进行总size控制,日志名中的“i”保留最后数值 –><totalSizeCap>10MB</totalSizeCap>--></rollingPolicy><!-- 追加方式记录日志 --><append>true</append><!-- 日志文件的格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${FILE_LOG_PATTERN}</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录info级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>info</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- 日志记录器,日期滚动记录DEBUG 级别--><appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 正在记录的日志文件的路径及文件名 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名,日期必须加,如果单天需要生成多个日志,则需要添加%i--><FileNamePattern>${LOG_PATH}/${APPDIR}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</FileNamePattern><!-- <!–历史日志文件保留天数,不包含当日日志,且需结合cleanHistoryOnStart字段使用–><!–可以按“文件数量、小时、天、月、年”等策略实现文件保留 –><MaxHistory>3</MaxHistory><cleanHistoryOnStart>true</cleanHistoryOnStart>--><!-- 单天单个日志最大size --><maxFileSize>10MB</maxFileSize><!-- <!–仅针对当天的日志进行总size控制,日志名中的“i”保留最后数值 –><totalSizeCap>10MB</totalSizeCap>--></rollingPolicy><append>true</append><!-- 日志文件的格式 --><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>${FILE_LOG_PATTERN}</pattern><charset>utf-8</charset></encoder><!-- 此日志文件只记录debug级别的 --><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>debug</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter></appender><!-- ConsoleAppender 控制台输出日志 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!--encoder 默认配置为PatternLayoutEncoder--><encoder><pattern>${CONSOLE_LOG_PATTERN}</pattern><charset>utf-8</charset></encoder><!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>debug</level></filter></appender><!-- FrameworkServlet日志--><logger name="org.springframework" level="WARN"/><!-- nacos日志--><logger name="com.alibaba.nacos" level="WARN"/><!-- 项目日志--><logger name="top.mingempty.metadata" level="INFO"/><!-- 生产环境下,将此级别配置为适合的级别,以免日志文件太多或影响程序性能 --><root level="INFO"><appender-ref ref="ERROR"/><appender-ref ref="WARN"/><appender-ref ref="INFO"/><appender-ref ref="DEBUG"/><!-- 生产环境将请stdout去掉 --><appender-ref ref="STDOUT"/></root></configuration>
logstash配置
input {beats {port => 5044}
}filter {grok {## 指定日志输出格式(和logback对应上)match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] -%{IP:host} -%{NUMBER:port} -%{DATA:appName} -%{NUMBER:pid} -\[%{DATA:level}\] -\[%{DATA:thread}\] -%{DATA:class} -%{NUMBER:line} - %{GREEDYDATA:message}" }}mutate {remove_field => [ "[@timestamp]"]rename => {"[dissect][parentTraceId]" => "parentTraceId""[dissect][traceId]" => "traceId""[dissect][host]" => "host""[dissect][port]" => "port""[dissect][appName]" => "appName""[dissect][pid]" => "pid""[dissect][level]" => "level""[dissect][thread]" => "thread""[dissect][class]" => "class""[dissect][line]" => "line""[dissect][message]" => "message""[dissect][timestamp]" => "timestamp""[log][file][path]" => "path"}}date {match => [ "timestamp", "yyyy-MM-dd HH:mm:ss.SSS" ] # 这里指定日志中时间戳的格式target => "@timestamp" # 将解析后的时间戳存储到 字段timezone => "Asia/Shanghai" # 指定时区为中国标准时间}mutate {remove_field => [ "timestamp","event", "agent", "ecs", "input", "tags", "flags", "log", "dissect" ,"@version"]}
}output {elasticsearch {hosts => ["https://172.27.0.2:9200"]index => "beats3-mingempty-top-%{+YYYY.MM.dd}"#这里开启了es的x-packuser => "帐号"password => "密码"ssl_enabled => truessl_certificate_authorities => ["/usr/share/logstash/config/logstash.pem"]}
}
docker-compose部署elk(8.9.0)并开启ssl认证