springboot集成elk

119 阅读1分钟

ElasticSearch

配置

cluster.name: my-application
node.name: node-1
network.host: 192.168.4.47
http.port: 9200
xpack.ml.enabled: false
cluster.initial_master_nodes: ["node-1"]
#外面浏览器就访问不了哈
http.cors.enabled: true
http.cors.allow-origin: "*"

启动

elasticsearch.bat

备注:

如果启动报错JVM is using the client VM [Java Hot...

修改配置文件jvm.cfg

32位的JDK %JAVA_HOME%/jre/lib/i386/jvm.cfg

64位的JDK %JAVA_HOME%/jre/lib/amd64/jvm.cfg

把第二行的-server 放到第一行

kibana

配置

server.host: "192.168.4.47"
#修改为es的地址
elasticsearch.hosts: ["http://192.168.4.47:9200"]
elasticsearch.requestTimeout: 60000

启动

kibana.bat

logstash

配置

http.host: "192.168.4.47"

conf/logstash.conf(utf-8无bom)

input {
  tcp {
    #模式选择为server
    mode => "server"
    #ip和端口根据自己情况填写,端口默认4560,对应下文logback.xml里appender中的destination
    host => "192.168.4.47"
    port => 4560
    #格式json
    codec => json_lines
  }
}
filter {
  #过滤器,根据需要填写
}
output {
  elasticsearch {
    action => "index"
    #这里是es的地址,多个es要写成数组的形式
    hosts  => "192.168.4.47:9200"
    #用于kibana过滤,可以填项目名称
    index  => "applog"
  }
}

启动

logstash -f conf\logstash.conf

springboot

pom.xml

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.3</version>
</dependency>

spring-logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/base.xml" />
 	<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.4.47:4560</destination>
        <!-- 日志输出编码 -->
        <encoder charset="UTF-8"
                class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        "logLevel": "%level",
                        "serviceName": "${springAppName:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "rest": "%message"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
    
     <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</configuration>