本发明涉及日志文件,尤其涉及一种监听日志文件的方法及系统。
背景技术:
1、在生成环境中,日志扮演着很重要的角色,排查异常需要日志,性能优化需要日志,业务排查也需要日志。日志是记录系统运行过程中各种重要信息的文件,在系统运行过程中由各进程创建并记录,日志的作用是记录系统的运行过程及异常信息,为快速定位系统运行中出现的问题及开发过程中的程序调试问题提供详细信息。
2、有的生成环境中运行的服务有几千个,一般每个服务都只是简单的把日志本地化存储,当需要日志协助排查问题时,很难找到日志所在的节点,也很难挖掘业务日志的数据价值,将日志统一输出到日志平台集中管理,然后把处理后的结果输出成运维、研发可用的数据是解决日志管理、协助运维的可行方案。
3、但是,目前一些日志采集器是通过操作系统的inotify实现,inotify是一种文件变化通知机制,它可以高效地实时跟踪文件系统的变化。但是inotify只能监听单层目录变化,不能监听子目录变化。如果是嵌套目录,则需要递归监听子目录,成本比较高。另外如果目录被删除,监听也会失败,漏掉文件。
技术实现思路
1、鉴于目前存在的日志采集器使用的系统及监听方法容易漏掉文件造成监听失败,本发明提供一种监听日志文件的方法及系统,通过轮询日志目录的方式发现文件、跟踪文件变化,持续读取日志文件,最终发送日志平台,牺牲少量性能和实时性,以保证不漏掉文件,更适合日志文件采集的场景。
2、为达到上述目的,本发明的实施例采用如下技术方案:
3、一种监听日志文件的方法,包括以下步骤:
4、轮询日志目录,匹配日志文件;
5、过滤匹配的日志文件得到目标文件;
6、使用索引节点对目标文件进行去重;
7、启动目标文件的协程,持续读取目标文件的日志;
8、读取到结束函数时,关闭目标文件的协程。
9、依照本发明的一个方面,还包括:监听指定的日志文件,将指定的日志文件作为目标文件。
10、依照本发明的一个方面,所述轮询日志目录包括:跟踪日志目录中日志文件的变化,所述日志文件的变化包括目录中新增日志文件、目录中已有日志文件发生变化。
11、依照本发明的一个方面,所述匹配日志文件的方法包括:使用glob匹配规则进行日志文件匹配,匹配时通过glob匹配规则匹配日志文件的路径与文件名。
12、依照本发明的一个方面,所述使用索引节点对目标文件进行去重包括:
13、判断当前目标文件是否为日志目录中首个日志文件;
14、若非首个日志文件,获取当前目标文件的索引节点编号;
15、判断该索引节点编号是否与已获取的索引节点编号一致;
16、若索引节点编号一致,跳过当前目标文件;
17、若索引节点编号不一致,启动当前目标文件的协程。
18、依照本发明的一个方面,所述持续读取目标文件的日志包括:预置缓存队列,通过协程获取目标文件的日志,将日志发送至缓存队列以供读取。
19、依照本发明的一个方面,还包括:设定过期条件,在目标文件满足过期条件时关闭协程,在所述协程关闭后,停止读取该目标文件的日志,并关闭该目标文件的句柄。
20、一种监听日志文件的系统,包括:
21、日志平台,用于监听日志文件、读取日志文件,处理日志文件、发送日志文件;
22、日志采集器,用于持续获取目标文件的日志,并将日志发送至日志平台;
23、es集群,用于存储日志。
24、依照本发明的一个方面,所述日志采集器包括:
25、轮询模块,用于轮询日志目录;
26、匹配模块,用于匹配日志文件;
27、过滤模块,用于过滤日志文件,得到目标文件,并对目标文件进行去重;
28、启动模块,用于启动目标文件的协程,获取目标文件的日志;
29、传输模块,用于将携程获取的目标文件日志发送至日志平台。
30、本发明实施的优点:本发明所述的一种监听日志文件的方法,包括以下步骤:轮询日志目录,匹配日志文件;过滤匹配的日志文件得到目标文件;使用索引节点对目标文件进行去重;启动目标文件的协程,持续读取目标文件的日志;读取到结束函数时,关闭目标文件的协程。通过轮询日志目录的方式发现文件、跟踪文件变化,持续读取日志文件,最终发送日志平台,牺牲少量性能和实时性,以保证不漏掉文件,更适合日志文件采集的场景。
1.一种监听日志文件的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的监听日志文件的方法,其特征在于,还包括:监听指定的日志文件,将指定的日志文件作为目标文件。
3.根据权利要求2所述的监听日志文件的方法,其特征在于,所述轮询日志目录包括:跟踪日志目录中日志文件的变化,所述日志文件的变化包括目录中新增日志文件、目录中已有日志文件发生变化。
4.根据权利要求2所述的监听日志文件的方法,其特征在于,所述匹配日志文件的方法包括:使用glob匹配规则进行日志文件匹配,匹配时通过glob匹配规则匹配日志文件的路径与文件名。
5.根据权利要求2所述的监听日志文件的方法,其特征在于,所述使用索引节点对目标文件进行去重包括:
6.根据权利要求5所述的监听日志文件的方法,其特征在于,所述持续读取目标文件的日志包括:预置缓存队列,通过协程获取目标文件的日志,将日志发送至缓存队列以供读取。
7.根据权利要求6所述的监听日志文件的方法,其特征在于,还包括:设定过期条件,在目标文件满足过期条件时关闭协程,在所述协程关闭后,停止读取该目标文件的日志,并关闭该目标文件的句柄。
8.一种监听日志文件的系统,其特征在于,包括:
9.根据权利要求8所述的监听日志文件的系统,其特征在于,所述日志采集器包括:
10.根据权利要求8所述的监听日志文件的系统,其特征在于,所述日志平台还包括缓存队列,所述缓存队列用于缓存获取的目标文件日志,以供日志平台进行日志读取。