程序设计基础课程设计题目要求

实现一个日志分析系统,有适当的提示信息、菜单和操作流程,符合使用习惯。各个功能要集成在一个系统中。用户可以根据需要选择各项操作。要用适当的模块划分,至少4个功能模块。要有适当的代码量(超过300行,按格式化的代码计算,不计算空行和注释)。要对异常和错误有适当的处理。使用结构体数组或链表等数据结构解决问题(不可仅用文件解决问题)。

题目一 Web服务器日志信息分析与统计

针对给定的一个Web服务器日志文件(access.log),日志文件具体记录信息及格式,结合所学知识对该日志文件信息进行分析与统计,要求实现以下功能:

(1)对日志文件进行列表读取和写入;

(2)计算日志文件中GET类型请求方式的占比;

(3)对访问状态码进行分析与统计,计算所有访问状态码的比率;

(4)分析访问最多的客户IP地址,并统计其访问次数;

(5)分析常用密码,并统计密码使用次数;

(6)用户输入时间段,查找该时间段内访问记录,并输出到文件中。

(7)将(2)~(6)结果保存到文件中,并可以在下次程序运行时读取并显示。

(8*)从日志中还可以分析出什么信息,并实现功能。 参数解析说明: (1)从文件中逐行读取字符串,在字符串中查找“|”字符,同时记录相应的位置,根据位置将相应参数信息读入变量。

(2)请求方式:HTTP(Hypertext Transfer Protocol, 超文本传输协议)中两种基本的请求方式:GET和POST。

(3)状态码:用以表示网页服务器超文本传输协议响应状态的3位数字代码。1消息、2成功、3重定向、4请求错误、5服务器错误、600(源站没有返回相应头部,只返回实体内容)。

(4)参数列表:用户名,密码,也可能为空。

[POST]|:请求类型

[45.79.64.98]|                                 //客户端IP地址

[HTTP/1.1]|                                       //HTTP协议版本

[2021-01-18 08:57:12]|                  //请求时间

[http://39.99.254.200:8810]|        //请求的IP地址和端口

[/error.jsp]|                                       //请求的资源

[]|                                                      //其他附加信息,如:密码等

[401]|                                                //响应码

[Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36]      //客户端信息![](assets/2.png)

文件下载(右键->链接另存为)

1access.log

题目二 Apache服务器错误日志信息分析与统计

Apache错误日志和访问日志一样也提供丰富的信息,管理员可以利用这些信息分析服务器的运行情况、哪里出现了问题。错误日志记录了服务器运行期间遇到的各种错误,以及一些普通的诊断信息,比如服务器何时启动、何时关闭等。可以设置日志文件记录信息级别的高低,控制日志文件记录信息的数量和类型。这是通过LogLevel指令设置的,该指令默认设置的级别是error,即记录称得上错误的事件。 针对给定的一个Apache服务器错误日志文件(Apache.log),日志文件具体记录信息及格式如图1所示,结合所学知识对该日志文件信息进行分析与统计,要求实现以下功能:

(1)对日志文件进行列表读取和写入;

(2)计算日志文件中error错误级别请求方式的占比;

(3)对notice级别错误进行分析与统计,找到所有notice频率最高的错误信息并计算最高频率值;

(4)分析导致错误最多的客户IP地址,并统计其访问次数;

(5)分析错误信息中包含File does not exist,并统计该错误信息出现的次数;

(6)用户输入时间段,查找该时间段内错误记录,并输出到文件中。

(7)将(2)~(6)结果保存到文件中,并可以在下次程序运行时读取并显示。

(8*)从日志中还可以分析出什么信息,并实现功能。

[Thu Jun 09 06:07:04 2005]            //生成时间
 [notice]                            //级别
 LDAP: Built with OpenLDAP LDAP SDK    //日志内容

文件下载(右键->链接另存为)

2apache500.log

题目三 ElasticSearch服务器日志信息分析与统计

Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。 Elasticsearch 在Apache Lucene 的基础上开发而成,由Elasticsearch N.V. (即现在的Elastic)于2010 年首次发布。 针对给定的一个ElasticSearch服务器日志文件(ElasticSearch.log),日志文件具体记录信息及格式如图1所示,结合所学知识对该日志文件信息进行分析与统计,要求实现以下功能:

(1)对日志文件进行列表读取和写入;

(2)计算日志文件中GET类型请求方式的占比;

(3)对状态域进行分析与统计,计算响应状态域所有状态的比率;

(4)分析客户端请求最多的客户IP地址,并统计其访问次数;

(5)分析日志中是否包含状态域值 属于400-499范围,若存在统计日志数目;

(6)用户输入时间段,查找该时间段内访问记录,并输出到文件中。

(7)将(2)~(6)结果保存到文件中,并可以在下次程序运行时读取并显示。

(8*)从日志中还可以分析出什么信息,并实现功能。

{
"@timestamp": 893964617,             //时间戳
 "clientip":"40.135.0.0",                //客户端IP
 "request": "GET /images/hm_bg.jpg HTTP/1.0",    //请求类型及资源
 "status": 200,                        //状态码
 "size": 24736                        //请求资源大小
}

文件下载(右键->链接另存为)

3elasticsearch500.log

题目四 OpenStack日志信息分析与统计

OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权的开源代码项目。OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。 针对给定的一个OpenStack日志信息(openstack.log),日志文件具体记录信息及格式如图1所示,结合所学知识对该日志文件信息进行分析与统计,要求实现以下功能:

(1)对日志文件进行列表读取和写入;

(2)计算日志文件中GET类型请求方式的占比;

(3)对访问状态码INFO进行分析与统计,计算INFO的比率;

(4)分析调用最多的component,并统计其调用次数;

(5)分析日志数据中每个Pid对应的日志记录数目;

(6)用户输入时间段,查找该时间段内访问记录,并输出到文件中。

(7)将(2)~(6)结果保存到文件中,并可以在下次程序运行时读取并显示。

(8*)从日志中还可以分析出什么信息,并实现功能。

文件下载(右键->链接另存为)

4openstack500.log

nova-api.log.1.2017-05-16_13:53:08    //本条日志名(日志名称+日期+时间)
 2017-05-16                        //日期
 00:00:00.008                        //从启动开始到目前的时间
 25746                            //端口号
 INFO                            //级别
 nova.osapi_compute.wsgi.server        //代码模块位置
 [req-38101a0b-2096-447d-96ea-a692162415ae 113d3a99c3da401fbd62cc2caa5b96d2 54fadb412c4e40cdbaed9335e4c35a9e - - -]    //请求号
 10.11.10.1                        //客户端IP
 "GET /v2/54fadb412c4e40cdbaed9335e4c35a9e/servers/detail HTTP/1.1"    //请求资源名称
 status: 200                        //响应码
 len: 1893                        //资源长度
 time: 0.2477829                    //响应时间

results matching ""

    No results matching ""