日志管理平台的开发

前面的博客中对日志收集系统已做了描述,这篇博客主要是日志收集系统代码层面的实现:

首先来回顾分析我们的日志收集系统:

一、项目需求

1. 收集配置文件中指定的日志文件内容,同时可以实时查看分析日志内容?

2. 可以动态修改要收集的日志文件?

3. 可以随时启停正在收集的日志文件?

二、项目分析

整体的系统架构图如下:

将整个的架构分为四层:LogAgent层, Transfer层,Web层, 大数据分析层。

1. LogAgent层

    这一层主要的实现目标是将服务器上要收集的日志按照topic(一个日志文件对应一个topic,这样为了易于管理,比如随时删除或者启停该日志的收集而不影响其他路径的日志收集)发送到kafka中,同时需要监控并处理来自Web层日志路径的变化,实时更新要收集的日志文件。

    要收集的日志路径有两个来源:

    (1)在项目启动时,配置文件中配置需要收集的日志;

    (2)Web层动态的的修改要收集的日志文件。

     Web层与LogAgent层的交互是通过etcd,为了区分多台服务器上的日志收集,使用每台机器上的IP并拼接特定的前缀作为唯一的etcd ke,key中的value就是要收集的日志(是一个结构体数组),可以一台机器上的多个路径下的日志文件。下面例子为保存在etcd中的内容:

key: /logAgen/192.168.0.1 
value:[{"path":"D:/project/nginx/logs/access2.log","topic":"nginx_log"},{"path":"D:/project/nginx/logs/error2.log","topic":"nginx_log_err"}]

2. Transfer层

    该层是将来kafka中的数据按照topic取出发送到es中,通过kibana来实现日志数据的保存及可视化分析,该层的数据两个来源:

    (1)通过读取配置文件,按照topic消费来自kafka的日志信息;

    (2)Web层更改日志收集的文件,要随时添加到要收集的队列中。

3. Web层

    通过该层可以动态的修改日志收集文件及展示收集的日志文件信息。

4. 大数据分析层

    该层暂未实现,后面有时间会做相关的学习研究。

三、代码实现

    见github:https://github.com/XJL635438451/logCollectProject

代码存在bug:

没有实现项目需求中的3,同时代码存在耦合,重复代码较多,后面会进行重构。

猜你喜欢

转载自www.cnblogs.com/xuejiale/p/10702312.html
今日推荐