参考来自: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.  
  24. <!-- 综合时间与大小的滚动策略,先按小时滚动,小时内的文件大于10mb时再按大小滚动 -->
  25. <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
  26. <file>/var/log/local/xinsight/aas/aas.log</file>
  27.  
  28. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  29. <fileNamePattern>/var/log/local/xinsight/aas/aas-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern>
  30. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  31. <maxFileSize>10MB</maxFileSize>
  32. </timeBasedFileNamingAndTriggeringPolicy>
  33. </rollingPolicy>
  34.  
  35. <encoder>
  36. <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>
  37. </encoder>
  38. </appender>
  39.  
  40. <logger name="com.mchange" level="WARN"/>
  41. <logger name="com.baosight" level="DEBUG"/>
  42. <logger name="dao" level="DEBUG"/>
  43.  
  44. <!-- root -->
  45. <root level="WARN">
  46. <appender-ref ref="console"/>
  47. <appender-ref ref="logFile" />
  48. <appender-ref ref="LOGSTASH" />
  49. </root>
  50. </configuration>

1.3 logstash.conf

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

  1. 1 input{
  2. 8 redis{
  3. 10 data_type => "list"
  4. 11 key => "aas-logback-logstash"
  5. 12 host => "168.2.237.207"
  6. 13 port => "6379"
  7. 14 password => "your redis password"
  8. 15 threads => 5
  9. 16 }
  10. 19 }
  11. 20
  12. 21 output{
  13. 22 elasticsearch{
  14. 23 hosts => "168.2.8.88:9200"
  15. 24 index => "aas-%{type}"
  16. 25 }
  17. 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来更新,修改后的配置文件也一直都没有生效。所以一定要记得重启项目!

2017.7.31 ELK+logback+redis的使用的更多相关文章

  1. ELK学习笔记(四)SpringBoot+Logback+Redis+ELK实例

    废话不多说,直接上干货,首先看下整体应用的大致结构.(整个过程我用到了两台虚拟机  应用和Shipper 部署在192.168.25.128 上 Redis和ELK 部署在192.168.25.129 ...

  2. ELK(+Redis)-开源实时日志分析平台

    ################################################################################################### ...

  3. ELK+filebeat+redis 日志分析平台

    一.简介 ELK Stack是软件集合Elasticsearch.Logstash.Kibana的简称,由这三个软件及其相关的组件可以打造大规模日志实时处理系统. 其中,Elasticsearch 是 ...

  4. ELK+Filebeat+redis整合

    前面的博客,有具体的ELK安装配置步骤,此处在其基础上修改 修改配置文件并启动 [root@topcheer filebeat-6.2.3-linux-x86_64]# vim filebeat.ym ...

  5. 大数据平台架构(flume+kafka+hbase+ELK+storm+redis+mysql)

    上次实现了flume+kafka+hbase+ELK:http://www.cnblogs.com/super-d2/p/5486739.html 这次我们可以加上storm: storm-0.9.5 ...

  6. springboot+ELK+logback日志分析系统demo

    之前写的有点乱,这篇整理了一下搭建了一个简单的ELK日志系统 借鉴此博客完成:https://blog.csdn.net/qq_22211217/article/details/80764568 设置 ...

  7. [Node.js]31. Level 7: Redis coming for Node.js, Simple Redis Commands

    Let's start practicing using the redis key-value store from our node application. First require the  ...

  8. 2017.10.31 Enginer+position+statement

    一.The basic information Post name Engineering manager Department Engineering Post member A24645 imme ...

  9. [软件工程基础]2017.10.31 第四次 Scrum 会议

    具体事项 项目交接燃尽图 每人工作内容 成员 已完成的工作 计划完成的工作 工作中遇到的困难 游心 #7 掌握 PHP:#6 阅读分析 PhyLab 数据处理相关代码 #10 搭建可用的开发测试环境: ...

随机推荐

  1. oracle 查看表空间的脚本

    SELECT upper(f.tablespace_name) "表空间名", d.Tot_grootte_Mb "表空间大小(M)", d.Tot_groot ...

  2. Linux命令之type,whatis,whereis,which,locate,find

    第一个:type--查询一个命令的类型 -查询一个命令为内部或者外部命令的命令: -linux的众多命令中,有内部命令和外部命令,这时可以用type命令来查询一个命令到底是属于内部命令还是属于外部命令 ...

  3. jdk,tomcat,mvn,android,php,linux等的初始化配置

    jdk配置:系统变量->新建->变量名:JAVA_HOME 变量值:c:\jdk1.6.0_21(jdk安装目录:C:\Program Files (x86)\Java\jdk1.7.0_ ...

  4. 强引用(StrongReference)、弱引用(WeakReference)、软引用(SoftReference)、虚引用(PhantomReference)

    1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.如下: Object o=new Object(); // 强引用 当内存空间 ...

  5. Sqlite 约束条件 Constraints

    一.约束 Constraints 我们在数据库中存储数据的时候,有一些数据有明显的约束条件. 比如一所学校关于教师的数据表,其中的字段列可能有如下约束: 年龄 - 至少大于20岁.如果你想录入一个小于 ...

  6. kvm虚拟机最佳实践系列3-kvm克隆和静态迁移

    KVM克隆和KVM静态迁移 KVM克隆 上一章我们已经有了一个合用的虚拟机镜像,现在我们需要用这个KVM镜像大量的创建和部署 virt-clone就是做这个用的.它简化了我们克隆KVM的步骤. 首先停 ...

  7. mysql 事务、游标

    mysql 事务 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎. 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行 ...

  8. poj 2546(两圆公共面积)

    Circular Area Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5682   Accepted: 2225 Des ...

  9. ef code first commad

    PM> enable-migrations 已在项目“EasyWeChat.Data”中启用迁移.若要覆盖现有迁移配置,请使用 -Force 参数. PM> add-migration 位 ...

  10. 大牛教你如何循序渐进,有效的学习JavaScript?

    首先要说明的是,咱现在不是高手,最多还是一个半桶水,算是入了JS的门.谈不上经验,都是一些教训. 这个时候有人要说,“靠,你丫半桶水,凭啥教我们”.您先别急着骂,先听我说! 你叫一个大学生去教小学数学 ...