首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

怎么收集多台机下的Log

2012-11-04 
如何收集多台机上的Log现在在做一个应用的监控,这个应用有许多的实例分布在不同的机子上,每台机子的可能有

如何收集多台机上的Log
现在在做一个应用的监控,这个应用有许多的实例分布在不同的机子上,每台机子的可能有多个或一个实例,我们现在想所有的Log都收集起来,进行对应用的分析预警。现在对这种方式应用如下几种做法,可是我觉得都不是很好,
    1.使用Log4j的配制,把log把写到一台机的数据库上,我们的日志都是一些交易的日志,而且越来越大,数据库实时的对写,这个对应用和数据库都是一个很大的负担,而且我们的日志都是同步的。
    2.使用jms向一台机上发日志。我们现在是这样做的,但是,现在使用的是点对点的方式,这种方式只能一个实例来处理日志,在做压力觉试时,发现有队列爆的情况。
    上面说的都是push,我现在主要想用get的型式,我想使用配置到日志目录下去取日志,这样也不需要和应用绑大一起,这种方式最大的问题就是怎么样用最少的资源去取各台服务器的日志,snmp,rmi,serlet都有自己一定的问题,大家有没有更好的方式。 1 楼 jncz 2009-12-21   我不知道你们的应用对交易记录的完整性和实时性要求有多高。我说一下我的意见:
1.依然通过对LOG4J的配置将日志发送到单独的一台服务器上,比如可以配置成UDP方式。这里可以配置LOG4J按照文件大小,或者日期等将文件分割。
2.在这台单独的日志服务器上,启动一个独立的监控线程,如果产生新的日志文件,那么就开始读,并保存入数据库。这里还可以再适当调整一下,可以在这个监控程序中,生成可以直接通过数据库导入功能导入的数据,在通过数据库的一些命令,脚本将数据大批量导入。


一点拙见。 2 楼 mwmw 2009-12-21   1. 先打印到文件里面,之后写个小程序把有用的数据导入到数据库里面。
2. 先打印到文件里面,之后写个程序去分析,上面配置几台server的地址,去每台server上面去拿。发挥空间也蛮大的。
3. 直接打印到数据库 (不推荐),数据库的性能是永远的话题。
4. 打印到其他的统一的地方(有很多NOSQL的解决方案),例如:MongoDB,之后写个client端去分析,也很简单。 3 楼 vvggsky 2009-12-21   还是jms吧

可以做成生产者 消费者的形式,找到瓶颈,然后多添加几个消费者,减轻队列等待时间

热点排行