程序设计基础课程设计题目要求
实现一个日志分析系统,有适当的提示信息、菜单和操作流程,符合使用习惯。各个功能要集成在一个系统中。用户可以根据需要选择各项操作。要用适当的模块划分,至少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] //客户端信息
文件下载(右键->链接另存为)
题目二 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 //日志内容
文件下载(右键->链接另存为)
题目三 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 //请求资源大小
}
文件下载(右键->链接另存为)
题目四 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*)从日志中还可以分析出什么信息,并实现功能。
文件下载(右键->链接另存为)
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 //响应时间