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里面创建一个索引匹配
Elk+redis
Elk+redis
Elk+redis
Elk+redis
Elk+redis
下图中马赛克位置,即可找到刚才配置的索引,然后可以查看对应日志信息
Elk+redis
Elk+redis
(10)查找error日志,查找对应的错误信息