记录logback + ELK日志

柔情只为你懂 2022-11-29 13:19 283阅读 0赞

logback + ELK日志

安装es

安装logstash

https://www.elastic.co/guide/en/logstash/current/index.html

  • 新建一个简单的配置文件,只设置logstash的输入和输出,输入为tcp监听的端口,输出为es

    input {

    1. tcp {
    2. host => "10.1.1.1"
    3. port => 4567
    4. mode => "server"
    5. codec => json_lines
    6. }

    }

    output {

    1. elasticsearch {
    2. action => "index"
    3. hosts => ["10.1.1.1:9200"]
    4. index => "%{[appName]}"
    5. }

    }

  • 使用命令行指定配置文件的方式启动logstash,可以nohup后台启动,我这里示例前台启动,启动参数详细介绍:https://www.elastic.co/guide/en/logstash/current/running-logstash-command-line.html

    1. ~/su/logstash-7.3.0# ./bin/logstash -f ./config/logstash-es.conf

    看到如下日志打印就是启动成功

    1. [2020-08-21T14:23:05,840][INFO ][logstash.inputs.tcp ] Starting tcp input listener {:address=>"10.35.96.110:4567", :ssl_enable=>"false"}
    2. [2020-08-21T14:23:05,986][INFO ][logstash.agent ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
    3. [2020-08-21T14:23:06,946][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}

安装kibana

  • kibana和的版本和es的版本必须一样,否则启动报错
  • 修改配置文件,打开必要的配置项的注释

    1. # Kibana is served by a back end server. This setting specifies the port to use.
    2. server.port: 5601
    3. # Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
    4. # The default is 'localhost', which usually means remote machines will not be able to connect.
    5. # To allow connections from remote users, set this parameter to a non-loopback address.
    6. server.host: "10.1.1.1"
    7. # The URLs of the Elasticsearch instances to use for all your queries.
    8. elasticsearch.hosts: ["http://10.1.1.1:9200"]
    9. # Kibana uses an index in Elasticsearch to store saved searches, visualizations and
    10. # dashboards. Kibana creates a new index if the index doesn't already exist.
    11. kibana.index: ".kibana"
  • 启动kibana

    1. ~/su/kibana-6.8.1-linux-x86_64/bin# ./kibana

    看到如下日志就是启动成功

    1. log [10:55:32.074] [info][migrations] Creating index .kibana_1.
    2. log [10:55:32.230] [info][migrations] Pointing alias .kibana to .kibana_1.
    3. log [10:55:32.355] [info][migrations] Finished in 281ms.
    4. log [10:55:32.359] [info][listening] Server running at http://10.35.96.110:5601
    5. log [10:55:32.664] [info][status][plugin:spaces@6.8.1] Status changed from yellow to green - Ready

    到浏览器访问即可打开kibana的页面http://10.1.1.1:5601。

服务logback配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration debug="false" scan="true" scanPeriod="10 seconds">
  3. <property name="LogHome" value="logs/" />
  4. <property name="LogPattern" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}][%p][App:%t][%C{0}:%M:%L]%X{requestId}%X{errorId}, %m%n" />
  5. <!-- 控制台 -->
  6. <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
  7. <encoder>
  8. <pattern>${LogPattern}</pattern>
  9. <charset>utf-8</charset>
  10. </encoder>
  11. </appender>
  12. <springProperty scop="context" name="destination" source="log.destination" defaultValue="127.0.0.1:4567"/>
  13. <springProperty scop="context" name="appName" source="spring.application.name" defaultValue="appLog"/>
  14. <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
  15. <param name="Encoding" value="UTF-8"/>
  16. <destination>${destination}</destination>
  17. <!-- <filter class="com.program.interceptor.ELKFilter"/>-->
  18. <!-- encoder is required -->
  19. <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" >
  20. <customFields>{"appName":"${appName}"}</customFields>
  21. </encoder>
  22. </appender>
  23. <root level="INFO" additivity="false">
  24. <appender-ref ref="stdout" />
  25. <appender-ref ref="infoAppender" />
  26. <appender-ref ref="logstash" />
  27. </root>
  28. </configuration>

其中的 是在application.properties文件中获取的

  1. server.port=8080
  2. # ......
  3. spring.application.name=es-log
  4. log.destination=10.1.1.1:4567

查看日志

  • 启动应用让应用打印日志后,通过head插件查看es,成功创建了记录日志的索引,这里我们设置的是es-log,并且记录了日志。
  • 也可直接到kibana页面Management, Create index pattern, 可以找到我们记录日志的索引,添加后可在Discover菜单查看日志
  • 还可使用 字段:值 的方式搜索过滤日志,e.g. status:200 AND extension:PHP)

发表评论

表情:
评论列表 (有 0 条评论,283人围观)

还没有评论,来说两句吧...

相关阅读

    相关 logback

    没有使用logback,只使用了Simple Logging Facade for Java (SLF4J) Java的简单日志记录外观(SLF4J)可作为各种日志记录框架