Elk+redis
Elk+redis****实现日志系统
准备工具:
Elasticsearch,logstash,kibana(建议使用同一版本),redis
(一) 记录日志,并输出到redis
(1)在项目pom中添加依赖
<dependency>
<groupId>com.cwbase</groupId>
<artifactId>logback-redis-appender</artifactId>
<version>1.1.5</version>
</dependency>
(2)新增配置文件logback.xml,指定日志输出到redis
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志格式 -->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender">
<source>test-service</source>
<type>test-service</type>
<host>127.0.0.1</host>
<password>redis密码</password>
<key>test-service</key>
<tags>test-service</tags>
<mdc>true</mdc>
<location>true</location>
<callerStackIndex>0</callerStackIndex>
</appender>
<root level="ERROR">
<appender-ref ref="ASYNC"/>
<appender-ref ref="STDOUT" />
</root>
</configuration>
(3)项目中新增日志输出,在try ,catch里面增加输出异常日志
logger.error(""+e);
(4)依次启动elasticsearch,kibana
(5)在logstash的目录下添加mysql文件夹,新建mysql.conf文件
(6)mysql.conf新增如下内容
input {
stdin {
}
redis {
codec => json
#es里面的类型
type => "test-service"
host => "localhost"
port => "6379"
db => "0"
data_type => "list"
#redis里面对应的key
key => "test-service"
password => "redis密码"
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
mutate {
#remove_field => "@version"
#remove_field => "@timestamp"
}
}
output {
if [type] == "test-service"{
elasticsearch {
hosts => ["localhost:9200"]
#es的索引index,用日期来区分
index => "test-service.log-%{+YYYY.MM.dd}"
}
}
stdout {
# codec => json_lines
codec => rubydebug
}
}
(7)启动logstash,可以使用后台启动的方式并带上指定文件启动
进入bin目录下
nohup ./logstash -f ../mysql/mysql.conf &
(8)启动项目,
(9)进入kibana,localhost:5601
1)先用es查询语句查询日志索引对应的日志信息,这里的日志的格式为上文提到的test-service.log-%{+YYYY.MM.dd},查到了对应的索引,说明已经成功
2)在Kibana里面创建一个索引匹配
下图中马赛克位置,即可找到刚才配置的索引,然后可以查看对应日志信息
(10)查找error日志,查找对应的错误信息