概述
分布式环境日志收集
林小应
1. 问题描述
现在应用程序的日志都是error级别,如果想收集某接口日志只能入库。
如果选择性的根据工号打开debug日志,也会散落在应用集群中的各台主机上。查看起来十分不方便。
2. 期望
可以选择性的将有用日志,通过tcp的方式送到日志处理主机。集中处理,处理方式由客户端定义。不能因为发送日志而影响应用程序的性能。
3. 设计原理
思路:采用异步的nio的方式将日志送出,集中处理。满足网络震荡重连(无条件重连、触发式重连)。
方案:采用异步缓冲区+Netty来完成日志推送。
4. 用法示例
//建立连接(只需要一个连接):
NettyLogClient client = new NettyLogClient("132.228.103.3", 9999);
//推送日志:
NettyLogUtil.sendMsg(msg);
//这样日志就送到了132.228.103.3主机,处理方式由对端决定。传送速度非常快,理论上只需要一个tcp连接。
日志主机上的日志:
如:业务规则执行时各模块花费时间的日志
/132.228.138.123:47182 Begin
DealLogInfo [
olId:100008211189
totalTime:1312ms,
soMsg:SoDataDealSMOImpl-139次——440.642ms,
specMsg:SpecDataDealSMOImpl-577次——37.992ms,
instMsg:InstDataDealSMOImpl-72次——176.104ms,
instDBMsg:INST_DB-26次——101.709ms,
soGenSeqMsg(T):GEN_SEQ-136次——3.348ms,
soGenSeqDBMsg(S):no result
soCacheMsg:SO_CACHE-130次——404.198ms,
instCacheMsg:INST_CACHE-25次——14.097ms,
specCacheMsg:no result
inst2byteMsg:INST_2_BYTE-2次——0.658ms,
byte2instMsg:BYTE_2_INST-5次——3.283ms,
nettyLogMsg:no result
]
/132.228.138.123:47182 End!
这是从132.228.138.123主机47182端口发送过来的。可以清晰的看到各模块所耗费的时间。
qq:346420558
最后
以上就是背后钢笔为你收集整理的分布式环境日志收集分布式环境日志收集的全部内容,希望文章能够帮你解决分布式环境日志收集分布式环境日志收集所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复