监控服务端设计-SSH-日志抓取写入部分
在上一篇中,客户端会负责将日志记录到本地log日志文件中。格式类似与
?
?
2011-01-14 14:21:55 lu f=548|g=574|
?
?包括三部分:
1.2011-01-14 14:21:55 记录时间
2.lu 记录的类型 (这里lu是level usage的意思 呵呵)
3.f=548|g=574| 记录的主体部分
?
===========================================================================
在服务端,需要有两个部分负责工作
1.使用SSH负责抓取客户端数据的线程
2.负责将抓取到的数据存储到数据库中
?
大致是这样的:
?
=================
ReadAgent(put,start,stop)
=================
|ssh reader thread 1 grab the log?
|.... ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
|ssh reader thread n grab the log ??
=================
ConcurrentLinkedQueue
=================
|db writer thread 1?
|....
|db writer thread n
?
=========================================================================
为了方便分表,对于每个客户端建立一张表
?
在内部有几个bean用于记录信息,需要说明一下
?
1.HostInfo
用于映射客户端主机的实体。主要提供连接主机及抓取日志的信息,包括id,主机ip,用户名,密码,日志路径,记录行数...
2.WriteBean
用于构造需要写入数据的实体。日志的格式如上述,除此之外还有很重要的便是需要将主机的id传入到writeBean中。因为dbWriter中需要使用记录的类型和主机id动态构造写入数据的表名。
?