ELK日志系统搭建记录。

一直想搭个日志系统,之前不太了解,就想着看日志方便点。这玩意功能很强大,目前只是粗略的了解了一下,后期继续学习。

E->elasticsearch

L->logstash

K->kibana

logstash为传输通道,将日志内容传输到elasticsearch,kibana是elasticsearch的可视化页面。

Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。

分别安装这三款软件。(我是在centos上安装的)

elasticsearch安装麻烦一点,需要修改一些系统参数,修改时又遇到不少的问题,后面都一一解决了。如果是在阿里云上安装,应该不会出现这些问题,我是在公司服务器虚拟机上安装的,所以问题比较多,后面我会更新解决办法,以供参考。

然后是logstash安装,在bin目录新建log.conf

input {
    tcp {  
      
        host => "0.0.0.0"  
        port => 8030  
      
        mode => "server"  
        tags => ["tags"]  

      
        codec => json_lines         
    }  

} 

output {
	elasticsearch{
		
		hosts => ["127.0.0.1:9200"]
		index => "%{[appname]}"
	}
        stdout { codec => rubydebug}
}

这是最基本的配置,写入,输出,监听8030端口的输入数据,输出到elasticsearch,index为logback中配置的appname,到时候区分每个项目不同的index.

然后启动 nohup ./logstash -f log.conf &

最后是kibana,这个不需要配置什么,默认会监听elasticsearch的9200端口,如果有改动,可以在config下面文件中修改。启动就可以了。

访问ip:5601,就可以看到kibana的界面了。

然后index management中可以看到index,然后在index patterns新建,就可以在discover中看到了。

项目中配置:

使用logback

新建logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.10.20:8030</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"appname":"chedai-service"}</customFields>
        </encoder>
    </appender>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8"> <!-- encoder 可以指定字符集,对于中文输出有意义 -->
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="com.qkhc.chedai.controller" level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="STDOUT" />
    </logger>

    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

需要引入的包如下(基于springboot)

compile('net.logstash.logback:logstash-logback-encoder:4.9')
compile('ch.qos.logback:logback-classic:1.2.3')
compile('com.fasterxml.jackson.core:jackson-core:2.9.8')
compile('org.slf4j:slf4j-api:1.7.5')
compile('org.slf4j:jcl-over-slf4j:1.7.12')
compile('org.slf4j:log4j-over-slf4j:1.7.12')
compile('ch.qos.logback:logback-core:1.2.3')
compile('ch.qos.logback:logback-access:1.2.3')
compile('org.logback-extensions:logback-ext-spring:0.1.4')
compile('org.springframework.boot:spring-boot-starter-log4j:1.3.8.RELEASE')
compile('org.springframework.boot:spring-boot-starter-amqp')
compile('org.springframework.boot:spring-boot-starter-web'){
        exclude group:'org.springframework.boot:spring-boot-starter-logging'
    }

基本就这样了,后面会更新一些细节问题。

猜你喜欢

转载自blog.csdn.net/chenfei110722/article/details/88872544