分布式系统中怎么样记录日志的

J2EE 码拜 8年前 (2016-03-17) 907次浏览
各位好,俺以前从没搞过分布式的系统,但是俺现在遇到一个涉及到分布式系统,web应用服务器部署在三台不同的物理主机上。在一般的单服务器项目中,我们用个log4j日志框架就完成日志的记录了。但是在分布式应用中,还要考虑各个系统之间日志同步的问题,有没有什么日志框架可以解决整个问题?
网上搜了一圈,发现一个叫“分布式日志收集系统”的名词,按着这个名词搜到了scribe、chukwa 、kafka 等几个技术,资料不太多,不太理解,不知道是不是本人需要的东西。
请做过这个的朋友指点一下,感激不尽。
解决方案

20

日志不需要同步,分布式节点本人写本人的日志。
有几种方案做解析:
1. 每天把当天的日志增量拿到分析服务器上,内网批量同步的效率很高,几百G都不在话下。要留档要解析都可以。
2. 假如要实时持久,就写日志的时候写进消息队列,由分析服务器异步从消息队列里读(kafka就是这么个东西)

5

引用:
Quote: 引用:

日志不需要同步,分布式节点本人写本人的日志。
有几种方案做解析:
1. 每天把当天的日志增量拿到分析服务器上,内网批量同步的效率很高,几百G都不在话下。要留档要解析都可以。
2. 假如要实时持久,就写日志的时候写进消息队列,由分析服务器异步从消息队列里读(kafka就是这么个东西)

多谢你的回答。
我们用的负载均衡器分发策略是使用cookie来保证一个用户自始至终访问同一台服务器的,因此本人一开始有个想法是这样的,每台服务器本人记录本人的日志,每条日志都带着各个服务器的标识,在日志之前加上一个[服务器:ipxxxxx]之类的标识,并将这个错误提示展现到用户看到的错误界面上,假如用户在使用过程中报错了,只需把这个错误提示发给本人,本人就知道去哪个服务器上查看日志了。但是这样做的好处是本人不用考虑日志同步的问题,但缺点就是,假如错误只出现了一次,而用户又没有截取到服务器的标识,那么本人就得把每台服务器的日志挨个看一遍。不知道本人的想法对不对,请指点啊,哈哈。
以前只听说过有分布式,集群这个东西,真到有机会碰到了真是一头雾水啊,最细小的地方都得想半天。上司忙,没时间管本人的事儿,让本人本人搭建环境,还要分布式、集群的架构,本人也就刚工作两年,以前从未接触过这些,说实话,真的有点力不从心啊,不过不管怎么,对本人都是一个大的考验和提升,继续查资料,继续工作。

一般本机的日志用来排错,本人上面说的是日志的归档管理和日志数据的大规模分析用的。
你假如只是要debug排错的话,就别搞这么复杂的东西了,老老实实去本机上找吧

5

定一个
假如有有上百台机器的集群呢?也是一个一个找?

15

目前没有在项目中针对分布式系统的统一日志控制。
假如仅仅是错误日志的监控,可以在log4j中配置有error则发送邮件。

5

引用:
Quote: 引用:

目前没有在项目中针对分布式系统的统一日志控制。
假如仅仅是错误日志的监控,可以在log4j中配置有error则发送邮件。

系统要求是这样的,记录日志主要有两个方面,一个是记录用户的操作行为,这个要记录的数据库中,假如记录到日志文件上,本人感觉不便于统计分析。另外一个主要是记录错误日志,错误日志发邮件是个不错的方法,谢谢你的回答。
另外本人看很多人都推崇logback,这个是log4j的作者搞的另外一个日志框架,据说性能各方面比log4j要好很多,具体没用过,回去研究一下。

记录用户的行为可以加切面,监测操作。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明分布式系统中怎么样记录日志的
喜欢 (0)
[1034331897@qq.com]
分享 (0)