本发明涉及计算机技术领域,尤其涉及一种获取服务器日志的方法和系统。
背景技术:
服务器日志用于记录服务器接收到的处理请求以及运行错误等各种信息,是程序员日常排查服务器程序错误的主要依据。通过对服务器日志进行统计、分析和综合,还能够有效地掌握服务器的运行状况,了解客户访问分布,更好地加强系统的维护和管理。
现有技术中,当服务器程序出错时,运维人员登陆到对应的服务器上,配合程序员查看日志,进而排查错误原因。随着项目的扩张,项目中的服务器的数量越来越多,服务器程序的代码发布周期越来越频繁,导致运维人员需要频繁登陆多台服务器查看日志,占用了运维人员大量的日常工作时间,且工作效率较低。此外,当运维人员不在现场的时候,程序员无法使用服务器日志排查错误,导致排查错误的效率较为低下。
技术实现要素:
本发明的主要目的在于提出一种获取服务器日志的方法和系统,能够提高排查程序错误的效率。
为实现上述目的,本发明提出一种获取服务器日志的系统,所述系统包括至少一台日志服务器和多台工作服务器;
工作服务器,用于将自身生成的服务器日志发送给日志服务器;
日志服务器,用于接收来自工作服务器的服务器日志,将所述服务器日志保存到本地,并在接收到来自客户端的查询请求时,从本地获取对应的服务器日志,将获取到的服务器日志返回给所述客户端。
此外,为实现上述目的,本发明还提出一种获取服务器日志的方法,所述方法包括:
日志服务器通过消息队列接收来自工作服务器的服务器日志;
日志服务器从所述消息队列中获取所述服务器日志,对所述服务器日志进行存储到本地;
当日志服务器接收来自客户端的查询请求,从本地获取对应的服务器日志,并将获取到的服务器日志返回给所述客户端。
此外,为实现上述目的,本发明还提出一种获取服务器日志的方法,所述方法包括:
工作服务器收集自身生成的服务器日志;
工作服务器对所述服务器日志进行过滤,将过滤后的服务器日志发送给日志服务器。
本发明提出的获取服务器日志的方法和系统,通过对多台工作服务器上的服务器日志进行收集,将收集到的服务器日志集中存储到一台日志服务器上,并提供查询界面模块供用户自行查看服务器日志,从而实现了对查询服务器日志的流程的优化,提高了排查服务器程序错误的效率。另外,通过使用消息队列存储服务器日志,以异步的方式获取服务器日志,从而削平了高峰期的并发服务器日志,降低了对日志服务器的冲击,改善了日志服务器的性能。
附图说明
图1为实现本发明各个实施例的获取服务器日志的系统结构示意图;
图2为本发明第一实施例的工作服务器的结构示意图;
图3为本发明第二实施例的日志服务器的结构示意图;
图4为通过浏览器查看服务器日志的界面示意图;
图5为本发明第三实施例的获取服务器日志的方法流程图;
图6为本发明第四实施例的获取服务器日志的方法流程图;
图7为本发明第五实施例的获取服务器日志的方法流程图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现在将参考附图描述实现本发明各个实施例的获取服务器日志的系统,如图1所示,该系统包括至少一台日志服务器110和多台工作服务器120,其中,工作服务器110,用于将自身生成的服务器日志发送给日志服务器120。
本发明各个实施例中,服务器日志中包含日志类型信息,该日志类型信息与服务器日志所属项目相对应。
此外,工作服务器110,还用于对自身生成的服务器日志进行过滤,例如,例如,将自身生成的Nginx日志过滤成仅包含所需字段的日志文件。
日志服务器120,用于接收来自工作服务器110的服务器日志,将服务器日志保存到本地,并在接收到来自客户端的查询请求时,从本地获取对应的服务器日志,将获取到的服务器日志返回给客户端。
本发明各个实施例中,查询请求中包含服务器标识和时间段;相应地,日志服务器120在接收到来自客户端的查询请求时,根据查询请求中的服务器标识和时间段,从本地中获取与查询请求中的服务器标识对应的工作服务器在查询请求中的时间段内生成的服务器日志,并将获取到的服务器日志发送给客户端。
进一步地,为了提高安全性,实现本发明各个实施例的获取服务器日志的系统,还包括:
网页服务器,用于接收来自客户端的查询请求,对查询请求进行认证,并在认证通过后,将查询请求发送给查询模块114。
其中,网页服务器可以是Nginx服务器,也可以是apache服务器,其配置中包含HTTP基本认证。
在实现本发明各个实施例的获取服务器日志的系统中,通过对多台工作服务器上的服务器日志进行收集,将收集到的服务器日志集中存储到一台日志服务器上,并提供查询模块供用户自行查看服务器日志,从而实现了对查询服务器日志的流程的优化,提高了排查服务器程序错误的效率。另外,通过使用消息队列存储服务器日志,能够以异步的方式获取服务器日志,从而削平高峰期的并发服务器日志,降低对日志服务器的冲击,改善日志服务器的性能。
基于上述获取服务器日志的系统,提出本发明方法各个实施例。
如图2所示,本发明第一实施例提出一种工作服务器,包括:
日志收集模块121,用于收集所在工作服务器120生成的服务器日志,将服务器日志发送到日志服务器110。
具体地,日志收集模块121监控所在工作服务器120生成的服务器日志,对服务器日志进行过滤,并将过滤后的服务器日志发送到日志服务器110。例如,日志收集模块121收集工作服务器120生成的Nginx日志,将Nginx日志过滤成仅包含所需字段的日志文件,并将该日志文件发送到日志服务器110。本发明各个实施例中,发送到日志服务器110的服务器日志中包含日志类型信息,该日志类型信息与服务器日志所属项目相对应。
上述日志收集模块121可通过配置Logstash或rsyslog等平台实现,当通过配置Logstash平台实现时,需要在工作服务器120上安装Logstash平台,包括Logstash平台依赖的java环境,并对Logstash平台进行配置。例如,将Logstash平台配置为通过路径'/data/logs/system.log'收集类型为"pec"的服务器日志,使用正则格式[DEBUG\]、[ERROR\]和[EXCEPTION\]对服务器日志进行匹配,并将服务器日志中的"@version"字段和"message"字段过滤,将过滤后的服务器日志输出到Redis数据库中,该Redis数据库的地址为"10.47.49.134",端口号为6379,数据类型为"list",键值为"Logstash:nubia_pec"。其中,Logstash是一个开源的日志管理工具;rsyslog是一个用于快速处理日志的自由软件。
本发明第一实施例通过对多台工作服务器上的服务器日志进行收集和过滤,将过滤后的服务器日志集中存储到一台日志服务器上,实现了根据需求将收集到的服务器日志过滤成需要的日志格式,提高了服务器日志的格式灵活性,实现了后续对查询服务器日志的流程的优化,从而提高了排查服务器程序错误的效率。此外,过滤后的服务器日志中包含日志类型信息,便于对服务器日志进行分类。
如图3所示,本发明第二实施例提出一种日志服务器,包括:
消息处理模块111,用于以消息队列的方式缓存服务器日志。
日志转载模块112,用于从消息处理模块111中获取服务器日志,将服务器日志发送到存储模块113。
本发明各个实施例中,消息处理模块111和日志转载模块112可分别通过配置Redis数据库和Logstash平台实现,当通过配置Logstash平台实现日志转载模块112时,需要在日志服务器110上安装Logstash平台,包括Logstash平台依赖的java环境,并对Logstash平台进行配置。例如将Logstash平台配置为从Redis数据库获取服务器日志,将该服务器日志输出给elasticsearch搜索引擎。其中,Redis数据库的地址为"10.47.49.134",端口号为6379,数据类型为"list",键值为"Logstash:nubia_pec"。elasticsearch搜索引擎的协议为"http",地址为"127.0.0.1",端口号为"9200",索引为"nubia_pec-%{+YYYY.MM.dd}"。
存储模块113,用于存储服务器日志。
本发明各个实施例中,存储模块113可通过配置elasticsearch搜索引擎实现,即,在日志服务器110上安装elasticsearch搜索引擎以及其所依赖的java环境。例如,配置elasticsearch搜索引擎的集群名称为elasticsearch,设置默认索引分片个数为5片,设置默认索引副本个数为1个副本,设置配置文件的存储路径为根目录下的config文件夹,设置索引数据的存储路径为根目录下的data文件夹,设置临时文件的存储路径为根目录下的work文件夹,设置服务器日志的存储路径为根目录下的logs文件夹,设置插件的存放路径为根目录下的plugins文件夹。其中,elasticsearch搜索引擎是一个基于lucene构建的准实时的搜索引擎。
查询模块114,用于接收来自客户端的查询请求,从存储模块113中获取对应的服务器日志,并将获取到的服务器日志返回给客户端。
其中,查询请求中包含服务器标识和时间段;相应地,查询模块114,具体用于接收来自客户端的查询请求,根据查询请求中的服务器标识和时间段,从存储模块113中获取与该服务器标识对应的工作服务器在该时间段内生成的服务器日志,并将获取到的服务器日志发送给客户端。
本发明各个实施例中,查询模块114可通过配置kibana接口实现,即,在日志服务器110上安装好kibana接口,并将kibana接口配置为从elasticsearch搜索引擎中获取数据。用户通过浏览器等客户端访问kibana接口,查询服务器日志,如图4所示。其中,kibana接口是一个针对elasticsearch搜索引擎的开源分析及可视化平台。
本发明第二实施例通过将多台工作服务器上的服务器日志集中存储到一台日志服务器上,并提供查询界面供用户自行查看服务器日志,从而实现对查询服务器日志的流程的优化,提高了排查服务器程序错误的效率。另外,通过使用消息队列存储服务器日志,能够以异步的方式获取服务器日志,从而削平高峰期的并发服务器日志,降低对日志服务器的冲击,改善日志服务器的性能。
如图5所示,本发明第三实施例提出一种获取服务器日志的方法,该方法包括:
步骤301,日志服务器通过消息队列接收来自工作服务器的服务器日志。
其中,服务器日志中包含日志类型信息,该日志类型信息与服务器日志所属项目相对应。
步骤302,日志服务器从消息队列中获取服务器日志,将服务器日志存储到本地。
步骤303,日志服务器接收来自客户端的查询请求,从本地获取对应的服务器日志,并将获取到的服务器日志返回给客户端。
其中,查询请求中包含服务器标识和时间段,日志服务器根据查询请求中的服务器标识和时间段,获取与该服务器标识对应的工作服务器在该时间段内生成的服务器日志。
本发明第三实施例通过对多台工作服务器上的服务器日志进行收集,将收集到的服务器日志集中存储到一台日志服务器上,并提供查询界面供用户自行查看服务器日志,从而实现对查询服务器日志的流程的优化,提高了排查服务器程序错误的效率。另外,通过使用消息队列存储服务器日志,能够以异步的方式获取服务器日志,从而削平高峰期的并发服务器日志,降低对日志服务器的冲击,改善日志服务器的性能。
如图6所示,本发明第四实施例提出一种获取服务器日志的方法,该方法包括:
步骤401,日志服务器通过消息队列接收来自工作服务器的服务器日志。
其中,服务器日志中包含日志类型信息,该日志类型信息与服务器日志所属项目相对应。
步骤402,日志服务器从消息队列中获取服务器日志,将服务器日志存储到本地。
步骤403,当网页服务器对来自客户端的查询请求认证通过后,日志服务器接收网页服务器转发的查询请求。
步骤404,日志服务器从本地获取与查询请求对应的服务器日志,并将获取到的服务器日志返回给客户端。
其中,查询请求中包含服务器标识和时间段,日志服务器根据查询请求中的服务器标识和时间段,获取与该服务器标识对应的工作服务器在该时间段内生成的服务器日志。
本发明第四实施例通过对多台工作服务器上的服务器日志进行收集,将收集到的服务器日志集中存储到一台日志服务器上,并在网页服务器对来自客户端的查询请求认证通过后,提供查询界面供用户自行查看服务器日志,从而实现对查询服务器日志的流程的优化,提高了排查服务器程序错误的效率以及查询服务器日志的安全性。此外,服务器日志中包含日志类型信息,便于对服务器日志进行分类。通过使用消息队列存储服务器日志,能够以异步的方式获取服务器日志,从而削平高峰期的并发服务器日志,降低对日志服务器的冲击,改善日志服务器的性能。
如图7所示,本发明第五实施例提出一种获取服务器日志的方法,该方法包括:
步骤501,工作服务器收集自身生成的服务器日志,对该服务器日志进行过滤。
具体地,工作服务器中日志收集模块监控自身生成的服务器日志,并对服务器日志进行过滤,即,根据需求将服务器日志过滤成对应的日志格式。例如,日志收集模块工作服务器收集自身生成的Nginx日志,将Nginx日志过滤成仅包含所需字段的日志文件。
步骤502,工作服务器将过滤后的服务器日志发送到日志服务器。
其中,过滤后的服务器日志中包含日志类型信息,该日志类型信息与服务器日志所属项目相对应。
本发明第五实施例通过对多台工作服务器上的服务器日志进行收集和过滤,将过滤后的服务器日志集中存储到一台日志服务器上,实现了根据需求将收集到的服务器日志过滤成需要的日志格式,提高了服务器日志的格式灵活性,实现了后续对查询服务器日志的流程的优化,从而提高了排查服务器程序错误的效率。此外,过滤后的服务器日志中包含日志类型信息,便于对服务器日志进行分类。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。