Code Bye

分布式系统中如何记录日志的?

 

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

下班已经到家,自顶一个

20分
日志不需要同步,分布式节点自己写自己的日志。

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

引用 2 楼 ygycomon 的回复:

日志不需要同步,分布式节点自己写自己的日志。

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

多谢你的回答。
我们用的负载均衡器分发策略是使用cookie来保证一个用户自始至终访问同一台服务器的,因此我一开始有个想法是这样的,每台服务器自己记录自己的日志,每条日志都带着各个服务器的标识,在日志之前加上一个[服务器:ipxxxxx]之类的标识,并将这个错误提示展现到用户看到的错误界面上,如果用户在使用过程中报错了,只需把这个错误提示发给我,我就知道去哪个服务器上查看日志了。但是这样做的好处是我不用考虑日志同步的问题,但缺点就是,如果错误只出现了一次,而用户又没有截取到服务器的标识,那么我就得把每台服务器的日志挨个看一遍。不知道我的想法对不对,请指教啊,哈哈。

以前只听说过有分布式,集群这个东西,真到有机会碰到了真是一头雾水啊,最细小的地方都得想半天。上司忙,没时间管我的事儿,让我自己搭建环境,还要分布式、集群的架构,我也就刚工作两年,以前从未接触过这些,说实话,真的有点力不从心啊,不过不管怎样,对我都是一个大的考验和提升,继续查资料,继续工作。


5分
引用 3 楼 yonghudengluzhonging 的回复:
Quote: 引用 2 楼 ygycomon 的回复:

日志不需要同步,分布式节点自己写自己的日志。

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

多谢你的回答。
我们用的负载均衡器分发策略是使用cookie来保证一个用户自始至终访问同一台服务器的,因此我一开始有个想法是这样的,每台服务器自己记录自己的日志,每条日志都带着各个服务器的标识,在日志之前加上一个[服务器:ipxxxxx]之类的标识,并将这个错误提示展现到用户看到的错误界面上,如果用户在使用过程中报错了,只需把这个错误提示发给我,我就知道去哪个服务器上查看日志了。但是这样做的好处是我不用考虑日志同步的问题,但缺点就是,如果错误只出现了一次,而用户又没有截取到服务器的标识,那么我就得把每台服务器的日志挨个看一遍。不知道我的想法对不对,请指教啊,哈哈。

以前只听说过有分布式,集群这个东西,真到有机会碰到了真是一头雾水啊,最细小的地方都得想半天。上司忙,没时间管我的事儿,让我自己搭建环境,还要分布式、集群的架构,我也就刚工作两年,以前从未接触过这些,说实话,真的有点力不从心啊,不过不管怎样,对我都是一个大的考验和提升,继续查资料,继续工作。

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


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

15分
目前没有在项目中针对分布式系统的统一日志控制。
如果仅仅是错误日志的监控,可以在log4j中配置有error则发送邮件。
引用 6 楼 liangtu33 的回复:

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

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


5分
引用 7 楼 yonghudengluzhonging 的回复:
Quote: 引用 6 楼 liangtu33 的回复:

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

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

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


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明分布式系统中如何记录日志的?