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'
}
基本就这样了,后面会更新一些细节问题。