2017.7.31 ELK+logback+redis的使用
0 前提
ELK安装成功
redis安装成功
使用logback的项目运行成功
1 配置文件
1.1 pom.xml
为了使用logback,项目原本就有的依赖是:slf4j-api和logback-classic。为了将日志传递给redis,需要配置一个logback-redis-appender。
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
<!--logstash begin -->
<dependency>
<groupId>com.cwbase</groupId>
<artifactId>logback-redis-appender</artifactId>
<version>1.1.3</version>
<exclusions>
<exclusion>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</exclusion>
</exclusions>
</dependency>
1.2 logback.xml
增加一个appender,用以配置与redis相关的参数。并且将其添加到root内。其他都是原本logback.xml需要配置的东西。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--logback集成logstash-->
<appender name="LOGSTASH" class="com.cwbase.logback.RedisAppender">
<source>aas</source>
<type>dev</type>
<host>168.2.237.207</host>
<password>your redis password</password>
<!-- 这个Key是Redis List的Key,需要和Logstash读取Redis的Key匹配 -->
<key>aas-logback-logstash</key>
<tags>dev</tags>
<mdc>true</mdc>
<location>true</location>
<callerStackIndex>0</callerStackIndex>
</appender> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 典型的日志pattern -->
<encoder>
<pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender> <!-- 综合时间与大小的滚动策略,先按小时滚动,小时内的文件大于10mb时再按大小滚动 -->
<appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/local/xinsight/aas/aas.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/var/log/local/xinsight/aas/aas-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy> <encoder>
<pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender> <logger name="com.mchange" level="WARN"/>
<logger name="com.baosight" level="DEBUG"/>
<logger name="dao" level="DEBUG"/> <!-- root -->
<root level="WARN">
<appender-ref ref="console"/>
<appender-ref ref="logFile" />
<appender-ref ref="LOGSTASH" />
</root>
</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来更新,修改后的配置文件也一直都没有生效。所以一定要记得重启项目!
2017.7.31 ELK+logback+redis的使用的更多相关文章
- ELK学习笔记(四)SpringBoot+Logback+Redis+ELK实例
		
废话不多说,直接上干货,首先看下整体应用的大致结构.(整个过程我用到了两台虚拟机 应用和Shipper 部署在192.168.25.128 上 Redis和ELK 部署在192.168.25.129 ...
 - ELK(+Redis)-开源实时日志分析平台
		
################################################################################################### ...
 - ELK+filebeat+redis 日志分析平台
		
一.简介 ELK Stack是软件集合Elasticsearch.Logstash.Kibana的简称,由这三个软件及其相关的组件可以打造大规模日志实时处理系统. 其中,Elasticsearch 是 ...
 - ELK+Filebeat+redis整合
		
前面的博客,有具体的ELK安装配置步骤,此处在其基础上修改 修改配置文件并启动 [root@topcheer filebeat-6.2.3-linux-x86_64]# vim filebeat.ym ...
 - 大数据平台架构(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 ...
 - springboot+ELK+logback日志分析系统demo
		
之前写的有点乱,这篇整理了一下搭建了一个简单的ELK日志系统 借鉴此博客完成:https://blog.csdn.net/qq_22211217/article/details/80764568 设置 ...
 - [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 ...
 - 2017.10.31 Enginer+position+statement
		
一.The basic information Post name Engineering manager Department Engineering Post member A24645 imme ...
 - [软件工程基础]2017.10.31 第四次 Scrum 会议
		
具体事项 项目交接燃尽图 每人工作内容 成员 已完成的工作 计划完成的工作 工作中遇到的困难 游心 #7 掌握 PHP:#6 阅读分析 PhyLab 数据处理相关代码 #10 搭建可用的开发测试环境: ...
 
随机推荐
- Audio Unit 介绍
			
关于 Audio Unit iOS 提供了音频处理插件,支持混音,声音均衡,格式转化,以及用于录音,回放,离线渲染,实时对话的输入输出.可以动态载入和使用这些强大而灵活的插件,在 iOS 应用中这些插 ...
 - ajax数据读取和绑定
			
如何进行ajax数据读取和绑定呢? 首先创建一个AJAX对象 实现数据绑定 实现隔行变色 编写表格排序的方法(实现按照年龄这一列进行排序) 通过文档碎片,把排序后的最新顺序,重新添加到tBody中(通 ...
 - Java中同一个类中不同的synchronized方法是否可以并发执行?
			
答案是: 不可以,因为都是获取到对象本身的锁. 多个线程访问同一个类的synchronized方法时, 都是串行执行的 ! 就算有多个cpu也不例外 ! synchronized方法使用了类java的 ...
 - HDU3068 最长回文
			
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
 - 手动删除Win7系统服务列表中残留服务的操作步骤
			
卸载tomcat的时候服务用cmd运行不能删除 需要用管理员才能删除 手动删除Win7系统服务列表中残留服务的操作步骤分享给大家,在使用深度Win7系统过程中,将一些程序删除后,有些在服务列表中还会残 ...
 - 掌握 Linux 调试技术【转】
			
转自:https://www.ibm.com/developerworks/cn/linux/sdk/l-debug/index.html 您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试 ...
 - Linux将命令添加到PATH中【转】
			
转自:http://www.jb51.net/LINUXjishu/150167.html 电脑中必不可少的就是操作系统.而Linux的发展非常迅速,有赶超微软的趋势.这里介绍Linux的知识,让你学 ...
 - 明远智睿IMX6Q Android4.4.2移植USBWIFI(RTL8188EUS)
			
移植过程中得到网友的不少帮助,很感谢!为了让更多的网友不像我这样折腾,特写此文以做参照.过程中主要参考< Realtek_Wi-Fi_SDK_for_Android_KK_4_4.pdf > ...
 - UVA 1604:Cubic Eight-Puzzle(模拟,BFS Grade C)
			
题意: 3*3方格,有一个是空的.其他的每个格子里有一个立方体.立方体最初上下白色,前后红色,左右蓝色.移动的方式为滚.给出初态空的位置,终态上面颜色情况,问最少多少步能到达.如果超过30步不能到达, ...
 - hdu 4081(次小生成树)
			
Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...