• 2017.7.31 ELK+logback+redis的使用


    参考来自:spring mvc+ELK从头开始搭建日志平台

    0 前提

    1 ELK安装成功
    2 redis安装成功
    3 使用logback的项目运行成功

    1 配置文件

    1.1 pom.xml

    为了使用logback,项目原本就有的依赖是:slf4j-api和logback-classic。为了将日志传递给redis,需要配置一个logback-redis-appender。

     1         <!-- 日志 -->
     2         <dependency>
     3             <groupId>org.slf4j</groupId>
     4             <artifactId>slf4j-api</artifactId>
     5             <version>1.7.12</version>
     6         </dependency>
     7         <dependency>
     8             <groupId>ch.qos.logback</groupId>
     9             <artifactId>logback-classic</artifactId>
    10             <version>1.1.3</version>
    11         </dependency>
    12         <!--logstash begin -->
    13         <dependency>
    14             <groupId>com.cwbase</groupId>
    15             <artifactId>logback-redis-appender</artifactId>
    16             <version>1.1.3</version>
    17             <exclusions>
    18                 <exclusion>
    19                     <groupId>redis.clients</groupId>
    20                     <artifactId>jedis</artifactId>
    21                 </exclusion>
    22             </exclusions>
    23         </dependency>

    1.2 logback.xml

    增加一个appender,用以配置与redis相关的参数。并且将其添加到root内。其他都是原本logback.xml需要配置的东西。

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <configuration>
      3     <!--logback集成logstash-->
      4     <appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender">
      5         <source>aas</source>
      6         <type>dev</type>
      7         <host>168.2.237.207</host>
      8         <password>your redis password</password>
      9         <!-- 这个Key是Redis List的Key,需要和Logstash读取Redis的Key匹配 -->
     10         <key>aas-logback-logstash</key>
     11         <tags>dev</tags>
     12         <mdc>true</mdc>
     13         <location>true</location>
     14         <callerStackIndex>0</callerStackIndex>
     15     </appender>
     16     
     17     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
     18         <!-- 典型的日志pattern -->
     19         <encoder>
     20             <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>
     21         </encoder>
     22     </appender>
     23 
     57 
     58     <!-- 综合时间与大小的滚动策略,先按小时滚动,小时内的文件大于10mb时再按大小滚动 -->
     59     <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
     60         <file>/var/log/local/xinsight/aas/aas.log</file>
     61 
     62         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
     63             <fileNamePattern>/var/log/local/xinsight/aas/aas-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern>
     64             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
     65                 <maxFileSize>10MB</maxFileSize>
     66             </timeBasedFileNamingAndTriggeringPolicy>
     67         </rollingPolicy>
     68 
     69         <encoder>
     70             <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>
     71         </encoder>
     72     </appender>
     73 
     97 
     98     <logger name="com.mchange" level="WARN"/>
     99     <logger name="com.baosight" level="DEBUG"/>
    100     <logger name="dao" level="DEBUG"/>
    101 
    102     <!-- root -->
    103     <root level="WARN">
    104         <appender-ref ref="console"/>
    106         <appender-ref ref="logFile" />
    107         <appender-ref ref="LOGSTASH" />
    108     </root>
    109 </configuration>

    1.3 logstash.conf

    注意和logback.xml中的key匹配。

     1 input{
     8      redis{
    10            data_type => "list"
    11            key => "aas-logback-logstash"
    12            host => "168.2.237.207"
    13            port => "6379"
    14            password => "your redis password"
    15            threads => 5
    16        }
    19 }
    20 
    21 output{
    22     elasticsearch{
    23         hosts  => "168.2.8.88:9200"
    24         index  => "aas-%{type}"
    25     }
    33 }

    2 运行测试

    2.1 启动redis,设置密码,并测试连接是否成功

    启动成功后,在本机上另开一个窗口,设置redis的密码。这里设置密码为“admin”,注意和前面logback.xml和logstash.xml中的password匹配。

    在另一个环境连接redis,使用密码admin连接,出现如下画面则表示redis连接正常。

    2.2 启动ELK

    这里使用supervisord进行统一管理。

    访问localhost:9200等,来验证启动成功。

    2.3 运行项目,产生日志

    运行项目后,执行一些操作,产生一些日志。查看es,已经多了索引 0731-aas-dev。

    3 存在的问题

    3.1 supervisord的问题(未解决)

    在使用supervisord来启动ELK的服务时,因为是修改的logstash配置文件,supervisord似乎没有重新加载,导致没有读取到数据。

    执行了reload,update,stop和start好几回,还是没有读取到最新的配置文件。

    最后直接手动执行的bin下的配置文件,才读取到的数据。

     

    3.2 多行数据识别(待解决)

    可以看到一条数据因为处于不同行,被拆分了。而且是乱序的。

    参看随笔: 《2017.8.15 多行数据合并》

    3.3 Timestamp的处理(待解决)

    这里没有处理Timestamp。

    3.4 启动顺序

    启动顺序:redis -> logstash -> 项目。

    修改logstash的配置文件后,没有重启项目,哪怕一直重启logstash来更新,修改后的配置文件也一直都没有生效。所以一定要记得重启项目!

  • 相关阅读:
    ASP.NET身份验证机制membership入门——API篇
    测试SQL语句的执行时间
    ASP.NET身份验证机制membership入门——配置篇(2)
    ASP.NET身份验证机制membership入门——配置篇(1)
    ASP.NET身份验证机制membership入门——项目
    ASP.NET用户个性化设置Profile——配置1
    POJ 2762 强连通分量中存在单相连通边 【tarjan+toposort+缩点】.cpp
    POJ 2516 【最小费用最大流】.cpp
    POJ 1904 【强连通分量】.cpp
    POJ 1236 【强连通图+缩点】.cpp
  • 原文地址:https://www.cnblogs.com/lyh421/p/7263454.html
Copyright © 2020-2023  润新知