elk

 

(一)           背景:

java后台项目日志太多,按天生成log文件,一天可能到1g以上, 不方便查找。

(二)           解决方案:

搭建elk日志收集系统,生成的log文件采用logstash组件通过tcp、log4j两种方式传给远程的Elesticsearch服务。Web端搭建kibana组件进行展示。

(三)           安装ELK:

  1. 下载

同版本号logstash、elesticsearch、kibana组件,下载地址 https://elasticsearch.cn/download/。由于服务器上有6.2.4版本的es,所以此处全部安装此版本组件。

  1. 启动

分别启动Elasticsearch、Logstash、Kibana

a)        elasticsearch.yml配置访问的ip地址和端口,默认127.0.0.1:9200,此处将127.0.0.1 修改为实际ip,方便远程调用。\bin\elasticsearch启用后浏览器访问http://127.0.0.1:9200/

b)     \logstash-6.2.4\config\logstash.ymll配置访问的ip地址和端口,在\logstash-6.2.4\config下添加文件logstash.conf,内容如下:

input {

  tcp {

    mode => "server"

    host => "172.16.102.85"

    port => 4560

    codec => json_lines

    type => "jddns-servers-1"

  }

  log4j {

      mode => "server"

      host => "172.16.102.85"

      port => 4561

      codec => json_lines

      type => "jddns-servers-2"

    }

}

output {

  if [type] == "jddns-servers-1" {

      elasticsearch {

        hosts => "127.0.0.1:9200"

        index => "logstash-service-4560-%{+YYYY.MM.dd}"

      }

  }

  if [type] == "jddns-servers-2" {

        elasticsearch {

          hosts => "127.0.0.1:9200"

          index => "logstash-service-4561-%{+YYYY.MM.dd}"

          document_type => "log4j_type"

         }

    }

}

log4j默认没有捆绑的,需要手动安装: bin/logstash-plugin install logstash-input-log4j

这里监听了2个端口4560、4561 , 4561监听log4j日志, 4560 监听java后台springboot的logback日志。

\bin目录下执行logstasht -f ../config/logstash.conf后在浏览器访问http://127.0.0.1:9600/

c)     kibana-6.2.4 \config\kibana.yml配置访问的ip地址和端口,默认127.0.0.1:5601

执行\bin\kibana.后在浏览器访问http://172.16.102.85:5601/

 

(四)      项目配置

Springboot项目logback-spring.xml:

        <springProperty scope="context" name="springAppName" source="server.name"/>  
        <appender name="logstash"
                 
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <destination>172.16.102.85:4560</destination>
            <!-- 日志输出编码 -->
                
<encoder
                       
class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
                    <providers>
                        <timestamp>
                            <timeZone>GMT+8</timeZone>
                        </timestamp>
                        <pattern>
                            <pattern>
                                {
                                "severity": "%level",
                                "service": "${springAppName:-}",
                                "trace": "%X{X-B3-TraceId:-}",
                                "span": "%X{X-B3-SpanId:-}",
<!--                                "exportable": "%X{X-Span-Export:-}",-->
                               
"pid": "${PID:-}",
                                "thread": "%thread",
                                "class": "%logger{40}",
                                "rest": "%message"
                                }
                            </pattern>
                        </pattern>
                    </providers>
                </encoder>
         </appender>
<root level="info">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="PROD_FILE"/>
    <appender-ref ref="logstash"/>
</root>
               Java项目log4j.properties
               log4j.rootLogger=INFO, socket
#调用BehaviorRecordLogHandler中的方法的日志输出到logstash
# appender socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=4561
log4j.appender.socket.RemoteHost=172.16.102.85
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss}%m%n
log4j.appender.socket.ReconnectionDelay=10000

(五)      使用

打开http://172.16.102.85:5601/

 

添加索引:

 

将索引名称从列表中复制上来:

 

添加完成之后,在discover中查询 :

 

过滤查询

 

posted @ 2022-11-03 09:27  higsan  阅读(56)  评论(0编辑  收藏  举报