### 前言
《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》,这是我在本科阶段的毕业设计,通过引入 Prometheus 和 ELK 架构实现企业对指标与日志的全方位监控。并且基于云原生,使用容器化持续集成部署的开发方式,通过 SpringBoot 和 Vue 的前后端分离技术,开发出基础平台监管系统,实现对所有基础平台的全面监控与可视化管理,让每一个监控项精确跟踪,每一个流程责任到人,每一个问题闭环处理。
首先我先整体概述一下我的业务,简单来讲就是,利用 Prometheus 实现对组件的指标监控(比如对服务器的使用率监控,超过了一个值就报警),利用 ELK 实现对日志的监控(比如监控 Java 的一个项目,监控到一个日志出现 ERROR 标签,就报警),报警会通知到对应的负责人,平台也会跟踪处理情况,以及其他一些辅助功能。
为什么选择这样一个题目?其实也是一个巧合,当时我也不知道做什么,老师直接给了我们组很多题目,让我们自己选,我选择了其中一个,题目是什么什么基础平台监控系统。当时由于我的知识匮乏,我认为这个监控是指对公司业务的监控,也就是类似于一个 OA 系统。但其实老师指的是对支撑公司的网络平台的各个组件的监控,监控他们的各项指标,像是 CPU 占用率这种,下图就是老师想让我完成的一个大概内容。我对这个内容是完全没有涉及,只能从零开始学。
<br>
<img width="532" alt="image" src="https://github.com/MatoYing/GraduationProject/assets/57103853/ff73b0ee-c6f5-4822-b2b5-ddfc0a75483b">
毕业论文必须要有创新点,我的创新点就是不仅在平台中实现了指标监控,还加入了日志监控。市面上有很多做这种现成指标监控的平台,做日志监控平台的几乎没有,可能都是自己搭,具体我也不清楚为什么,可能指标更为关键,更直接可以看到问题所在,而日志,可能更多的作用是在报警之后,来 debug 的。当然我这个只是毕业设计,其实主要就是实现一个业务,体现工作量,并不具备什么实用价值。
这篇论文包括毕业设计,我在当时是拿了优秀毕业设计,当然我知道我的本科并不好,和其他好学校的人差距还是很大,但这个毕设我觉得还是有一点意义吧。这个意义不是说能解决业界的某些问题,我完全没有这个能力。而是说,我觉得下面 Web 架构、指标监控架构、日志监控架构我觉得可能能对一些初学这提供一些帮助。因为这些内容网络上并没有直接现成的东西,都是通过我自己的知识储备、自己的试错、网络上各种文章,最后做出来的一套东西。我希望这会对大家有些帮助。如果对大家有帮助,可以帮我点个 star 支持一下我。
### 需求概述
需求可以分为以下几点:
1. 信息采集:需要满足对支撑平台的指标、日志的采集,包括应用程序、数据库、中间件、主机等。并且要满足可以持续、实时的采集各类信息,以及对信息进行适当的清洗,提高其质量与准确性。
2. 监控报警:可以根据监控需求自定义监控规则,以及告警的方式,包括第三方、邮件、短信等。并且需要实时的监控,及时掌握系统的运行状态、性能情况等。以及事后的信息查阅,便于之后的分析。
3. 日常管理:包括对数据源的添加、报警规则的添加、报警后处理的跟踪等,一切都责任到人,进行全方位管理。以及对人员权限、任务分配、知识库等内容的实现。
4. 综合分析:通过图表、报表的形式,将数据转化为可视化的形式,定期推送给运维人员,便于之后更加全面、准确的分析系统运行情况。
### 系统架构
#### Web架构设计
<img width="518" alt="image" src="https://github.com/MatoYing/GraduationProject/assets/57103853/8ce8e36f-ccea-46e1-a3c4-7514a4cc3d8d">
在Web方面,使用前后端分离的方式。在前端方面使用了Vue进行交互的实现,利用其可以与HTML中字段进行双向绑定的特性,可以快速完成数据渲染的工作。并且利用它组件化的思想,可以减轻许多重复HTML的编写,提升代码的复用性,以及可读性。
在前端UI上使用了Metronic,它是基于Bootstrap的网页界面框架,也在其基础上提供了一些扩展和增强功能,如布局管理、用户界面元素、图表、表格、表单和自定义样式等等。使用Metronic可以更快地创建现代化、美观的Web页面,并提供了丰富的工具和插件进行定制,减少了开发人员的工作量,增加了项目的可维护性。并且依然保留了Bootstrap的特性,做到了响应式开发的效果。
使用Nginx作为前端服务器,一方面可以更符合前后端分离的思想,另一方面Nginx底层利用I/O多路复用和多进程的方式,可以接受高并发的请求,速度也更快。而且配置简单,本身就是由很多模块组成的,扩展性强。比起Tomcat,Nginx是HTTP Server,而Tomcat是Application Server。HTTP Server关心的是HTTP协议层面的传输和访问控制,客户端通过HTTP Server访问服务器上存储的资源。Application Server是一个应用服务器,它首先需要支持开发语言的运行环境,以及需要支持一些其它的规范,例如类库、安全方面的特性,所以会更加笨重,从而使用Nginx,进行一定的解耦,在性能上进一步的提升。
在后端使用了传统的SpringBoot技术,数据库则使用了MySQL,来进行关系性数据的存储。使用了MinIO来实现对象存储。以及使用了Redis,主要用来存储JSessionID,利用Redis内存存储的特性,可以进行高速读写。对于传统的方式,如果需要不同服务器上Session数据共享,需要互相进行复制。而Redis这种方式可以让Session集中存储。需要说明的是这里Redis不仅仅存的是JSessionID,还有JSessionID对应的Session中的数据。这样当客户端请求服务器,产生Session以及SeesionID,就会把它存到Redis中,下次直接从Redis中取就行。对于该SpringBoot项目,利用了SpringSession来简化操作,它非常好的与Redis进行了集成。这样做不仅解耦了Session系统,便于未来系统或者微服务的扩展,而且利用Redis可以方便设置Session过期时间的特性,可以实现用户的持久化登录。
最后利用Github,Jenkins,Docker的方式,实现了自动化部署。每次当完成后端代码,将源码托管于Github上,使用Git进行版本控制和合并代码。在Jenkins中创建一个Pipeline项目,并配置与Github的Webhook集成,当代码仓库发生变化时触发Jenkins Pipeline任务。而在Pipeline任务中,会使用Docker构建一个Docker镜像,并发布到Linux服务器中进行部署。如图4-2展示了Jenkins上部署的情况。
该项目利用以上技术实现前后端分离的部署,并且利用Github、Jenkins、Docker这三者实现了CI/CD(Continuous Integration/Continuous Deployment)的流程,持续集成与持续部署。这种技术方案在提高开发效率和资源利用率方面具有明显优势。
#### 指标监控架构设计
<img width="510" alt="image" src="https://github.com/MatoYing/GraduationProject/assets/57103853/d7826a6f-5810-4c42-ac73-bb18c6ebc9b2">
对于指标监控,首先需要进行对数据的采集,需要从不同来源收集数据,例如服务器、容器、网络设备等。这里我采用了Prometheus来完成这项工作,它最大的优势在于采用了Pull模式,比起传统的Push模式,它更加具有可控性,请求将由Prometheus发起,可以控制采集的频率和数据,避免�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
需求可以分为以下几点: 信息采集:需要满足对支撑平台的指标、日志的采集,包括应用程序、数据库、中间件、主机等。并且要满足可以持续、实时的采集各类信息,以及对信息进行适当的清洗,提高其质量与准确性。 监控报警:可以根据监控需求自定义监控规则,以及告警的方式,包括第三方、邮件、短信等。并且需要实时的监控,及时掌握系统的运行状态、性能情况等。以及事后的信息查阅,便于之后的分析。 日常管理:包括对数据源的添加、报警规则的添加、报警后处理的跟踪等,一切都责任到人,进行全方位管理。以及对人员权限、任务分配、知识库等内容的实现。 综合分析:通过图表、报表的形式,将数据转化为可视化的形式,定期推送给运维人员,便于之后更加全面、准确的分析系统运行情况。 系统架构 Web架构设计 image 在Web方面,使用前后端分离的方式。在前端方面使用了Vue进行交互的实现,利用其可以与HTML中字段进行双向绑定的特性,可以快速完成数据渲染的工作。并且利用它组件化的思想,可以减轻许多重复HTML的编写,提升代码的复用性,以及可读性。 在前端UI上使用了Metronic,它是基于Bootstrap的网页界面框架,
资源推荐
资源详情
资源评论
收起资源包目录
基于 Prometheus 和 ELK 的基础平台监控系统设计与实现 (357个子文件)
style.bundle.css 1.27MB
plugins.bundle.css 499KB
icon.css 70KB
skin.css 60KB
skin.min.css 60KB
skin.css 60KB
skin.min.css 60KB
datatables.bundle.css 33KB
jstree.bundle.css 27KB
fullcalendar.bundle.css 25KB
content.css 21KB
content.min.css 21KB
content.inline.min.css 21KB
content.inline.css 21KB
content.inline.css 21KB
content.inline.min.css 21KB
content.css 21KB
content.min.css 21KB
skin.mobile.css 20KB
skin.mobile.css 20KB
skin.mobile.min.css 20KB
skin.mobile.min.css 20KB
vis-timeline.bundle.css 19KB
public.css 18KB
leaflet.bundle.css 14KB
cookiealert.bundle.css 12KB
index.css 10KB
fonticon.css 5KB
cropper.bundle.css 4KB
prismjs.bundle.css 3KB
jkanban.bundle.css 2KB
content.css 1KB
content.min.css 1KB
content.css 1KB
content.min.css 1KB
content.css 1KB
content.min.css 1KB
content.css 1KB
content.min.css 1KB
skin.shadowdom.min.css 532B
skin.shadowdom.css 532B
skin.shadowdom.min.css 532B
skin.shadowdom.css 532B
content.mobile.css 293B
content.mobile.min.css 293B
content.mobile.css 293B
content.mobile.min.css 293B
安装使用说明.docx 205KB
2023-05-12.docx 37KB
生成文件.docx 33KB
2023-05-19.docx 22KB
demo1.docx 15KB
la-solid-900.eot 221KB
la-brands-400.eot 153KB
la-regular-400.eot 33KB
fonticon.eot 29KB
throbber.gif 1KB
.gitignore 176B
metric_alert.html 46KB
log_alert.html 44KB
metric_monitor.html 30KB
person.html 29KB
log_monitor.html 29KB
index.html 27KB
task.html 21KB
index.html 20KB
setting.html 19KB
people.html 18KB
file_monitor.html 17KB
knowledge.html 16KB
calendar.html 15KB
account.html 15KB
help.html 13KB
server.html 12KB
sign-up.html 10KB
new-password.html 10KB
topology.html 9KB
report.html 9KB
log_graph.html 8KB
sign-in.html 8KB
metric_graph.html 6KB
index.html 3KB
favicon.ico 4KB
LoginController.java 14KB
ThirdPartyServiceImpl.java 11KB
YscApplicationTests.java 7KB
MonitorController.java 7KB
CommonDao.java 6KB
PrometheusController.java 4KB
ShiroConfig.java 4KB
SwaggerConfig.java 4KB
ReportController.java 4KB
MonitorDao.java 4KB
CommonController.java 4KB
AlertController.java 3KB
SnowflakeUtil.java 3KB
JfreeUtil.java 3KB
AlertDao.java 3KB
UserDao.java 3KB
PersonController.java 3KB
共 357 条
- 1
- 2
- 3
- 4
资源评论
hakesashou
- 粉丝: 4442
- 资源: 1235
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功