赞
踩
ELK 即 Elasticsearch、Logstash、Kibana 组合起来可以搭建线上日志系统,本文主要讲解使用ELK 来收集 SpringBoot2 应用产生的日志。
3.1 Elasticsearch 和 Kibana 安装请见:CentOS 搭建ElasticSearch
3.2 Logstash 安装
(1)下载 Logstash:Download Logstash Free | Get Started Now | Elastic
注意:Logstash 版本建议跟 Elasticsearch 一致。
(2)上传安装包至指定目录、并解压
(3)进入 bin 目录创建 logstash-cloud-project.conf 配置文件,输入如下内容:
input { tcp { mode => "server" host => "0.0.0.0" port => 4560 codec => json_lines } } output { elasticsearch { # es 连接地址 hosts => ["http://172.16.20.101:9200"] # 索引名称 index => "cloud-project-logstash-%{+YYYY.MM.dd}" } }
(4)进去 bin 目录,启动 logstash
./logstash -f logstash-cloud-project.conf
4.1 pom.xml 添加依赖
- <!--集成logstash-->
- <dependency>
- <groupId>net.logstash.logback</groupId>
- <artifactId>logstash-logback-encoder</artifactId>
- <version>5.3</version>
- </dependency>
4.2 配置日志文件logback.xml让logback的日志输出到logstash
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration>
- <!--引用默认日志配置-->
- <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
- <!--使用默认的控制台日志输出实现-->
- <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
-
- <!--应用名称-->
- <property name="app_name" value="cloud-project" />
- <contextName>${app_name}</contextName>
-
- <!-- 日志存放路径 -->
- <property name="log.path" value="${user.dir}/logs" />
- <!-- 日志输出格式 -->
- <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
-
- <!-- 控制台输出 -->
- <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>%black %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger) - %cyan(%msg%n)</pattern>
- </encoder>
- </appender>
-
- <!-- 系统日志输出 -->
- <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${log.path}/info.log</file>
- <!-- 循环政策:基于时间创建日志文件 -->
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <!-- 日志文件名格式 -->
- <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
- <!-- 日志最大的历史 30天 -->
- <maxHistory>60</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>${log.pattern}</pattern>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <!-- 过滤的级别 -->
- <level>INFO</level>
- <!-- 匹配时的操作:接收(记录) -->
- <onMatch>ACCEPT</onMatch>
- <!-- 不匹配时的操作:拒绝(不记录) -->
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
-
- <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>${log.path}/error.log</file>
- <!-- 循环政策:基于时间创建日志文件 -->
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <!-- 日志文件名格式 -->
- <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
- <!-- 日志最大的历史 30天 -->
- <maxHistory>30</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>${log.pattern}</pattern>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <!-- 过滤的级别 -->
- <level>ERROR</level>
- <!-- 匹配时的操作:接收(记录) -->
- <onMatch>ACCEPT</onMatch>
- <!-- 不匹配时的操作:拒绝(不记录) -->
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
-
- <!--输出到logstash的appender-->
- <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
- <!--可以访问的logstash日志收集端口-->
- <destination>172.16.20.101:4560</destination>
- <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
- </appender>
-
- <root level="info">
- <appender-ref ref="console" />
- </root>
-
- <!--日志-->
- <root level="info">
- <appender-ref ref="file_info" />
- <appender-ref ref="file_error" />
- <appender-ref ref="logstash"/>
- </root>
- </configuration>

配置要点解析:
一般我们不需要自定义控制台输出,可以采用默认配置,具体配置参考console-appender.xml
- <!--引用默认日志配置-->
- <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
- <!--使用默认的控制台日志输出实现-->
- <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
应用名称
- <!--应用名称-->
- <property name="app_name" value="cloud-project" />
- <contextName>${app_name}</contextName>
输出到logstash的appender
- <!--输出到logstash的appender-->
- <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
- <!--可以访问的logstash日志收集端口-->
- <destination>172.16.16.9:4560</destination>
- <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
- </appender>
4.3 启动程序,在 kibana 中查看日志信息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。