目录
学习前言
在说监控之前,需要回顾一下软件业的发展史。最早的软件完成一些非常简单的功能,代码不多,错误也少。
随着软件功能的逐步完善,软件的功能变得越来越复杂,功能不能得到有效的保障,
这个阶段出现了针对软件功能的检测,也就是软件测试。
伴随着计算机操作系统的逐步升级,软件的运行状态也变得开始让人捉摸不透,出现了不稳定的状况。
伴随着计算机网络的发展,程序也从单机状态切换成基于计算机网络的程序,应用于网络的程序开始出现,
由于网络的不稳定性,程序的运行状态让使用者更加堪忧。
互联网的出现彻底打破了软件的思维模式,随之而来的互联网软件就更加凸显出应对各种各样复杂的网络情况之
下的弱小。
计算机软件的运行状况已经成为了软件运行的一个大话题,
针对软件的运行状况就出现了全新的思维,建立起了初代的软件运行状态监控。
一、什么是监控?
就是通过软件的方式展示另一个软件的运行情况,运行的情况则通过各种各样的指标数据反馈给监控人员。
例如网络是否顺畅、服务器是否在运行、程序的功能是否能够整百分百运行成功,内存是否够用,等等等等。
本章要讲解的监控就是对软件的运行情况进行监督,但是springboot程序与非springboot程序的差异还是很大
的,为了方便监控软件的开发,springboot提供了一套功能接口,为开发者加速开发过程。
二、监控的意义
1. 简介
对于现代的互联网程序来说,规模越来越大,功能越来越复杂,还要追求更好的客户体验,因此要监控的信息量
也就比较大了。
由于现在的互联网程序大部分都是基于微服务的程序,一个程序的运行需要若干个服务来保障,
因此第一个要监控的指标就是服务是否正常运行,也就是监控服务状态是否处理宕机状态。
一旦发现某个服务宕机了,必须马上给出对应的解决方案,避免整体应用功能受影响。
其次,由于互联网程序服务的客户量是巨大的,当客户的请求在短时间内集中达到服务器后,就会出现各种程序
运行指标的波动。
比如内存占用严重,请求无法及时响应处理等,这就是第二个要监控的重要指标,监控服务运行指标。
虽然软件是对外提供用户的访问需求,完成对应功能的,但是后台的运行是否平稳,是否出现了不影响客户使用
的功能隐患,这些也是要密切监控的,此时就需要在不停机的情况下,监控系统运行情况,日志是一个不错的手
段。
如果在众多日志中找到开发者或运维人员所关注的日志信息,简单快速有效的过滤出要看的日志也是监控系统需
要考虑的问题,这就是第三个要监控的指标,监控程序运行日志。
虽然我们期望程序一直平稳运行,但是由于突发情况的出现,例如服务器被攻击、服务器内存溢出等情况造成了
服务器宕机,此时当前服务不能满足使用需要,就要将其重启甚至关闭,如果快速控制服务器的启停也是程序运
行过程中不可回避的问题,这就是第四个监控项,管理服务状态。
以上这些仅仅是从大的方面来思考监控这个问题,还有很多的细节点,
例如上线了一个新功能,定时提醒用户续费,这种功能不是上线后马上就运行的,
但是当前功能是否真的启动,如果快速的查询到这个功能已经开启,这也是监控中要解决的问题,等等。
看来监控真的是一项非常重要的工作。
通过上述描述,可以看出监控很重要。那具体的监控要如何开展呢?
还要从实际的程序运行角度出发。
比如现在有3个服务支撑着一个程序的运行,每个服务都有自己的运行状态。
此时被监控的信息就要在三个不同的程序中去查询并展示,但是三个服务是服务于一个程序的运行的,如果不能
合并到一个平台上展示,监控工作量巨大,而且信息对称性差,要不停的在三个监控端查看数据。
如果将业务放大成30个,300个,3000个呢?
看来必须有一个单独的平台,将多个被监控的服务对应的监控指标信息汇总在一起,这样更利于监控工作的开
展。
新的程序专门用来监控,新的问题就出现了,是被监控程序主动上报信息还是监控程序主动获取信息?
如果监控程序不能主动获取信息,这就意味着监控程序有可能看到的是很久之前被监控程序上报的信息,万一被监控程序宕机了,监控程序就无法区分究竟是好久没法信息了,还是已经下线了。
所以监控程序必须具有主动发起请求获取被监控服务信息的能力。
如果监控程序要监控服务时,主动获取对方的信息。那监控程序如何知道哪些程序被自己监控呢?
不可能在监控程序中设置我监控谁,这样互联网上的所有程序岂不是都可以被监控到,这样的话信息安全将无法
得到保障。
合理的做法只能是在被监控程序启动时上报监控程序,告诉监控程序你可以监控我了。
看来需要在被监控程序端做主动上报的操作,这就要求被监控程序中配置对应的监控程序是谁。
被监控程序可以提供各种各样的指标数据给监控程序看,但是每一个指标都代表着公司的机密信息,
并不是所有的指标都可以给任何人看的,乃至运维人员,所以对被监控指标的是否开放出来给监控系统看,也需
要做详细的设定。
上描述的整个过程就是一个监控系统的基本流程。
2. 总结
- 监控是一个非常重要的工作,是保障程序正常运行的基础手段
- 监控的过程通过一个监控程序进行,它汇总所有被监控的程序的信息集中统一展示
- 被监控程序需要主动上报自己被监控,同时要设置哪些指标被监控
3. 思考
下面就要开始做监控了,新的问题就来了,监控程序怎么做呢?难道要自己写吗?
肯定是不现实的,如何进行监控,咱们下节再讲。
三、可视化监控平台
1. 简介
springboot抽取了大部分监控系统的常用指标,提出了监控的总思想。
然后就有好心的同志根据监控的总思想,制作了一个通用性很强的监控系统,因为是基于springboot监控的核心
思想制作的,所以这个程序被命名为Spring Boot Admin。
Spring Boot Admin,这是一个开源社区项目,用于管理和监控SpringBoot应用程序。
这个项目中包含有客户端和服务端两部分,而监控平台指的就是服务端。
我们做的程序如果需要被监控,将我们做的程序制作成客户端,然后配置服务端地址后,服务端就可以通过HTTP